Agentic RAG
在传统 RAG 中,检索是一个固定、预先确定的步骤。而在 Agentic RAG 中,由智能体自身决定何时、检索多少次以及如何检索。
Multi-hop Retrieval
Query Rewriting
Self-correction
什么是 Agentic RAG?
Agentic RAG 是 RAG 与智能体行为 的结合:检索不再是线性管道中的一个固定步骤,而其本身就是智能体可用的一个工具, 智能体可以根据需要使用零次、一次或多次(每次使用不同的查询)。
与普通 RAG 的区别
| 普通 RAG | Agentic RAG | |
|---|---|---|
| 搜索次数 | 始终恰好一次 | 零到多次,由智能体自行判断 |
| 搜索查询 | 用户的原始问题 | 可以被重写或拆解 |
| 结果评估 | 无;返回什么就使用什么 | 智能体评估结果质量,若不充分则重新搜索 |
| 路径 | 线性且固定 | 动态且取决于每一步的结果 |
关键模式
- 查询重写(Query Rewriting) — 在检索之前,将用户模糊的问题重写为更精确的搜索查询
- 多跳检索(Multi-hop Retrieval) — 回答一个复杂问题需要多次连续搜索(第一次搜索的结果构成第二次搜索的输入)
- 自我修正/批判(Self-correction / Critique) — 智能体对检索到的结果进行批判;如果结果不相关或不充分,就用另一个查询重新尝试
一个真实案例的流程
假设用户提问:"既有降噪功能又有现货的最便宜耳机是哪款?"
- 智能体将问题拆解为两个子问题:"降噪耳机有哪些"和"分别检查它们的库存"
- 第一次搜索(在目录上进行的 RAG)返回候选结果
- 智能体针对每个候选结果调用
check_inventory工具(此时,RAG 与 MCP 协同工作) - 如果初步结果全部为空,智能体会重写查询并再次搜索
- 最终答案——最便宜的现货选项——被提供给用户
什么时候需要它?
如果你的用户提问通常简单且单一维度,传统 RAG 就已足够且成本更低。如果问题是多步骤的、含糊的,或需要组合多个数据源 (如上面的例子),Agentic RAG 能显著提高准确性——代价是更高的延迟和计算成本。
防止无限搜索循环
由于在 Agentic RAG 中是智能体自己决定是否再次搜索,主要风险在于:对于知识库中根本没有答案的问题, 智能体可能会不断重写查询并反复搜索,却始终无法得出结果——这正是在 AI 智能体一文中提到的"无限循环"风险。常见的防护方法包括:
- 尝试次数上限 — 将重新搜索限制在固定次数内(例如最多 3 次),超过后返回"未找到足够信息"的答案
- 质量阈值 — 如果经过 N 次尝试后,检索结果的相关性得分仍低于某个阈值,智能体应停止,而不是漫无目的地继续
- 对用户保持透明 — 与其给出猜测性答案,不如明确告知用户在现有资料中未找到确定的答案
常见问题
Agentic RAG 总是比普通 RAG 更好吗?
不一定;对于简单问题,其额外的复杂性和延迟并不划算。应根据你的查询实际复杂程度来选择。
Agentic RAG 需要特定的框架来实现吗?
可以用任何智能体框架(例如 LangGraph)来实现,因为它本质上就是一个带有搜索工具的"决策-行动"循环。