Agentic RAG

agentic_rag2026-09-22 01:19:42

Agentic RAG 是把检索、证据判断和生成组织为受控决策循环的检索增强生成方式。与固定执行一次“检索—生成”的流程相比,它允许系统根据问题复杂度和当前证据,决定是否拆解问题、改写查询、继续检索、请求澄清或停止回答。

Agentic RAG 不是“让模型无限自主搜索”,也不要求把每个步骤拆成独立 Agent。它更接近一个有明确状态、工具边界、预算和终止条件的检索工作流,是检索增强生成(RAG)在复杂知识问答中的一种扩展方式。

基本工作循环

一个常见的受控流程可以包含:

  1. 理解问题:保留原问题,并提取实体、时间、范围、输出形式和必须满足的约束;
  2. 判断复杂度:区分直接回答、单次检索、多个并列问题和需要前一步结果的多跳问题;
  3. 形成检索计划:为每个子问题生成查询,选择知识源和检索方式;
  4. 召回与重排:取得候选资料,结合关键词、语义相似度、元数据和重排结果筛选证据;
  5. 判断证据:检查相关性、覆盖范围、时效、适用条件和来源冲突;
  6. 采取纠正动作:在预算内改写查询、补查其他来源、读取更完整内容或向用户澄清;
  7. 回答或拒答:只依据得到支持的事实生成答案,并进行引用和覆盖检查。

这个循环应由程序保存明确状态。模型可以提出查询或选择有限分支,但身份、权限、允许使用的工具、最大轮数、超时和成本上限应由应用控制。

问题拆解

复杂问题可能包含两类结构:

  • 并列子问题:多个问题彼此独立,例如同时询问定义、优缺点和实施步骤;
  • 依赖子问题:后续检索依赖前一步得到的实体或事实,形成多跳检索。

拆解后应保留每个子问题与原问题的对应关系、依赖关系和所需证据。合并回答时要逐项检查覆盖情况;如果只有部分子问题得到足够证据,可以给出部分答案并指出缺口,而不是把未解决部分补写成确定事实。

拆解不是越细越好。简单问题被过度拆分会增加延迟和错误路径;复杂问题没有拆解,则可能只召回其中一部分内容。Adaptive-RAG展示了根据问题复杂度选择不同检索策略的研究方向,IRCoT则研究了在多步问答中交替进行检索和推理。

证据状态与纠正动作

证据判断不应只检查“是否返回了结果”。可以把当前状态区分为:

状态 含义 可选动作
充分 关键结论均有适用证据 生成并校验回答
部分充分 只能覆盖部分问题或条件 补查或部分回答
不充分 结果为空、偏题或缺少关键事实 改写查询、换源、澄清或拒答
冲突 来源给出不兼容结论 核对版本和适用范围,说明冲突

Corrective Retrieval Augmented Generation(CRAG)研究了先评估检索结果质量,再触发不同纠正动作的方法。Self-RAG研究了按需检索以及对检索结果和生成内容进行自我评估的方法。这些研究说明“取得候选资料”和“资料足以支持回答”是不同阶段,但具体系统仍需用自己的数据验证判断器是否可靠。

重新检索必须有终止条件。常见限制包括最大检索轮数、重复查询检测、总 Token、总耗时和工具调用次数。连续取得相同或更差的证据时,应停止循环并返回可解释的不足状态。

生成与校验

生成阶段应尽量采用“结论—证据”绑定:

  • 每项外部事实能够映射到本轮取得的来源;
  • 引用靠近其支持的陈述;
  • 保留时间、版本、适用对象和前提条件;
  • 不把模型参数中的记忆作为关键事实来源;
  • 没有证据支持的内容应删除、标为推测或明确说明未知。

引用编号存在并不代表引用内容支持结论,具体检查见 RAG 引用与依据校验。

安全与可观测性

检索到的网页、文件和知识库正文都属于不可信数据,不能借其中的指令改变系统规则或自动扩大工具权限。读取资料和执行有副作用的动作应处于不同权限边界;知识检索结果不能直接授权转账、删除、投稿或对外发送。

运行轨迹可以记录问题分类、子问题、查询、来源标识、证据状态、重试原因、停止原因、延迟和成本,用于复现失败。轨迹不应保存凭据、完整私密上下文或模型隐藏推理;结构化的动作、观察和证据已经足以支持调试。

评测

除了普通 RAG 的召回、正确性和引用指标,还应检查:

  • 复杂度路由是否正确;
  • 子问题是否完整、无重复且保持原意;
  • 多跳依赖是否获得必要的中间证据;
  • 证据不足或冲突时是否触发正确动作;
  • 重新检索是否带来新增证据,而不是重复调用;
  • 部分回答是否明确区分已回答与未回答部分;
  • 质量收益是否值得新增的延迟、Token 和工具成本。

完整的检索、生成和拒答指标见 RAG 评测。

参考资料

本页目录