deep-rag
基于文件摘要知识地图与ReAct主动导航机制,让AI真正理解知识库结构,支持否定查询、多跳推理等传统RAG盲区问题
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于文件摘要知识地图与ReAct主动导航机制,让AI真正理解知识库结构,支持否定查询、多跳推理等传统RAG盲区问题
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有遇到过这种尴尬:往 RAG 系统里塞了满满一个知识库,问它一个问题,它却只能找到一两个相关片段,最后给你一个似是而非的答案?传统的向量化检索(Vector RAG)本质上就是「找相似片段」,它无法理解否定含义(除了XX以外的)、数值比较(哪个产品的利润率最高)、多跳推理(A公司的供应商提供的服务有什么特点)。这正是 Deep RAG 要解决的问题。

图1:Deep RAG 项目图标
Deep RAG 由独立开发者 boluo2077 创建,项目末次更新于 2025 年 11 月,采用 Apache-2.0 开源许可证。这是一个全栈 Python + React 项目,仓库同时包含中英文双版文档,在传统 RAG 的向量检索盲区上做了系统性的技术创新。
传统 RAG 的根本局限在于:它只认识「相似」,不认识「相反」、「最多」、「最少」、「除...外」。当用户问「除了 A 公司,还有哪些供应商」,向量检索会首先找到与「A公司」和「供应商」最相似的片段,然后返回一堆关于 A 公司的内容,而不是「排除 A 公司之后」的内容。这种语义级别的缺失,是向量 Embedding 的数学本质所决定的。
Deep RAG 则换了一个思路:不让 AI 去「猜」相似度,而是给 AI 一张知识库的「地图」,让它自己决定去哪里找。
Deep RAG 的核心创新叫做 「文件摘要即知识地图」(File Summary as Knowledge Map)。这套机制的工作流程如下:
第一步:建立知识地图。 系统对知识库中的每个文件生成一个结构化摘要(Summary),包含文件名、文件内容概述、关键实体和关系。这份摘要本身也是一个文件(Knowledge-Base-File-Summary/summary.txt),AI 可以像查目录一样先读它,再决定要深入哪个文件。
第二步:ReAct 循环导航。 Deep RAG 采用了 ReAct(Reasoning + Acting)模式,AI 不是一次性生成答案,而是多轮循环:
file_retrieval 工具,主动拉取指定文件的内容这个循环最多迭代 5 次,直到 AI 认为已经收集到足够信息来回答原始问题。
第三步:支持复杂查询类型。 得益于上述机制,Deep RAG 能原生处理以下传统 RAG 的「老大难」问题:
| 查询类型 | 示例问题 | Deep RAG 能否处理 |
|---|---|---|
| 否定查询 | 「除了A公司还有哪些供应商?」 | ✅ |
| 数值比较 | 「哪个产品的利润率最高?」 | ✅ |
| 多跳推理 | 「A公司供应商提供哪些服务?」 | ✅ |
| 全局聚合 | 「所有项目的总预算是多少?」 | ✅ |
| 跨文档对比 | 「A和B两个方案各有什么优劣?」 | ✅ |

图2:Deep RAG 处理否定查询的可视化示意

图3:Deep RAG 多跳推理流程——AI 主动导航多个文件

图4:Deep RAG 全局聚合能力——对整个知识库进行汇总分析

图5:Deep RAG 极值发现能力——在知识库中找出最优/最差选项
后端位于 backend/ 目录,核心模块如下:
| 模块 | 职责 |
|---|---|
main.py | FastAPI 应用入口,定义所有 REST API 端点 |
config.py | Pydantic Settings 配置管理,从 .env 动态加载 |
llm_provider.py | LLM 提供商抽象层,支持 OpenAI / Anthropic / Google Gemini |
knowledge_base.py | 知识库读写,文件摘要生成 |
react_handler.py | ReAct 循环引擎,核心推理逻辑 |
prompts.py | Prompt 模板,System Prompt 和工具调用描述 |
models.py | Pydantic 数据模型 |
后端默认端口 8000,支持流式输出(SSE/Streaming),前端实时渲染 AI 思考过程。API 还支持在线修改 .env 配置(/api/config POST 端点),无需重启服务即可更换 API Key 或 LLM 模型。
前端位于 frontend/ 目录,使用了现代前端技术栈:React 19.1.1 + Vite 7 构建工具,TypeScript 类型安全,Axios 做 HTTP 请求,Lucide React 图标库,react-markdown 渲染 AI 回复(支持 GFM 语法)。前端默认端口 5173,通过反向代理与后端通信。
llm_provider.py 实现了统一的 LLM 接口抽象,底层支持三家主流厂商:
同时支持通过 *_BASE_URL + *_HEADERS 配置兼容 OpenAI API 格式的第三方模型(如本地部署的 LLaMA、Qwen 等)。模型选择通过环境变量 API_PROVIDER 切换。
Deep RAG 没有提供 Docker 支持,这是目前最大的部署短板。但项目提供了相当完善的 shell 脚本生态来弥补这一点:
./start.sh:首次启动,创建 Python venv + npm install,前后端一起拉起./start.sh --fast:跳过依赖安装,快速重启./restart.sh:重启(默认 fast 模式)./restart.sh --full:重启并重新安装依赖./stop.sh:停止所有服务启动脚本会自动探测 fnm(Fast Node Manager)或 nvm(Node Version Manager),选择合适的 Node.js 版本。日志分别输出到 backend.log 和 frontend.log,可 tail -f 实时查看。
部署流程总结:下载代码 → 填 .env(API Key) → ./start.sh → 完成。 约 20-30 分钟(含依赖安装),无需 Docker,一台普通 Linux 机器即可运行。
1. 没有容器化。 无法通过 docker compose up 一键部署,对于生产环境运维不够友好。
2. 知识库文件摘要需要预先构建。 当前 Summary 文件存放在固定路径,添加新文件后需要手动或通过脚本重新生成摘要地图,还没有增量更新机制。
3. 上下文窗口依赖。 当知识库规模很大时,AI 需要在有限上下文窗口内读完摘要再决定去哪里找,对超大型知识库的扩展性有待验证。
4. 多语言文档支持尚不完整。 虽然 README 有中英文,但 Web UI 界面目前只有英文,前端 i18n 还未实现。
Deep RAG 代表了 RAG 领域的一个重要趋势:从「被动检索」到「主动导航」的范式转换。Google 在 2024 年提出的「深度研究」(Deep Research)Agent 走的也是类似路线——让 AI 自己决定去哪里查、查什么、查几次。
随着 Agent 能力(工具调用、记忆、规划)的持续进化,Deep RAG 的技术思路可以与 MCP(Model Context Protocol)生态结合,构建更强大的企业知识助手。短期内,如果能补上 Docker 部署和增量索引能力,这个项目的实用价值会大幅提升。

图6:Deep RAG 与传统 Vector RAG 在各类查询上的能力对比
总结:Deep RAG 是一款针对传统向量检索痛点进行系统性优化的开源知识库问答系统。 其「文件摘要即知识地图 + ReAct 主动导航」的核心设计,在否定查询、数值比较、多跳推理等传统 RAG 的盲区上有明确的技术优势。项目代码质量高(全栈 TypeScript + Python,模块清晰),文档完善(中英双语),部署门槛适中,适合有一定技术背景的团队用于内部知识管理场景。
本报告由 PIFS 平台自动分析生成 | 项目地址:https://github.com/boluo2077/deep-rag