Agentic RAG(智能体检索增强)
传统 RAG 是「检索一次 → 生成一次」的静态流水线,遇到复杂、多跳、需要判断的问题就力不从心。Agentic RAG 把 Agent 的「规划、反思、工具调用」能力注入检索流程,让系统能自主决定「要不要检索、检索什么、检索够了没、检索得对不对」。这是 2024–2025 RAG 演进的主线方向。基础概念见 RAG 基础、Agent 概念见 Agent 基础。
一、为什么需要 Agentic RAG?
朴素 RAG(Naive RAG)的结构性缺陷:
| 缺陷 | 表现 |
|---|---|
| 单次检索 | 一次召回定生死,召回不全就答错 |
| 不会多跳 | 「A 的老板的妻子是谁」要两步检索,单次做不到 |
| 不判断相关性 | 检索到的垃圾也照单全收,污染生成 |
| 不会反思 | 答错了不会重试、不会换个查询 |
| 总是检索 | 「你好」这种问题也去查库,浪费且引噪声 |
Agentic RAG 用一个(或多个)LLM Agent 来编排检索过程,把上面每个缺陷都变成「可决策的一步」。
二、核心能力拼图
Agentic RAG = RAG + Agent 的四种能力:
┌─────────────── Agent 决策循环 ───────────────┐
用户问题 → 是否需要检索? → 生成/改写查询 → 检索 → 评估检索质量 → 够了? → 生成答案
│否 ↑ │不够 │
直接答 ←─────────┴──────── 改写查询/换工具/多跳 ←┘ 反思校验- 路由(Routing):判断该不该检索、该查哪个数据源(知识库/网络/数据库/工具)。
- 查询规划(Planning):把复杂问题分解成子查询,或规划多跳检索路径。
- 反思(Reflection):评估检索结果相关不相关、答案有没有依据,不行就重来。
- 工具调用(Tool use):检索只是工具之一,还能调用计算器、SQL、API、网页搜索。
三、代表方法
Self-RAG(自反思 RAG)
训练模型在生成时输出特殊的「反思 token」,自主决策:
- Retrieve token:这一步要不要检索?
- IsRel:检索到的内容相关吗?
- IsSup:我的生成被检索内容支持吗(有没有幻觉)?
- IsUse:这个回答有用吗?
模型边生成边自评,按需检索、自我批判,把「检索 + 质量控制」内化进生成过程。
CRAG(Corrective RAG,纠错 RAG)
给检索结果加一个轻量评估器打分,按结果分三档处理:
- Correct(检索可靠):精炼后使用;
- Incorrect(检索不可靠):丢弃,转网络搜索兜底;
- Ambiguous(不确定):两者结合。
核心思想:不信任单一检索源,用质量门控 + 兜底来纠错,显著降低「检索垃圾→生成垃圾」。
多跳 / 迭代检索(Iterative Retrieval)
复杂问题分轮检索,每轮用上一轮的结果决定下一步查什么:
Q:「写《三体》的作者获得的雨果奖是哪一年颁发的?」
跳1:检索「《三体》作者」→ 刘慈欣
跳2:用「刘慈欣 雨果奖 年份」再检索 → 2015代表思路如 IRCoT(检索与思维链交替)、ReAct 式「想—查—想—查」循环。
Agentic / 多 Agent RAG
把检索能力封装成工具,由 ReAct Agent 自主调度;复杂场景用多 Agent 分工(一个 Agent 管知识库、一个管网络、一个汇总),见 多 Agent。这是与通用 Agent 框架(LangGraph 等)结合最紧的形态。
四、Naive RAG vs Agentic RAG
| 维度 | Naive RAG | Agentic RAG |
|---|---|---|
| 检索次数 | 固定一次 | 按需多次/不检索 |
| 多跳问题 | 不支持 | 支持 |
| 相关性判断 | 无 | 有(评估器/反思 token) |
| 兜底 | 无 | 网络搜索/换源/重试 |
| 延迟 | 低、可预测 | 高、不可预测 |
| 成本 | 低 | 高(多次 LLM + 检索调用) |
| 适用 | 简单事实问答 | 复杂、多跳、高准确率要求 |
务实原则同 工作流 vs Agent:简单问答别上 Agentic RAG,它的自主性带来延迟和成本,只在朴素 RAG 确实答不好时才引入。
五、工程落地要点
- 延迟与成本控制:多轮检索 + 反思会让一次问答跑好几次 LLM,必须设最大轮数、加缓存、对简单问题走快速路径(路由分流)。
- 可观测性:Agentic 流程是黑盒,必须 trace 每一步「查了什么、评估结果、为什么重试」,否则无法调试(见 LLMOps)。
- 评估:除了答案质量,还要评估「检索决策对不对、多跳路径合不合理」,见 RAG 评估。
- 防失控:反思循环可能停不下来或越查越偏,要有收敛条件和兜底答案。
高频追问
Q:Agentic RAG 和普通 RAG 的本质区别? 普通 RAG 是固定的「检索→生成」管道;Agentic RAG 让 LLM 自主决策检索流程——要不要检索、查什么、查几次、结果可不可信、要不要换源重试。本质是把「静态流水线」变成「带反馈的决策循环」。
Q:Self-RAG 和 CRAG 有什么区别? Self-RAG 是训练模型输出反思 token、把按需检索和自我批判内化进生成;CRAG 是在检索后挂一个外部评估器给结果打分、不行就转网络搜索兜底,不需要改模型。前者改模型、后者改流程,可结合。
Q:多跳检索为什么朴素 RAG 做不了? 朴素 RAG 一次性用原始问题检索,但多跳问题的第二跳依赖第一跳的答案(「刘慈欣」要先查出来才能查他的奖项)。需要「检索→推理→再检索」的迭代结构,这正是 Agentic RAG 的能力。
Q:什么时候不该用 Agentic RAG? 简单事实问答、延迟敏感、成本敏感的场景。它的多轮 LLM 调用会让延迟和成本翻几倍,对「一次检索就能答好」的问题是浪费。用路由先分流,复杂的才进 Agentic 流程。
Q:Agentic RAG 的主要工程风险? 延迟/成本不可控(多轮循环)、反思可能不收敛或越走越偏、黑盒难调试。对策:最大轮数限制、快速路径分流、全链路 trace、兜底答案、对检索决策单独评估。
Q:Agentic RAG 和长上下文模型是替代关系吗? 不完全是。长上下文能「把更多内容塞进去」,但仍受成本、lost-in-the-middle 和知识时效限制;Agentic RAG 强在「按需精准取用 + 多跳推理 + 外部工具」。趋势是结合:长上下文承载单轮更多材料,Agentic 编排多轮与多源(见 长上下文专题)。