文档 / Agentic RAG

Agentic RAG

在传统 RAG 中,检索是一个固定、预先确定的步骤。而在 Agentic RAG 中,由智能体自身决定何时、检索多少次以及如何检索。

Multi-hop Retrieval Query Rewriting Self-correction

什么是 Agentic RAG?

Agentic RAG 是 RAG智能体行为 的结合:检索不再是线性管道中的一个固定步骤,而其本身就是智能体可用的一个工具, 智能体可以根据需要使用零次、一次或多次(每次使用不同的查询)。

与普通 RAG 的区别

普通 RAGAgentic RAG
搜索次数始终恰好一次零到多次,由智能体自行判断
搜索查询用户的原始问题可以被重写或拆解
结果评估无;返回什么就使用什么智能体评估结果质量,若不充分则重新搜索
路径线性且固定动态且取决于每一步的结果

关键模式

  • 查询重写(Query Rewriting) — 在检索之前,将用户模糊的问题重写为更精确的搜索查询
  • 多跳检索(Multi-hop Retrieval) — 回答一个复杂问题需要多次连续搜索(第一次搜索的结果构成第二次搜索的输入)
  • 自我修正/批判(Self-correction / Critique) — 智能体对检索到的结果进行批判;如果结果不相关或不充分,就用另一个查询重新尝试

一个真实案例的流程

假设用户提问:"既有降噪功能又有现货的最便宜耳机是哪款?"

  1. 智能体将问题拆解为两个子问题:"降噪耳机有哪些"和"分别检查它们的库存"
  2. 第一次搜索(在目录上进行的 RAG)返回候选结果
  3. 智能体针对每个候选结果调用 check_inventory 工具(此时,RAG 与 MCP 协同工作)
  4. 如果初步结果全部为空,智能体会重写查询并再次搜索
  5. 最终答案——最便宜的现货选项——被提供给用户

什么时候需要它?

如果你的用户提问通常简单且单一维度,传统 RAG 就已足够且成本更低。如果问题是多步骤的、含糊的,或需要组合多个数据源 (如上面的例子),Agentic RAG 能显著提高准确性——代价是更高的延迟和计算成本。

防止无限搜索循环

由于在 Agentic RAG 中是智能体自己决定是否再次搜索,主要风险在于:对于知识库中根本没有答案的问题, 智能体可能会不断重写查询并反复搜索,却始终无法得出结果——这正是在 AI 智能体一文中提到的"无限循环"风险。常见的防护方法包括:

  • 尝试次数上限 — 将重新搜索限制在固定次数内(例如最多 3 次),超过后返回"未找到足够信息"的答案
  • 质量阈值 — 如果经过 N 次尝试后,检索结果的相关性得分仍低于某个阈值,智能体应停止,而不是漫无目的地继续
  • 对用户保持透明 — 与其给出猜测性答案,不如明确告知用户在现有资料中未找到确定的答案

常见问题

Agentic RAG 总是比普通 RAG 更好吗?

不一定;对于简单问题,其额外的复杂性和延迟并不划算。应根据你的查询实际复杂程度来选择。

Agentic RAG 需要特定的框架来实现吗?

可以用任何智能体框架(例如 LangGraph)来实现,因为它本质上就是一个带有搜索工具的"决策-行动"循环。