一份文档怎么变成会问答的知识库MaxKB 的 RAG 智能问答平台架构完整指南【免费下载链接】MaxKB MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。项目地址: https://gitcode.com/GitHub_Trending/ma/MaxKBMaxKB 是一个开源的企业级智能体平台核心玩法就一件事把一堆文档喂给它得到一个能问答的知识库。文档解析、切分、向量化、混合检索、大模型生成这条 RAG 链路全部开源还能自己画多节点工作流。下面按代码骨架带你走一遍它的技术构成。一分钟认识项目它适合谁维度内容解决什么问题企业文档散落各处、检索费劲想直接问文档并拿到带出处的答案典型场景内部 FAQ、产品手册问答、客服知识库、通过数据库工具查数上手门槛Docker 一键部署登录后即可建知识库改源码则是 Python Vue 主流栈技术栈一句话前端 Vue 3 TypeScript后端 Django 5 DRFAI 层 LangChain / LangGraph存储 PostgreSQL pgvector仓库布局ui/ 前端、apps/ 后端每个业务一个 Django app、installer/ 部署脚本这套技术选型为什么这样搭先看总览再逐个说清选它的真实原因组件承担职责关键版本Django DRFRESTful API、权限、数据模型django 5.2 / djangorestframework 3.17PostgreSQL pgvector业务数据 向量 全文检索一库搞定psycopg 3.2Redis Celery文档异步处理、定时任务celery 5.5 / django-celery-beatLangChain / LangGraph多模型统一调用、工作流编排langchain 1.3 / langgraph 1.2Vue 3 Vite Element Plus管理台与对话页vue 3.5 / vite 6Django DRF承担 API 骨架与权限校验。不选更轻的 Flask是因为 MaxKB 有大量 CRUD知识库、文档、段落、模型、用户、权限Django 的 ORM 和迁移体系白送八成工作量DRF 再补上序列化与校验。副产品是 apps/ 目录天然按业务切分——application、knowledge、models_provider、tools 各成一个 Django app模块边界清晰。️PostgreSQL pgvector这是整个项目最值得称道的一手。向量存储、全文检索、业务数据共用同一个库不用额外维护 Milvus 或 Elasticsearch事务一致性免费获得。embedding_search.sql 直接用 pgvector 的余弦距离算子算分段落表和文档表也在同一库里答案溯源一条 JOIN 搞定。⚙️LangChain LangGraph前者管接模型统一封装 25 厂商后者管编排流程前端拖出来的工作流节点在后端跑。不直接手写 HTTP 调各家的原因很实际流式输出、工具调用、提示词模板都有现成实现不必为每个厂商的 API 差异重复造轮子。Vue 3 TypeScript Vite前端有两个入口admin.html管理台和 chat.html对话页。工作流画布用 LogicFlow 绘制ECharts 出统计图表。这部分是业界常规配置不展开。Celery Redis文档解析、切分、向量化都慢全部异步化Web 知识库的定时同步、过期数据清理交给 django-celery-beat。用户看到文档状态从解析中变成就绪而不是转圈的页面。一次提问的完整旅程从输入框到答案走一次最普通的请求你在对话页输入问题答案逐字流回来。关键在后端没有把检索再生成写死而是流水线组装每个步骤是独立类问题改写、search_dataset 检索、chat 生成PipelineManage 按序执行并共享上下文。这也解释了为什么普通知识问答切到工作流应用时同一套数据流可以换引擎跑——数据格式没变只是步骤定义不同。上图是工作流知识库编辑器数据来源、切分、大模型节点可以拖拽成流程右侧调试面板能单独试跑某个节点对应后端 apps/application/flow/ 目录。三个值得细看的实现混合检索是怎么落库的遇到的问题纯向量检索对专有名词、型号编码不敏感MaxKB-2.0很难匹配到版本 2.0纯全文检索又搞不定同义改写。单用哪路都会漏。它的解法三种检索模式embedding / keywords / blend共用一套骨架SQL 放在 sql/ 目录。以向量模式为例核心查询长这样SELECT paragraph_id, (embedding::vector(%s) %s::vector) AS distance FROM embedding ORDER BY (embedding::vector(%s) %s::vector) LIMIT LEAST(%s * 10, 500);三个小细节① 先取 10 倍候选再按段落去重打分避免一个段落霸榜②是 pgvector 的余弦距离算子1 - 距离即相似度③ 写入时同步生成search_vector全文索引jieba 分词 术语表keywords 与 blend 模式即插即用。还有个隐藏点多知识库查询时不用IN一把梭而是逐个库查询——这样每个查询才能命中该库的局部 HNSW 索引。实际收益一张表承载三种检索模式多库并发检索也不丢索引加速。25 多家模型厂商是怎么接进来的遇到的问题每家 API 都不一样——base URL、参数名、流式协议全有差异。按厂商写 if-else代码会爆炸。它的解法所有厂商抽象成 IModelProvider 接口每家只需声明三件事有哪些模型ModelInfo 注册表、需要哪些凭据字段、怎么构造模型实例。impl/ 目录下每个厂商一个子目录——OpenAI、Anthropic、DeepSeek、智谱、通义、Ollama、本地模型等 25 家模型类型统一为枚举模型类型代码典型用途大语言模型LLM答案生成、工作流推理嵌入模型EMBEDDING段落向量化语音识别 / 合成STT / TTS语音问答视觉 / 图生IMAGE / TTI多模态理解、绘画重排序RERANKER提升检索精度实际收益应用层从不直接碰具体厂商 SDK新增一家厂商只需加一个子目录存量代码零改动。让大模型去查 MySQL 是怎么做的遇到的问题知识库只能回答文档里有的用户还想问上周订单量是多少——那是数据库里、网页上的数据。它的解法两条路线。一是内置工具模板ui/public/tool/ 目录自带 MySQL、PostgreSQL、搜索引擎等配置样例填好连接信息LLM 就能生成并执行 SQL二是 MCPapps/common/mcp/ 实现了 MCP 客户端sandbox.c 提供受限沙箱跑不可信代码第三方工具调用不直接碰宿主进程。实际收益问答边界从查文档扩到能干活工具调用被关在沙箱里执行。快速上手让 MaxKB 跑起来最小可运行路径源码方式Python 3.11git clone https://gitcode.com/GitHub_Trending/ma/MaxKB cd MaxKB python main.py start # 需先按 pyproject.toml 装好依赖 更省事的是官方 Docker 部署PostgreSQL、Redis 和应用一起拉起脚本见 installer/ 目录。启动后登录建一个知识库、传几份文档就能用上面的一次提问旅程实测效果。想读代码时从这三个入口进向量存储实现向量写入、检索、删除的落地点对话流水线问答四步执行骨架模型厂商基类所有厂商遵守的契约写在最后谁适合先拿它开刀适合想先跑通智能问答知识库、再按需调优的团队——RAG 主链路、混合检索、工作流编排开箱即用。若要自己扩展多模型 provider 层是门槛最低的切入点看懂那个接口契约一天之内能加一家新的模型厂商。【免费下载链接】MaxKB MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。项目地址: https://gitcode.com/GitHub_Trending/ma/MaxKB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考