深夜十一点,“明察秋毫侦探事务所”的电话骤然响起。客户焦急地问:“我们公司三个季度的区域销售数据散落在不同报表里,到底哪个区域增长最健康?”几个 AI 助手轮番上阵,有的翻到第一份报表就急着交卷,有的把两串对不上的数字硬拼在一起。直到事务所的老侦探接过案子——他不急不缓,先判断这案子自己是否门清,再决定去哪个档案室;查完一份发现还缺“增长率”,转手又翻出第二份;把两份档案摊开对比,发现数字有矛盾,还回头补查了一份访谈纪要,最后才写下结案报告。 这个故事里的“老侦探”,就是今天的主角——Agentic RAG 智能体。传统 RAG 像只会跑腿的文书助理:接到问题,检索一次,生成答案,完事。Agentic RAG 则把大模型变成“自主决策的总指挥”:它自己判断要不要检索、把问题拆成几步查、边查边推理、把多份证据交叉验证,发现不对还会自我纠错,直到有把握才开口。这套“把查资料变成查案子”的系统工程,正是高级 RAG 迈向智能体的关键一步。 接下来,你会跟着侦探走完一整条办案流水线:从 RAG 的三代演进,到 Agent 的大脑、工具箱与记事本,再到自主检索决策、多步推理检索、信息聚合、自我纠错,最后看到整套系统如何搭建与考核。读完你会发现,Agentic RAG 不是玄乎魔法,而是一套可拆解、可工程化、可评估的智能体范式。

岗位关联

掌握 Agentic RAG,意味着你不再只会搭“检索-生成”管道,而是能构建自主调查、多步推理、自我修正的智能体系统——这是大模型应用从“问答工具”走向“智能助手”的关键一跃,也是 AI 应用开发者进入高级 RAG 领域的核心能力。

目录
  1. 可视化演示
  2. 1. RAG演进脉络
  3. 2. Agent核心机制
  4. 3. 自主检索决策
  5. 4. 多步推理检索
  6. 5. 信息聚合判断
  7. 6. 自我纠错机制
  8. 7. 架构与评估
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示递归下降解析器对输入id+id*id的语法分析过程:逐步展开非终结符、匹配终结符、构建分析树。

本节配有交互动效(进入视口后自动加载,约 3KB)。

递归下降 每个非终结符对应一个递归函数 匹配终结符时推进输入指针 全部匹配成功则接受

1. RAG演进脉络

你走进“明察秋毫侦探事务所”的第一天,师父李探长递给你一叠旧案卷,指着桌上的三张照片说:“看,这是我们事务所三代办案员的工作状态。”第一张照片里,跑腿助理接到任务就冲进档案室,翻出一摞资料丢在桌上完事——这就是最初的“朴素 RAG”。第二张照片里,助理学会了先把委托人的话翻译成档案室能听懂的检索词,再把翻出来的资料按重要程度排队——这是“高级 RAG”。

李探长敲了敲第三张照片:“这个,是我们现在的王牌——Agentic RAG 智能体。他接到委托后,先不动声色地评估'这案子我熟不熟';如果不太熟,他会自己制定调查计划,分头查档案、问线人;查到一半发现线索不够,还会换个方向再查;直到证据链闭合,才写出结案报告。”看似只是多了“动脑子”,实际上是把 RAG 从“程序化的两步流水线”升级为“由大模型驱动决策的自主循环”。

从数学上看,RAG 的答案生成是一个带检索条件的概率过程。设问题为 q,语料库为 D,系统先检索出最相关的文档集合 R(q,D),再在这些证据的支撑下逐词生成答案 y:

李探长合上案卷说:“跑腿助理是'查一次就算完',Agent 是'查到自己能确信为止'。”传统 RAG 的公式只走了第一遍“检索—生成”,而 Agentic RAG 会把线索引出来、观察、再推理,必要时让这条公式在循环里多跑几轮——这正是我们接下来要拆解的。

PRAG(y∣q)=∑d∈R(q,D)Pη(d∣q)⋅Pθ(y∣q,d)\displaystyle P_{\text{RAG}}(y \mid q) = \sum_{d \in \mathcal{R}(q, \mathcal{D})} P_{\eta}(d \mid q) \cdot P_{\theta}(y \mid q, d)
这个公式说明:答案的好坏取决于两件事——检索器有没有挑对证据(P_η),生成器有没有用好证据(P_θ)。
  1. 相关性打分 P_η(d|q)检索器计算问题 q 与文档 d 的相似度,并用 softmax 归一化成概率,选出最像“有用证据”的 top-k 文档。
    Pη(d∣q)=esim⁡(q,d)∑d′∈Desim⁡(q,d′)P_{\eta}(d \mid q) = \frac{e^{\operatorname{sim}(q, d)}}{\sum_{d' \in \mathcal{D}} e^{\operatorname{sim}(q, d')}}
  2. 条件生成 P_θ(y|q,d)生成器把问题 q 和文档 d 拼进上下文,逐个 token 解码,每个 token 的条件概率连乘得到整个答案的概率。
    Pθ(y∣q,d)=∏t=1TPθ(yt∣y<t,q,d)P_{\theta}(y \mid q, d) = \prod_{t=1}^{T} P_{\theta}\left(y_t \mid y_{<t}, q, d\right)
  3. 证据求和把多个候选文档的贡献综合起来,相当于侦探把多份档案并排放在桌上交叉阅读。
    ∑d∈R(q,D)Pη(d∣q)⋅Pθ(y∣q,d)\sum_{d \in \mathcal{R}(q, \mathcal{D})} P_{\eta}(d \mid q) \cdot P_{\theta}(y \mid q, d)

2. Agent核心机制

你问李探长:“这位王牌侦探,到底'聪明'在哪里?”他拍拍脑门,又指指墙上的工具箱:“聪明在他的大脑——大语言模型;本事在他的工具箱——检索器、搜索引擎、计算器;再加上一本记录每次行动的小本子。”侦探接到委托后,大脑负责思考,手负责行动,眼睛负责观察结果,小本子负责记住已经查过什么。这就是 Agent 的三板斧:决策、工具、记忆。

技术上说,Agent 的“大脑”就是被赋予了工具调用能力的大语言模型。它不再只是一个“文本生成器”,而是一个“决策器”:每个回合,它根据当前掌握的所有信息——原始问题加上已经查到的线索——决定下一步行动。行动可以是“调用检索工具”“调用计算器”“直接给出答案”等。工具执行完毕后,模型把观察结果追加到记忆中,再决定下一步,如此循环,直到输出答案。

这个“思考—行动—观察”的循环,在 Agentic RAG 中一般写作 ReAct 模式。若记 t 时刻模型已积累的推理轨迹为 h_t,模型做出的行动为 a_t,行动产生的观察为 o_t,则每一步的决策可以写成:

“所以你看,Agent 不是什么神秘的黑箱子。”李探长从工具箱里拎出一把放大镜,“它就是给大模型装上了手(工具)、眼睛(观察)和记事本(记忆),让它能自己去'查',而不是干坐着编答案。”有了这个架子,侦探才能谈“要不要查”“怎么查”“查到什么时候停”——也就是后面三节的主角。

at+1=LLM⁡(ht⊕ot),ot=Tool⁡(at)\displaystyle a_{t+1} = \operatorname{LLM}\left(h_t \oplus o_t\right), \qquad o_t = \operatorname{Tool}\left(a_t\right)
这像侦探的办案循环:看一眼现有线索(h_t),决定下一步查什么(a_t),拿到反馈(o_t),再决定再下一步。
  1. 行动决策 a_{t+1}大模型以“历史推理 + 最新观察”为输入,输出一个行动指令——下一轮查什么、怎么查,还是直接回答。
    at+1=LLM⁡(ht⊕ot)a_{t+1} = \operatorname{LLM}\left(h_t \oplus o_t\right)
  2. 工具执行 o_t行动指令被路由到对应工具(如向量数据库检索、网页搜索),执行后返回观察结果。
    ot=Tool⁡(at)o_t = \operatorname{Tool}\left(a_t\right)
  3. 轨迹累积 ⊕观察结果拼接进推理轨迹,记忆越来越完整,模型可以站在全部线索上做下一步判断。
    ht+1=ht⊕oth_{t+1} = h_t \oplus o_t

3. 自主检索决策

第一个案子来了。客户问:“你们公司的营业时间是几点?”李探长脱口而出:“早九点到晚六点。”你惊讶:“您不用去查档案?”他笑了:“这种答案就在我脑子里,何必浪费时间跑档案室?”接着又一位客户问:“我们三个季度的区域销售数据,哪个区域增长最健康?”李探长眉头一皱:“这我得去翻档案了。”——会不会检索,先看“脑内知识储备”够不够,这就是自主检索决策的起点。

对应到 Agentic RAG,大模型会在回答前先自评:直接生成答案的置信度高不高。如果模型对答案很有把握(比如常识性问题),就跳过检索,既省时间又避免被无关文档带偏;如果把握不足,就触发检索流程。这个“自评—触发”机制,避免了传统 RAG 每次必查的浪费,也让回答更快更稳。

数学上可以用一个指示函数描述这个决策。设模型直接生成候选答案 y 时的置信度为 Conf,预设阈值 τ 为“把握线”,则:

李探长端起茶杯:“你看,'先想想自己会不会'这一步,成本近乎为零,却能省掉一大半跑档案室的腿。”Agentic RAG 的智能,恰恰体现在这些“该出手时才出手”的决策上——而这一步只是开始,因为就算决定去查,查什么、怎么查,还有更大的学问。

Retrieve⁡(q)=1[Conf⁡(pθ(y∣q))<τ]\displaystyle \operatorname{Retrieve}(q) = \mathbb{1}\left[\operatorname{Conf}\left(p_\theta(y \mid q)\right) < \tau\right]
阈值 τ 决定了智能体的“勤快程度”:τ 越高,越容易触发检索;τ 越低,越倾向于凭记忆直接答。
  1. 置信度自评模型把“直接回答”的所有输出 token 的对数概率取平均,作为自信分。分数越低,说明模型越没底。
    Conf⁡(pθ(y∣q))=1T∑t=1Tlog⁡Pθ(yt∣y<t,q)\operatorname{Conf}\left(p_\theta(y \mid q)\right) = \frac{1}{T} \sum_{t=1}^{T} \log P_\theta\left(y_t \mid y_{<t}, q\right)
  2. 阈值比较把这个自信分与事先定好的 τ 比较,低于阈值就判定“知识不足,需要外援”。
    Conf⁡(pθ(y∣q))<τ\operatorname{Conf}\left(p_\theta(y \mid q)\right) < \tau
  3. 指示函数输出条件成立时取 1(触发检索),否则取 0(直接回答)。
    1[Conf⁡(pθ(y∣q))<τ]\mathbb{1}\left[\operatorname{Conf}\left(p_\theta(y \mid q)\right) < \tau\right]

4. 多步推理检索

委托来了:“我们三个季度的区域销售数据,哪个区域增长最健康?”李探长没有一头扎进档案室,而是先念叨:“嗯,'健康'不能只看某个季度,得看趋势。先找出三个季度的区域销售数字,再算增长率……”他先查了“区域销售季报”,翻完发现只有季度总量,没算增长率。他转而又查“区域负责人述职报告”,从里面找到了各区域自评的增长线索。

这个“查完一档,判断还缺什么,再换一档查”的过程,就是多步推理检索。与朴素 RAG 的“一次查完拉倒”不同,Agentic RAG 会把当前的推理状态(已经知道什么、还缺什么)编码进下一步的查询里。每一轮检索都以前一轮的发现为跳板,像侦探顺着线索追踪,直到证据闭合。

形式上,第 t 轮检索会先把“原始问题 q + 当前推理轨迹 h_t”改写成一条更精准的查询式 q'_t,再用它去候选文档集里选相关性最高的文档:

李探长在白板上画了一条蜿蜒的线:“查一次就歇菜的助理,看见 A 档案只有季度总量,就拿着总量汇报去了;而 Agent 会多想一层——'还缺增长率',于是接着查 B 档案。”多步推理检索的本质,就是把“查什么”从一次性指令,变成跟随推理进度滚动更新的动态策略。

dt∗=arg⁡max⁡d∈D  sim⁡(f(Rewrite⁡(q,ht)),f(d))\displaystyle d_t^* = \arg\max_{d \in \mathcal{D}}\; \operatorname{sim}\left(f\left(\operatorname{Rewrite}\left(q, h_t\right)\right), f(d)\right)
其中 f 是文本编码器,把查询和文档映射到同一个“语义空间”,再用余弦相似度比较远近。
  1. 查询改写 Rewrite(q, h_t)把原始问题与当前已知线索合并,重写成“此刻最该查什么”的检索表达式。
    qt′=Rewrite⁡(q,ht)q'_t = \operatorname{Rewrite}\left(q, h_t\right)
  2. 语义编码 f(·)用编码器把查询和文档投影到向量空间,使语义相近的文本距离更近。
    vq′=f(qt′),vd=f(d)v_{q'} = f\left(q'_t\right), \quad v_d = f(d)
  3. 最近邻选取在向量空间中找与查询最像的文档,作为本轮证据。
    dt∗=arg⁡max⁡dvq′⋅vd∥vq′∥⋅∥vd∥d_t^* = \arg\max_{d} \frac{v_{q'} \cdot v_d}{\lVert v_{q'} \rVert \cdot \lVert v_d \rVert}

5. 信息聚合判断

李探长手里攥着两份档案:季度销售报表(有各季度数字)和区域负责人述职报告(有增长自评)。他没有草率下结论,而是把两份档案摊在桌上对比:“报表里华东区二季度环比涨 20%,三季度降到 8%;述职报告里华东区负责人说'增长平稳'。数字和说法要对得上才能采信。”

这个“多方取证、交叉印证”的过程,对应 Agentic RAG 的信息聚合与置信度评估。系统把多轮检索到的文档聚在一起,先看每份证据与问题的相关程度,再看它们是否支持同一结论。支持某结论的证据越多、越相关,该结论的置信度越高;如果证据之间矛盾,系统就要标记出冲突,不能硬答。

置信度可以看成“证据投票”的结果。设候选答案为 a,支持它的证据集合为 {d_k},每条证据的相关性得分为 rel(d_k, q),则答案的支持度与置信度为:

李探长把两份档案叠在一起:“单看一份,可能被营销话术骗了;两份一对照,泡沫就挤出来了。”Agentic RAG 也是如此——它不盲信任何一轮检索,而是把多份证据放在天平上称一称,称出来的“置信度”将决定它是否敢直接交卷,还是要回去补证。

Supp⁡(a)=∑dk⊨arel⁡(dk,q),Conf⁡(a)=eSupp⁡(a)∑a′∈AeSupp⁡(a′)\displaystyle \operatorname{Supp}(a) = \sum_{d_k \vDash a} \operatorname{rel}(d_k, q), \qquad \operatorname{Conf}(a) = \frac{e^{\operatorname{Supp}(a)}}{\sum_{a' \in \mathcal{A}} e^{\operatorname{Supp}(a')}}
这个公式的意思是:答案的可靠性由证据投票决定,就像侦探结案前先数一数有多少条线索指向同一结论。
  1. 单条证据相关性用向量相似度计算某份文档与问题的相关度,作为“这条证据的份量”。
    rel⁡(dk,q)=sim⁡(f(dk),f(q))\operatorname{rel}(d_k, q) = \operatorname{sim}\left(f(d_k), f(q)\right)
  2. 支持度累加把支持同一答案的证据份量加总,形成“得票数”。
    Supp⁡(a)=∑dk⊨arel⁡(dk,q)\operatorname{Supp}(a) = \sum_{d_k \vDash a} \operatorname{rel}(d_k, q)
  3. softmax 归一化将各候选答案的得票转为概率分布,数值越高越可信,同时所有候选的概率和为 1。
    Conf⁡(a)=eSupp⁡(a)∑a′eSupp⁡(a′)\operatorname{Conf}(a) = \frac{e^{\operatorname{Supp}(a)}}{\sum_{a'} e^{\operatorname{Supp}(a')}}

6. 自我纠错机制

李探长准备写结案报告,笔下却顿住了:“华东区'增长最健康'?可是述职报告说的是'增长平稳',和报表里 20% 的环比涨幅对不上啊。”他果断放下笔,把“华东区季度增速与区域自评矛盾”作为新线索,转头又查了一份“区域 CEO 访谈纪要”,这才发现华东区经历过一次渠道调整,统计口径不同。他修正结论后,才落笔结案。

这正是 Agentic RAG 最体现“智能”的一环:自我纠错循环。系统在生成答案后不会直接交差,而是先让一个质检环节打分——证据是否充分、是否存在逻辑矛盾、是否回答了问题。分数低于及格线,就启动“修订—重查—再生成”的循环,直到质量达标或达到最大轮数。这个循环让复杂问题下的答案可靠性明显提升,也让系统敢于承认“前面的证据不够”。

纠错循环的数学表达是一组分段规则:当质量评分 Qual(y_hat_t) 低于阈值 β 时,系统诊断当前证据的缺陷,重写查询并进入下一轮;否则停止并输出:

李探长放下笔:“侦探最值钱的本事不是永远不出错,而是发现错了肯回头再查。”自我纠错机制,就是给 RAG 装上了一个“质检员+修正器”——让机器学会对自己说“等一下,这证据对不上”,再给它一条回头路。

qt+1=Revise⁡(qt,Deficit⁡(y^t)),if Qual⁡(y^t)<β\displaystyle q_{t+1} = \operatorname{Revise}\left(q_t, \operatorname{Deficit}(\hat{y}_t)\right), \qquad \text{if } \operatorname{Qual}(\hat{y}_t) < \beta
这个公式把“承认错误”变成了显式的计算动作:先定量判断“答案够不够好”,不够好就针对缺陷修补查询,再查一轮。
  1. 质量评分把“答案与问题的相关性”和“答案被证据覆盖的充分度”相乘,得到一个综合质量分。
    Qual⁡(y^t)=rel⁡(y^t,q)⋅Cover⁡(Rt,y^t)\operatorname{Qual}(\hat{y}_t) = \operatorname{rel}\left(\hat{y}_t, q\right) \cdot \operatorname{Cover}\left(\mathcal{R}_t, \hat{y}_t\right)
  2. 缺陷诊断找出证据集中与当前答案相关性偏低的文档,标记为“薄弱证据”。
    Deficit⁡(y^t)={d∈Rt:rel⁡(d,y^t)<ϵ}\operatorname{Deficit}(\hat{y}_t) = \left\{d \in \mathcal{R}_t : \operatorname{rel}(d, \hat{y}_t) < \epsilon\right\}
  3. 查询修订把缺陷信息反馈给大模型,让它重写查询,针对薄弱点重新检索。
    qt+1=Revise⁡(qt,Deficit⁡(y^t))q_{t+1} = \operatorname{Revise}\left(q_t, \operatorname{Deficit}(\hat{y}_t)\right)

7. 架构与评估

你已经见识了李探长的办案风格,好奇地追问:“事务所要服务这么多客户,怎么保证每一位侦探都靠谱呢?”李探长带你走到一面考核墙前:“我们给每位侦探定了三项指标:结案准确率、线索有效率和出警成本。”他说,一个优秀的 Agent 不是“跑得最勤”的,而是在这三项指标间取得平衡。

对应地,Agentic RAG 的落地也需要两件事:清晰的系统架构和科学的评估体系。架构上,需要四大组件:大脑(大模型调度器)、工具(检索器、搜索 API、计算器)、记忆(对话历史与检索轨迹)、控制器(循环逻辑与终止条件)。评估上,不能只看最终答案对不对,还要看每轮检索是否真的帮上了忙、重试了多少次——这决定了系统的效率和成本。

综合评估可以写成一个加权得分,兼顾答案正确率、检索相关度和纠错成本:

李探长指着考核墙总结:“聪明的 Agent,不是猛冲猛打的多动症患者,而是知道什么时候该查、什么时候该停、发现错了肯回头的成熟侦探。”Agentic RAG 的架构,就是把这个成熟侦探的办案流程固化成了系统代码;而评估体系,保证它每个案子都经得起复盘。

Score⁡=α⋅EM⁡+β⋅1T∑t=1Trel⁡(dt,q)−γ⋅Nretry\displaystyle \operatorname{Score} = \alpha \cdot \operatorname{EM} + \beta \cdot \frac{1}{T} \sum_{t=1}^{T} \operatorname{rel}\left(d_t, q\right) - \gamma \cdot N_{\text{retry}}
其中 EM 是答案与标准答案的完全匹配率,第二项是各轮检索的相关度均值,第三项以重试次数为惩罚。
  1. 答案正确率 EM生成答案与标准答案精确一致的样本占比,衡量“最后交的卷对不对”。
    EM⁡=1N∑i=1N1[y^i=yi]\operatorname{EM} = \frac{1}{N} \sum_{i=1}^{N} \mathbb{1}\left[\hat{y}_i = y_i\right]
  2. 检索相关度均值对每一轮检索到的文档与问题算相关度再取平均,衡量“查的东西有没有用”。
    Rel⁡=1T∑t=1Trel⁡(dt,q)\operatorname{Rel} = \frac{1}{T} \sum_{t=1}^{T} \operatorname{rel}\left(d_t, q\right)
  3. 重试惩罚把重试次数 N_retry 乘以权重 γ 从总分里扣掉,倒逼系统尽量一次查准。
    Score⁡=α⋅EM⁡+β⋅Rel⁡−γ⋅Nretry\operatorname{Score} = \alpha \cdot \operatorname{EM} + \beta \cdot \operatorname{Rel} - \gamma \cdot N_{\text{retry}}

AI 应用场景

企业知识库智能问答

阶段:RAG 应用开发

解决的问题:员工问“我们公司某产品三年的定价策略和市场反馈怎么样?”,需要跨文档检索、多轮推理和对比。传统 RAG 一次检索往往漏掉关键文档,给出片面答案。Agentic RAG 自主分解问题:先查产品定价档案,发现缺市场反馈再查舆情报告,交叉验证后给出综合结论。

具体案例:某大型制造企业的内部知识库上线 Agentic RAG 后,工程师询问“过去一年产线故障率最高的设备及根因分析”,系统自动完成“检索故障记录→发现需要维修日志佐证→补全证据→生成根因报告”的完整链路,回答准确率大幅提升。

复杂投资研究报告生成

阶段:RAG 智能体应用与调优

解决的问题:研究员需要从研报、财报、新闻等多源数据中提取信息并交叉验证,手工操作耗时数小时。Agentic RAG 自动规划检索步骤、多来源取证、纠错复核,把“检索—推理—验证”从人工流程变成自动化智能体流程。

具体案例:某证券公司用 Agentic RAG 生成“某行业估值对比报告”,自动从财务数据库取数、从新闻库提取政策动态、对矛盾信息自动标记并重查,最终生成带引用来源的分析摘要,研究员只需做最后审校。

智能客服复杂工单处理

阶段:Agentic RAG 服务部署

解决的问题:传统客服机器人只会“检索—匹配”标准答案,遇到“我的订单延迟导致错过了报销期限怎么办”这类需要多轮推理的问题就卡壳。Agentic RAG 先判断是否需要查物流系统,再查报销政策文档,再结合用户历史订单,推理出可执行的解决方案。

具体案例:某电商售后系统接入 Agentic RAG 后,针对复杂投诉工单可以自动判断“信息不足→补查物流记录→核对政策→给出补偿方案”,工单一次性解决率和客户满意度均显著提升。

Python 演示

python66 行
# -*- coding: utf-8 -*-"""Agentic RAG 最小演示用关键词重叠模拟检索工具, 用规则模拟大模型的决策循环,展示: 发起检索 -> 评估置信度 -> 证据不足则改写查询重查 -> 置信达标后作答"""  class SimpleAgenticRAG:    def __init__(self, docs):        self.docs = docs        self.query_log = []        self.retry_count = 0        self.max_steps = 4        self.threshold = 0.3     def _score(self, query, doc):        q_words = set(query.split())        d_words = set(doc.split())        hit = len(q_words & d_words)        return hit / max(len(q_words), 1)     def retrieve(self, query, top_k=2):        scored = sorted(self.docs, key=lambda d: self._score(query, d), reverse=True)        return scored[:top_k]     def evaluate(self, query, evidence):        if not evidence:            return 0.0        total = sum(self._score(query, d) for d in evidence)        return total / len(evidence)     def answer(self, question, evidence):        best = max(evidence, key=lambda d: self._score(question, d))        return best.split("答案:")[-1]     def rewrite(self, question, deficit):        # 模拟把缺失的关键词补进查询的改写行为        return question + " 答案:"     def run(self, question):        query = question        for step in range(self.max_steps):            self.query_log.append(query)            evidence = self.retrieve(query)            confidence = self.evaluate(query, evidence)            if confidence >= self.threshold:                return self.answer(question, evidence), evidence, self.query_log, self.retry_count            self.retry_count += 1            query = self.rewrite(question, evidence)        return "无法给出可靠答案", [], self.query_log, self.retry_count  if __name__ == "__main__":    docs = [        "华东区 一季度 销售额 200万 答案:平稳",        "华东区 二季度 销售额 240万 增长 20% 答案:20%",        "华东区 三季度 销售额 260万 增长 8% 答案:8%",        "华北区 一季度 销售额 150万 增长 5% 答案:5%",    ]    agent = SimpleAgenticRAG(docs)    answer, evidence, log, retries = agent.run("哪个 区域 增长 最快?")    print("最终答案:", answer)    print("利用的证据:", evidence)    print("查询轨迹:", log)    print("重试次数:", retries)
目的:用 60 行代码模拟一个最小 Agentic RAG 智能体,演示“自主检索 → 置信度评估 → 改写查询重查 → 输出答案”的核心循环。
  1. def _score(self, query, doc)以“查询词被文档覆盖的比例”模拟向量检索的相关度打分。
  2. scored = sorted(self.docs, key=lambda d: self._score(query, d), reverse=True)把文档按相关度从高到低排序,取 top-k 作为本轮证据。
  3. confidence = self.evaluate(query, evidence)对检索到的证据做置信度评估,模拟“证据够不够支持回答”。
  4. if confidence >= self.threshold:置信度达到及格线就停止循环并给出答案,对应架构里的“循环终止条件”。
  5. query = self.rewrite(question, evidence)证据不足时,把缺失的关键词补进查询重查,对应“自我纠错机制”。
  6. self.retry_count += 1记录纠错重查次数,正是评估公式里要惩罚的“重试成本”。

常见误区

误区很多人觉得 Agentic RAG 就是循环里多调用几次检索——第一次没查够就再查一次。我只要写个 for 循环调用检索器,就是 Agentic RAG 了。

正解多调几次只是“量变”。真正的质变在于每一轮都由大模型根据推理状态决定:要不要查、查什么、查完够不够、要不要换方向。它像一个侦探,不是闷头跑腿,而是每跑一趟都会停下来思考下一步。没有“决策”的单纯循环,只是昂贵的朴素 RAG。

为何常见:从外部看,Agent 每一轮都调用检索工具,形态上确实像“多轮检索”,容易让人误以为循环次数是关键。实际上真正关键的是循环内部的决策与推理质量。

误区Agentic RAG 这么“聪明”,是不是任何问题都能答得比普通 RAG 好?答案应该永远更准吧?

正解Agentic RAG 也要付代价:每一轮“思考+工具调用”都增加延迟和成本,而且决策阈值调得不好时可能陷入无意义的重查循环。对简单问题,普通 RAG 反而更快更稳。就像让一位大侦探去查“现在几点”,比直接看手表更慢。工程上要“按需使用智能”,而不是一律 Agent。

为何常见:媒体宣传常把 Agent 包装成“万能解药”,小白容易把“更高级”等同于“效果一定更好”,忽视了效率与成本维度。

误区系统的置信度评估都到 90% 以上了,说明答案肯定没问题,可以直接给用户。

正解置信度是模型“自我感觉的良好程度”,不等于客观正确率。模型可能对证据充分但证据本身有误的答案给出高置信分。就像侦探对自己推理很有信心,但关键证人说了谎。生产中仍需要人工抽检、外部知识校验,并用真实标注数据校准置信度与正确率的关系。

为何常见:人天然会把“看起来很有把握”当成“是对的”,而置信度是一个基于模型内部不确定性的主观信号,两者容易混淆。

误区纠错嘛,就是让模型把答案重新生成一次。生成两遍取第二遍,就是纠错了。

正解有效的自我纠错必须包含“诊断”和“针对性修订”——先明确错误类型(证据不足?矛盾?跑题?),再针对缺陷改写检索策略。否则模型可能第二次生成时犯同一个错误。就像侦探发现线索矛盾后,必须搞清楚“哪条线人说了假话”,而不是换个姿势再问一遍同样的问题。

为何常见:“重试”是编程里的常见手法,容易想当然地迁移到 AI 生成上,忽略了生成式错误往往有系统性原因,不改变条件就不会改变结果。

误区Agent 自己会检索、会评估、会纠错,所以它一定不会再编造事实了,可以完全放心。

正解Agentic RAG 显著降低了“知识缺失型幻觉”(因为检索补足了知识),但无法完全消除“推理型幻觉”——模型仍可能在综合证据时过度发挥、因果推断错误,或对检索到的错误信息深信不疑,这就是“垃圾进垃圾出”。证据链和评估机制能过滤掉一部分问题,但不能豁免全部。生产中应设置“低置信不回答”的安全行为。

为何常见:人们倾向于把“能自我检查”理解成“不会犯错”。但自我检查依赖模型自身的判断力,判断力本身是有上限的。

面试题

Q1. Agentic RAG 与传统 RAG 最核心的区别是什么?

单选题 · easy

  • A.增加了一次检索的文档数量
  • B.引入了自主决策与推理循环← 正确答案
  • C.使用了更大的预训练模型
  • D.直接删除了检索组件

答案:B。传统 RAG 是固定的“检索→生成”两步;Agentic RAG 的核心是大模型自主判断何时查、查什么、够不够。B 正确。A 只是调整检索量,C 换模型不改变流程结构,D 删掉检索就不是 RAG 了。

Q2. Agent 的“工具调用”指的是什么?

单选题 · easy

  • A.调用系统接口安装软件
  • B.调用检索工具获取资料← 正确答案
  • C.调用驱动加速模型推理
  • D.调用编译器把代码编译

答案:B。工具调用是智能体获取外部信息或执行动作的手段,比如检索器、搜索 API、计算器。B 正确。其他选项属于系统安装、硬件加速、代码编译,都不是 Agent 在推理流程中使用的“认知工具”。

Q3. 当模型对直接回答问题信心不足时,Agentic RAG 通常会做什么?

单选题 · easy

  • A.直接随机编造一个答案
  • B.触发检索补充外部知识← 正确答案
  • C.拒绝回答用户提出的问题
  • D.让用户自己去别处搜索

答案:B。自主检索决策的触发条件就是“置信度低于阈值”,此时调用检索工具补充证据。B 正确。A 是幻觉,C 和 D 是把责任推给用户,都不符合 Agentic RAG 的自主补证逻辑。

Q4. ReAct 循环中“观察”(Observation)指的是什么?

单选题 · mid

  • A.大模型在脑海中的推理
  • B.工具执行后返回的结果← 正确答案
  • C.用户输入问题的原文
  • D.训练数据集中的一条样本

答案:B。ReAct = 思考(Thought)→ 行动(Act)→ 观察(Observe)。观察是工具执行行动后返回的信息,比如检索到的文档片段。B 正确。A 属于思考,C 是输入,D 与在线推理循环无关。

Q5. 多步推理检索中,查询改写(Query Rewrite)的目的是什么?

单选题 · mid

  • A.把查询翻译成另一种语言
  • B.让查询变的更短更简洁
  • C.融入推理轨迹使检索更精准← 正确答案
  • D.把查询内容加密防止泄露

答案:C。多步检索中,每轮把原始问题与已有线索合并改写,从而“顺着线索找下一份证据”。C 正确。翻译、压缩、加密都不改变检索的语义精准度,不是 Query Rewrite 的目的。

Q6. 关于证据聚合中的置信度评估,下列说法正确的是?

单选题 · mid

  • A.置信度越高答案就正确
  • B.置信度只由答案长度决定
  • C.证据越多答案必然越准确
  • D.置信度反映证据对答案的支持← 正确答案

答案:D。置信度由支持答案的证据相关度加权而来,反映“证据对答案的支持程度”,D 正确。A 犯了绝对化错误,置信度不等于客观正确率;B 与答案长度无关;C 忽略了证据质量和矛盾冲突。

Q7. Agentic RAG 的自我纠错机制中,“缺陷诊断”的主要作用是什么?

单选题 · hard

  • A.将错误答案替换为随机答案
  • B.找出证据不足或矛盾的具体环节← 正确答案
  • C.加大模型参数量来提升精度
  • D.把检索次数固定为十次

答案:B。纠错的第一步是诊断,明确“哪里不对”(证据缺失、矛盾、跑题),才能针对性改写查询。B 正确。A 随机替换不是纠错;C 改参数与运行时纠错无关;D 固定次数是死循环的劣化设计,不是智能行为。

Q8. 设计 Agentic RAG 的评估指标时,应综合考虑哪些维度?

多选题 · hard

  • A.最终答案的准确性← 正确答案
  • B.每轮检索的相关度← 正确答案
  • C.纠错重试的成本← 正确答案
  • D.模型参数量的大小

答案:ABC。评估应兼顾答案质量、检索效率与纠错成本:A 管“交卷对不对”,B 管“查得准不准”,C 管“有没有过度重试”。D 参数量是模型自身属性,不衡量这个系统部署方案在行为上的好坏。

Q9. 以下哪些属于 Agent 的核心机制?

多选题 · mid

  • A.大模型自主决策← 正确答案
  • B.外部工具调取信息← 正确答案
  • C.记忆与推理轨迹管理← 正确答案
  • D.随机噪声注入训练

答案:ABC。Agent 三要素是决策大脑(A)、工具调用(B)、记忆/轨迹(C)。D 噪声注入是模型训练阶段的技巧,不是 Agent 在推理时的核心机制,故选 A、B、C。

Q10. 以下哪些是 Agentic RAG 相比高级 RAG 的典型增强?

多选题 · extreme

  • A.动态决定是否需要外部检索← 正确答案
  • B.根据推理状态改写查询多轮检索← 正确答案
  • C.对证据不足主动纠错重新查← 正确答案
  • D.对所有文档建立倒排索引

答案:ABC。A 是自主检索决策、B 是多步推理检索、C 是自我纠错,这三项正是 Agentic RAG 的典型增强。D 倒排索引只是常规检索基础设施,任何一代 RAG 都可能用到,不是“智能体化”的特征,故选 A、B、C。