SuperAPI AI 工具集

agentic-rag-patterns

智能体与模型

查看项目

更新于 10-16 04:17

技能介绍

用途

Agentic RAG Patterns 面向需要构建「会自我纠错」的检索增强生成流水线的开发者。传统 RAG 的固定「检索—拼接—生成」链路在检索质量不佳时会直接产出低质量答案;本模式通过引入 LLM 驱动的评分与路由决策,让系统在检索结果不理想时主动改写查询或转向其他信息源。适用于智能体式 RAG 流水线、自适应检索、查询改写等场景。

主要能力

资料覆盖三类模式:

  1. Self-RAG:核心是在检索后加入文档评分环节,用 LLM 对每篇文档相对问题的相关性给出二值判断(yes/no),只保留相关文档,并在过滤比例过高时触发兜底。
  2. Corrective-RAG(CRAG):在文档质量不达标时先重写查询再重试检索,重试次数用尽后回退到网页搜索。
  3. 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 等外部对象,资料未给出其初始化方式。