基于 LangGraph 构建模块化 Agentic RAG 系统,支持分层索引、多智能体并行检索与人工澄清。
方案简介
本项目演示如何使用 LangGraph 以极简代码构建一个模块化的 Agentic RAG(检索增强生成)系统。
大多数 RAG 教程只展示基础概念,但缺少对构建模块化、由 Agent 驱动的系统的指导。本项目旨在弥合这一鸿沟,同时提供学习材料和可扩展的架构。它面向两类用户:一是想要快速理解 Agentic RAG 核心概念的初学者(通过交互式 Notebook 学习路径),二是希望基于模块化项目灵活替换各组件(LLM 提供商、嵌入模型、PDF 转换器、Agent 工作流)的开发者。默认的可运行应用以 Ollama 为优先,亦可适配 LangChain 支持的任何聊天模型,并给出了 Anthropic、OpenAI、Google 的示例。
整套系统围绕 LangGraph 编排,将文档分层索引、对话记忆、查询澄清、多智能体并行检索、自校正与上下文压缩、可观测与评估整合为一条端到端的工作流。
使用与配置要点
默认配置(Ollama 本地)
from langchain_ollama import ChatOllama
llm = ChatOllama(model="granite4.1:8b", temperature=0, seed=42)
OpenAI GPT
from langchain_openai import ChatOpenAI
import os
os.environ["OPENAI_API_KEY"] = "your-api-key-here"
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
Anthropic Claude
from langchain_anthropic import ChatAnthropic
import os
os.environ["ANTHROPIC_API_KEY"] = "your-api-key-here"
llm = ChatAnthropic(model="claude-sonnet-4-5-20250929", temperature=0)
Google Gemini
import os
from langchain_google_genai import ChatGoogleGenerativeAI
os.environ["GOOGLE_API_KEY"] = "your-api-key-here"
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash", temperature=0)
两种使用路径
- 学习路径(Notebook):通过
notebooks/agentic_rag.ipynb交互式 Notebook 逐步学习核心概念。配套评估 Notebooknotebooks/evaluation.ipynb使用直接 RAGAS 指标调用为最终答案与子/父级工具输出打分。 - 构建路径(模块化项目):灵活替换 LLM 提供商、嵌入模型、PDF 转换器与 Agent 工作流中各组件。
四阶段查询处理流程
User Query → Conversation Summary → Query Rewriting → Query Clarification →
Parallel Agent Reasoning → Aggregation → Final Response
阶段 1 维护滚动摘要与近期对话历史;阶段 2 解析指代、拆分多部分问题、检测不明确输入并在需要时暂停等待人工输入;阶段 3 为每个子查询派生并行子图,分别检索子分块、获取父分块、必要时自校正、压缩上下文并在预算耗尽时优雅降级;阶段 4 聚合各 Agent 响应生成最终回答。
注意事项与常见问题
- 模型名称变更频繁,部署前请务必查阅各提供方官方文档获取最新可用模型与标识符。
- 为保证工具调用与指令遵循的可靠性,Ollama 本地模型建议选择 ≥ 8B;较小模型可能忽略检索指令或产生幻觉。
- 项目提供了一个可选的辅助工具 Chunky,用于在构建向量库前将 PDF 转为 Markdown、清洗文档、检查分块、对比分块策略并丰富元数据。
- 关于可观测与扩展说明,完整细节、扩展解释与 Langfuse 可观测集成位于 Notebook 与完整项目中;评估细节见
notebooks/evaluation.ipynb。
文档节选:
Optional: 🐿️ Chunky is an open-source toolkit for reliable RAG pipelines: convert PDFs to Markdown, clean documents, inspect chunks, compare chunking strategies, and enrich metadata before building the vector store.
优缺点
- ✓ 提供商无关,本地 Ollama 即跑
- ✓ 分层索引兼顾检索精度与上下文
- ✕ 小模型可能忽略指令或幻觉
出处
本方案挖掘自开源项目 GiovanniPasq/agentic-rag-for-dummies,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。