agentic-rag-for-dummies
基于 LangGraph 的模块化 Agentic RAG 系统,支持父子分块索引、多智能体编排和本
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 LangGraph 的模块化 Agentic RAG 系统,支持父子分块索引、多智能体编排和本
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你问 AI 一个专业问题,它不是凭记忆瞎猜,而是先在你的文档库中搜索相关资料,再基于真实内容给出答案——这就是 RAG(检索增强生成)的核心理念。
而 Agentic RAG 在此基础上更进一步:AI 不只是被动检索,而是像一位主动思考的研究助手,会分析问题、拆解复杂查询、自动判断检索结果是否足够、必要时重新检索、用多路并行加速整个过程。
Agentic RAG for Dummies 正是这样一个教学级项目。它用 LangGraph 构建了一个模块化的 Agentic RAG 系统,展示了从文档处理、多路混合检索到智能问答的完整流程,既有 Jupyter Notebook 学习路径,也有可直接部署的模块化工程架构。
图1:Agentic RAG for Dummies 项目 Logo
大语言模型的训练数据有截止日期,且容易产生「幻觉」——即一本正经地胡说八道。RAG 通过在推理时从外部知识库检索相关信息来缓解这一问题,让模型「就题答题」,而非凭空生成。
但传统 RAG 有一个根本局限:它是单轮、被动的。用户问一个复杂问题,它往往只能返回单一检索结果,无法处理多跳推理、多角度分析,更无法在检索不足时主动重试。
Agentic RAG 应运而生。它将 LLM 本身变成检索流程的「调度员」,让 AI 自主决定:要不要检索?检索什么?检索结果够不够?不够的话怎么补充?这种自主性正是「Agentic」(智能体化)的含义。
LangGraph 是 LangChain 团队打造的图结构工作流框架,特别适合构建有状态、多步骤、带循环的 Agent 系统——正好契合 Agentic RAG 需要不断判断、循环重试的需求。
RAG 系统检索质量的关键之一在于文档分块(Chunking)。分得太小丢失上下文,分得太大引入噪声。该项目采用了 Parent-Child Chunking(父子分块)策略:
检索时用 Child Chunks 精准匹配问题,匹配到后再拉取对应的 Parent Chunk 提供完整上下文。这种「精准搜索 + 丰富上下文」的组合,兼顾了检索精度和答案质量。
单一检索方式总有盲区。该项目实现了混合检索:
sentence-transformers/all-mpnet-base-v2 将文本转为 768 维向量,通过余弦相似度在 Qdrant 向量数据库中搜索语义相近的内容两路结果合并取优,兼顾语义理解和关键词精确匹配,召回率显著高于单一检索。
这是整个 Agentic RAG 的核心。LangGraph 驱动的 Agent 分为四个阶段:
阶段一 — 对话理解:分析最近对话历史,提取上下文,维持多轮对话连贯性。用户说「它怎么部署」,Agent 能知道「它」指哪个项目。
阶段二 — 查询澄清:重写模糊问题(如「它」→「SQL 数据库」)、拆解多跳问题(如「JS 和 Python 有什么区别」→ 两个独立子查询)、检测输入歧义并在必要时暂停等待用户补充。
阶段三 — 并行 Agent 推理(Map-Reduce):将复杂问题分解为多个子查询,每个子查询由独立的 Agent 子图并行执行。每个子 Agent 搜索 Child Chunks、拉取 Parent Chunks 补充上下文、必要时自我纠正重试、压缩上下文防止溢出。
阶段四 — 答案生成:将所有 Agent 的检索结果聚合,生成最终回答。
图2:Agentic RAG 四阶段工作流示意
项目默认使用本地 Ollama 部署的 qwen3:4b 量化模型(Q4_K_M 压缩版,约 2.5GB),但架构设计上完全解耦,可一键切换到 OpenAI GPT、Anthropic Claude、Google Gemini 等。切换方式只需修改 config.py 中的模型配置,无需改动核心逻辑。
通过 Langfuse 可以追踪每次 LLM 调用、工具使用和图执行过程,监控 RAG 检索质量、Agent 决策路径、Token 消耗等关键指标,便于生产环境调试优化。
项目分为两条路径:
学习路径(notebooks/):三份 Jupyter Notebook,循序渐进——核心 Agentic RAG 实现、PDF 转 Markdown 文档预处理、Langfuse 可观测性配置。
部署路径(project/):模块化工程架构,核心模块:
rag_agent/ — LangGraph Agent 核心(graph.py 状态机、nodes.py 节点逻辑、tools.py 检索工具、prompts.py 提示词)core/ — 系统组件(document_manager.py 文档管理、rag_system.py RAG 核心、chat_interface.py 界面)db/ — Qdrant 向量数据库集成ui/ — Gradio Web UI本地部署(有 GPU):安装依赖后运行 python project/app.py,通过 Gradio 界面直接上传 PDF 并对话,无需额外配置。Dockerfile 内嵌 Ollama 安装和模型自动拉取,一条命令即可容器化运行。
无 GPU / 仅学习:Ollama 量化版 qwen3:4b Q4_K_M 对硬件要求相对较低,在 CPU 上也能运行,只是速度较慢。
Colab 在线体验:项目提供了 Google Colab 链接,可直接在浏览器中运行 Notebook,无需本地环境配置。
Agentic RAG 是 LLM 应用从「玩具 Demo」走向「生产落地」的关键技术节点。相比纯 RAG,它能处理更复杂的问答场景;相比 Agent 框架,它有明确的知识检索约束,降低了幻觉风险。
该项目作为 LangGraph 官方生态的教学标杆,展示了如何用图结构优雅地表达多步骤 Agent 流程,对 LangChain/LangGraph 生态有兴趣的开发者有很好的参考价值。GitHub 3000+ Stars 也印证了社区对这类实战型教学项目的强烈需求。