用途
Agentic RAG Patterns 面向需要构建「会自我纠错」的检索增强生成流水线的开发者。传统 RAG 的固定「检索—拼接—生成」链路在检索质量不佳时会直接产出低质量答案;本模式通过引入 LLM 驱动的评分与路由决策,让系统在检索结果不理想时主动改写查询或转向其他信息源。适用于智能体式 RAG 流水线、自适应检索、查询改写等场景。
主要能力
资料覆盖三类模式:
- Self-RAG:核心是在检索后加入文档评分环节,用 LLM 对每篇文档相对问题的相关性给出二值判断(yes/no),只保留相关文档,并在过滤比例过高时触发兜底。
- Corrective-RAG(CRAG):在文档质量不达标时先重写查询再重试检索,重试次数用尽后回退到网页搜索。
- Knowledge Graph RAG:将知识图谱与向量检索结合,支持基于实体的检索与多跳推理,资料中仅列出关键词与解决的问题,未给出代码示例。
此外还包含自适应检索(查询路由、多检索器编排、动态检索策略)。
使用方式
资料以 LangGraph 为例给出可复用代码结构,典型流程为:
查询 → 检索 → 评分 → 生成 / 改写 / 联网搜索 → 响应
关键组成部分包括:
- 状态定义 RAGState:使用 TypedDict,包含 question、documents(用 operator.add 作为 reducer 累加)、generation、web_search_needed、retry_count、relevance_scores。
- retrieve 节点:从向量库调用 retriever.invoke 获取文档。
- grade_documents 节点:用 Pydantic 模型 GradeDocuments 返回二值分数,遍历文档打分并过滤,同时记录 relevance_scores;当保留文档少于原始数量的一半时置 web_search_needed 为 True。
- transform_query 节点:调用 question_rewriter 重写问题,并递增 retry_count。
- web_search 节点:调用 tavily_client.search(max_results=5,search_depth="advanced"),把结果包装为 Document,metadata 标记 type 为 web。
- generate 节点:把文档编号拼接为上下文后调用 rag_chain 生成答案。
- route_after_grading 条件路由:web_search_needed 为真且 retry_count 小于 2 时走 transform_query,否则走 web_search;文档合格则走 generate。
- build_crag_workflow:用 StateGraph 组装以上节点与边,transform_query 回到 retrieve 形成重试环,web_search 指向 generate,最终 compile。
关键决策建议(来自资料)
- 评分阈值:二值(yes/no)比连续分数更简单。
- 最大重试次数:查询改写 2-3 次。
- 网页搜索:作为最后手段,需考虑延迟与成本。
- 兜底顺序:改写 → 联网 → 拒答。
常见错误(资料列举)
- 没有兜底路径,遇到坏查询会卡住。
- 无限重写循环,缺少重试上限。
- 每次查询都走网页搜索,成本高昂。
- 不记录相关性分数,难以调试。
相关技能
资料提到 rag-retrieval(本模式所增强的基础 RAG 模式)、langgraph-routing(条件边模式)、langgraph-state(带 reducer 的状态设计)、contextual-retrieval(Anthropic 的上下文前置方法)、reranking-patterns(检索后重排)。
版本与限制
资料提及 LangGraph 1.0.6(2026 年 1 月),涉及 langgraph-checkpoint 4.0.0、编译期 checkpointer 校验、命名空间清理。除此之外,具体的安装命令、依赖版本要求、收费与价格、支持平台、性能效果等事实,资料中暂未提供。代码示例假定已存在 retriever、retrieval_grader、question_rewriter、rag_chain、tavily_client 等外部对象,资料未给出其初始化方式。