想象你走进一家图书馆,向管理员提问:“公司报销有哪些注意事项?”传统 RAG 系统就像一位勤快但一根筋的图书管理员:他冲到书架前,抱来一摞最相关的书,机械地拷贝几段文字塞给你——至于这些段落是不是过时了、彼此之间有没有矛盾、是否真的覆盖了你的问题,他从来不关心。而 Agentic RAG 里的“智能体”则像一位老练的侦探:他先判断你这案子值不值得翻档案,再决定去哪个档案室、要问几轮话、用什么措辞问;线索带回来后,他会交叉验证真伪、剔除假证、把最硬的证据摆在最上面,最后才写出结案报告。本篇就用“侦探办案”这条主线,带你拆解 Agentic RAG 的七个关键环节:智能体如何定位、如何做检索决策、如何多轮求证、如何动态改写查询、如何验证与重排证据,以及如何把它落地到真实系统。
掌握 Agentic RAG,你将获得“按需检索、多轮求证、证据把关”的系统设计能力,让企业知识问答从“查得到”进化到“答得准”,这正是当前 RAG 应用开发者最稀缺的进阶技能。
可视化演示
展示Agentic RAG多轮检索决策循环、动态查询改写策略、以及检索结果验证与重排机制。切换模式探索Agent驱动的智能检索流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Agentic RAG多轮检索决策循环 Agent评估检索结果质量,不足时改写查询重新检索,形成Thought-Action-Observation循环 多轮迭代直到信息充分,每轮检索扩大知识覆盖范围,提升回答准确性 loop: query → retrieve → evaluate → (rewrite → retry) | generate 多轮检索是Agentic RAG区别于传统RAG的核心
智能体定位
传统 RAG 像一个图书管理员——你问“公司报销流程”,他冲到书架前翻出《行政手册》递给你,翻到哪页算哪页,从不考虑你真正缺的是什么。而 Agentic RAG 里的“智能体”更像一位经验老到的侦探:接案后不急着翻档案,先听清楚你的诉求,判断该去哪里找、找几轮、找回来的东西是否可信。这种“先思考、再行动”的定位,就是把 RAG 从“被动翻书”升级为“主动办案”。
智能体(Agent)是大语言模型外接的一层“大脑外壳”,它把检索、工具调用、记忆这些动作封装成一个个可以决策的环节。它不仅能执行“检索”这个动作,还能决定“要不要检索”“先检索什么”。Agentic RAG 正是让这个侦探在 RAG 流水线里掌舵,把原来线性的一条流水线,变成可以来回斟酌的破案流程。
一个智能体的核心循环包含三个阶段:利用当前状态思考,选择下一个动作,执行动作后吸收观察结果并更新状态。这里的“状态”是侦探的办案笔记,“动作”是翻档案、问路人、写报告,“观察”是每次行动获得的新线索。数学上可以写成:
侦探的破案循环和智能体的循环其实是同一件事:思考→行动→观察→再思考。理解了“办案循环”,后面所有 Agentic RAG 技巧——该不该搜、搜几轮、怎么搜、怎么验——都只是侦探办案手法的具体化。
- 状态变量 $s_t$表示第 $t$ 轮时智能体已掌握的线索集合,包括已检索的文档、中间结论与待补缺口,是整个循环的“记忆中枢”。
- 决策策略 $\pi$根据当前状态决定下一步动作(检索、改写、验证或作答)的函数,是侦探的办案直觉。
- 观察与更新执行动作后获得观察结果,并把它合并进状态,推进到下一轮循环。
检索决策
侦探接案后第一件事不是冲出门,而是快速评估:这案子我凭经验直接答,还是必须查档案?Agentic RAG 的“检索决策”就是干这个的。传统 RAG 是“有问必搜”,把检索预算浪费在大量简单问题上;而带决策的 RAG 会先判断知识缺口是否存在,再决定要不要动用检索资源。
检索决策是 Agent 在 RAG 中的第一道把关动作,包含需求判断(用户是否真的需要外部知识)、检索规划(缺哪块就查哪块)、知识库选择(该查制度库还是产品库)以及检索时机(现在查还是等追问后再查)。它把“无限检索”变成了“按需检索”,像侦探判断哪些案子需要出现场、哪些电话里就能答复。
工程上最朴素的实现,是让模型对当前问题给出一个“自答置信度” $C(q)$——相当于侦探评估“我靠经验答有几分把握”。当置信度低于阈值 $\tau$ 时,判定存在知识缺口,发起检索;否则直接作答,省下时间和费用:
侦探不会对每个问路人都掏出一沓档案,该省则省。检索决策让系统把预算花在真正的知识缺口上,回答更快、成本更低,这是 Agentic RAG 在真实工程中最先兑现收益的一环。
- 置信度 $C(q)$模型对“不查资料也能答对”的自我评估分数,值域在 0 到 1 之间。
- 阈值 $\tau$判“必须检索”的临界点,是一个需要根据业务场景在验证集上标定的超参数。
- 分支判定比较置信度与阈值,低置信进入检索分支,高置信走直接作答分支。
多轮检索
侦探查案很少一圈搞定:先翻第一份档案,发现一个疑点,顺着疑点去翻第二份,直到线索闭合。多轮检索就是把“搜一次就交差”变成“搜→查缺口→再搜→收敛”的循环。单轮 RAG 最大的问题是“一问一答”——第一轮检索到的文档可能不够、互相矛盾,或压根答非所问。
多轮检索让 Agent 在每一轮结束后审视自己的“办案笔记”:现有证据能不能支撑最终回答?缺什么就补什么,产生新的查询继续检索。这个迭代过程在数学上可以表示为第 $t$ 轮拿查询 $q_t$ 去检索得到文档集 $D_t$,再根据 $D_t$ 暴露的缺口精炼出下一轮查询:
多轮绝不是无限循环,否则成本会失控。收敛条件通常是看“信息增益”:如果这一轮检索几乎没有带回新文档,说明线索已经榨干,该收队了:
侦探搜证的原则是“够破案就收手”。Agentic RAG 同样在信息增益低于阈值时收队,既保证证据链完整,又不浪费办案预算,这就是多轮检索与“死循环”的本质区别。
- 第 $t$ 轮检索用当前查询 $q_t$ 从知识库取回文档集合 $D_t$,完成一次“翻档案”。
- 查询精炼根据 $D_t$ 暴露的信息缺口改写或追问,生成下一轮查询。
- 收敛判断计算新增文档占本轮检索结果的比例 $\rho_t$,低于阈值 $\varepsilon$ 即终止循环。
动态查询改写
侦探问路时会换说法:问大爷用“老车站”,问年轻人用“地铁站老出口”。同一个意图,对不同“线人”要用不同的话。动态查询改写正是这个道理:用户提问往往简短、口语化、隐含大量背景,直接拿去检索,术语不匹配,命中率很低。
Agent 在发起检索之前先改写查询:补齐实体名称、把口语映射到知识库里的标准术语、把模糊的大问题拆成几个具体的子问题。改写不是把句子变长,而是把“潜台词”显式化。比如“我怎么报销差旅”改写为“差旅报销流程 + 交通票据要求 + 住宿标准上限”三个子查询,分别检索再汇总。
一种典型策略是子问题分解:把大问题 $Q$ 切成 $n$ 个小问题,各自检索各自回答,最后把答案整合成完整结论:
一个会换问法的侦探,撬开的信息比埋头翻字典的图书管理员多得多。动态查询改写让 Agentic RAG 在口语化、碎片化的真实用户问题面前命中率明显提升,是性价比很高的优化点。
- 意图解析识别用户含糊说法背后的真实信息需求,比如“那个药”到底指哪种药。
- 子问题分解按实体、条件、步骤把查询拆为互不重叠、覆盖完整的子问题集合。
- 答案聚合把各子问题的检索结果与回答整合成一份结构完整的最终答案。
结果验证
侦探最怕假线索:证人说“昨晚 9 点看到嫌疑人”,监控却显示他 8 点就在外地。Agentic RAG 同样会遇到互相矛盾的文档——这时候不能照单全收。结果验证就是 Agent 对检索结果做的“交叉问询”:检验每条候选与问题的相关性、与已知事实的一致性,发现矛盾就当场标记。
验证的逻辑很像给线人的证词打分:既和案子相关、又和其他硬证据对得上的证词才记录在案,无关或矛盾的证词直接作废。这样做的直接好处是,生成模型拿到的是“干净的证据链”,而不是一锅互相打架的乱炖。
技术实现上,验证可以形式化为对每个候选文档 $d$ 的判定——相关性分数不低于阈值 $\gamma$,且冲突检测结果为 0,才允许进入最终上下文:
侦探结案前会反复核对物证链,Agentic RAG 也在生成答案前先清理“矛盾口供”。这一步直接决定了最终回答的可靠性,是高级 RAG 与玩具级 RAG 拉开差距的关键。
- 相关性校验计算文档与当前问题的主题匹配程度,达到阈值才算与本案有关。
- 事实一致性检查文档内容与已确认证据是否存在冲突,冲突记为 1,一致记为 0。
- 证据筛选只有“相关且无冲突”的文档被保留,通过筛选的文档汇入最终上下文。
重排优化
破案报告里,侦探会把证据按可信度排好:物证排在最前,目击证词次之,路边传闻最后。重排(Rerank)就是给检索回来的文档重新排序,把最该被生成模型看到的证据放到最前面。初检(比如向量相似度或 BM25)追求召回速度,排序比较粗糙;重排阶段用更强、也更慢的模型对“查询-文档”对重新精打分。
重排的实现思路是“先海选、再精排”:轻量检索器快速捞出候选,重排器逐条精评。最常用的融合打分,是把轻量检索分与深度重排分按权重相加——用 $\alpha$ 来控制谁说了算:
侦探把最关键物证摆在桌面中央,生成模型自然照着重点写。重排是投入产出比很高的一环——不用换检索器,只是排序更聪明,答案质量就能有明显提升,还能顺带压缩进上下文的证据数量。
- 轻量检索分 $s_{\text{BM25}}$基于词法重叠的快速相关性得分,计算快但不懂语义。
- 深度精排分 $s_{\text{cross}}$交叉编码器把查询和文档整体拼接建模,捕捉深层语义关系。
- 加权融合$\alpha$ 在 0 到 1 之间调节两类分数的占比,工程上通过小规模标注数据调优。
系统集成实践
把侦探的所有能力拼成一支队伍——决策、改写、多轮检索、验证、重排——这些模块怎么组装、谁先谁后、花多少预算,就是系统集成实践。一个典型的 Agentic RAG 流程是:问题进来先做检索决策,进入循环体(改写→检索→验证→缺口判断),循环到收敛后重排,最后交给生成模型作答。
工程上需要几个关键配套:编排框架负责把循环体串起来(相当于给侦探配一个调度台);共享记忆负责跨轮跨任务传递“办案笔记”;成本控制对工具调用次数设上限,防止单次问答烧掉过多预算。评估也不能只看最终回答漂不漂亮,还要盯检索链路的健康度,常用的是一组配对指标——回答质量用 F1,系统开销用工具调用总次数:
一支训练有素的侦探队,需要明确的组织架构和结案标准。Agentic RAG 也一样——流程编排、记忆、成本、评估四件套齐全,才能真正从“Demo 惊艳”走向“生产可用”。
---
- 精确率与召回率精确率衡量回答里正确信息的纯度,召回率衡量标准答案被覆盖的比例,两者常常此消彼长。
- F1 调和平均当精确率与召回率难以两全时,F1 用一个分数给出综合平衡值。
- 工具调用成本多轮检索中所有工具调用次数之和,直接决定延迟和费用上限。
AI 应用场景
企业知识库智能问答客服
阶段:检索决策 + 多轮检索 + 结果验证
解决的问题:传统客服 RAG 对“怎么申请年假”这类高置信问题也强制检索,延迟高、成本高;对“异地社保转移需要哪些材料”这种多条件问题,首轮检索常常漏掉关键条款。Agent 先判断置信度,低才检索;检索后逐条核对条款一致性,剔除过期政策,把可追溯的证据链传给生成模型。
具体案例:某 SaaS 公司将智能体接入工单系统,员工问“离职补偿怎么算”,Agent 先拆成“N+1 规则”“月薪基数”“个税”三个子问题,分别检索制度文档并验证版本号,最后按证据重排生成答复,工单处理量下降约 40%。
金融投研多源证据交叉验证
阶段:结果验证 + 重排优化
解决的问题:研报、公告、新闻对同一公司的描述常有矛盾,传统 RAG 会把冲突文本拼进答案,误导决策。Agent 对多源文档做冲突检测,只保留与最新公告一致的证据,并按权威度重排,标注证据来源和时间戳。
具体案例:投研助手收到“某公司 Q3 利润是否超预期”,Agent 检索公告与券商点评后,发现一份三个月前的旧研报与最新财报数据冲突,将其剔除后生成结论,并附上两处交叉印证的最新证据链接。
医疗健康科普问答
阶段:动态查询改写 + 检索决策
解决的问题:用户提问口语化、有歧义(如“吃这个药能喝酒吗”),直接检索命中率低,且涉及安全信息不能乱答。Agent 先把问题改写为“药物 X 与酒精的相互作用”,再检索权威药品说明书,验证后方可作答;置信度不足时反过来追问澄清。
具体案例:在线问诊预问答机器人对“感冒药和咖啡”类问题,拆解为“成分禁忌”与“个体差异”两个子检索,合并权威信源输出风险提示,并明确标注“不能替代医生建议”。
Python 演示
# -*- coding: utf-8 -*-# 迷你 Agentic RAG:模拟侦探办案循环,演示检索决策、多轮检索与验证import re CORPUS = { "doc1": "Transformer 依赖自注意力机制并行处理序列数据。", "doc2": "RAG 将检索器与生成器结合以回答知识密集型问题。", "doc3": "Agentic RAG 由智能体自主决定检索时机与策略。", "doc4": "香蕉是黄色水果,富含钾元素。", "doc5": "倒挂金钟喜凉爽湿润环境,忌暴晒。",}TOKENS = {d: set(re.findall(r"[\w\u4e00-\u9fff]+", text)) for d, text in CORPUS.items()} class AgenticRAG: def __init__(self, threshold=0.35, max_rounds=3): self.threshold = threshold self.max_rounds = max_rounds self.claimed_count = 0 def confidence(self, question): words = set(re.findall(r"[\w\u4e00-\u9fff]+", question)) return min(1.0, len(words) / 10.0) def retrieve(self, question, top_k=2): q_tokens = set(re.findall(r"[\w\u4e00-\u9fff]+", question)) scored = [] for doc_id, tokens in TOKENS.items(): overlap = len(q_tokens & tokens) scored.append((overlap, doc_id)) scored.sort(reverse=True) return [doc_id for _, doc_id in scored[:top_k]] def validate(self, question, doc_ids): kept = [] for doc_id in doc_ids: self.claimed_count += 1 if "RAG" in CORPUS[doc_id] or "智能" in CORPUS[doc_id]: kept.append(doc_id) return kept if kept else doc_ids def rewrite(self, question): if "检索" not in question: return question + " 与检索 RAG" return question + " 追加子问题" def answer(self, question): seen = set() for _ in range(self.max_rounds): if self.confidence(question) >= self.threshold: return "直接作答:置信度足够,无需检索。" q = self.rewrite(question) doc_ids = self.retrieve(q) valid = self.validate(question, doc_ids) new_docs = [d for d in valid if d not in seen] seen.update(new_docs) if not new_docs: break question = q + " 继续追问" if seen: return "综合证据:" + " ".join(CORPUS[d] for d in list(seen)[:2]) return "未找到可用证据。" if __name__ == "__main__": agent = AgenticRAG() for q in ["什么是 RAG?", "今天天气如何?", "Agentic RAG 有何特点?"]: print("Q:", q) print("A:", agent.answer(q)) print("验证次数:", agent.claimed_count)
TOKENS = {d: set(re.findall(...)) for d, text in CORPUS.items()}把每篇文档切成词集,相当于给书页提前做好索引标签。def confidence(self, question):侦探评估“我有多大的把握直接回答”,词数越少把握越低。if self.confidence(question) >= self.threshold:把握足够高就走捷径直接答,省掉检索开销。q = self.rewrite(question)把握不足就先换个说法再出门找线索,对应动态查询改写。for doc_id, tokens in TOKENS.items():挨个知识库文件比对与问题的重合词,模拟轻量检索。overlap = len(q_tokens & tokens)重合词越多,该文档与问题越相关,排进候选名单。valid = self.validate(question, doc_ids)对候选取回的证据做“交叉问询”,只留与主题相关的。if not new_docs: break新线索没有了,说明证据链已经榨干,按收敛条件收队。return "综合证据:" + ...把验证过的证据拼成最终答案,对应“结案报告”。
常见误区
误区很多人以为系统名字里挂上“智能体”或"Agent",检索质量就会自动起飞,不需要再调检索器、重排器和验证逻辑。
正解Agent 只是“决策外壳”,它决定何时查、怎么查,但查回来的内容质量仍取决于底层的知识库、分词、索引和重排模型。侦探再聪明,如果线人全是假情报,照样破不了案。正确的姿势是先把基础检索调到及格线,再叠加 Agent 决策能力。
为何常见:Demo 和宣传稿总把智能体渲染成“万能大脑”,让人误以为一个循环就能包治百病,忽略了木桶效应。
误区有人认为既然叫“多轮”,那就要一直轮询到上限,轮数越多证据越全,回答越稳。
正解多轮检索必须设置收敛条件——新增文档占比或信息增益低于阈值就停。盲目加轮不仅成本成倍上涨,还可能把无关噪音卷进来,反而拉低答案质量。侦探不会把全城每条街都搜三遍才肯结案。
为何常见:人们把“努力”和“效果”画等号,在检索上误以为调用次数越多越尽责,忽略了边际收益递减。
误区新手以为改写查询就是往原句上堆同义词和修饰语,词数越多越精确。
正解好的改写是“去噪增信”:把隐含意图显式化、把口语映射到知识库术语、按需拆分子问题,而不是无脑加词。问“那个红衣服的”不如直接问“穿红色连衣裙的女士”,但没人会把整个故事重讲一遍。
为何常见:改写结果的提升往往来自“补全缺失信息”而非“增加冗余词”,但人眼容易被更长更复杂的句子唬住。
误区有人把结果验证做成让大模型口头评价一句“这条证据可信吗”,觉得这样就算完成了校验。
正解可靠的验证需要结构化、可复现的规则或评分:相关性阈值、与已知证据的一致性比对、来源时效检测、矛盾计数。LLM 的模糊判断可以作为其中一个信号,但不能替代可度量的校验逻辑。侦探不能只凭直觉相信证人,要有物证链和记录。
为何常见:LLM 什么都能聊两句,让人误以为“能评价”就等于“能验证”,忽略了工程上对稳定性和可审计性的要求。
面试题
Q1. Agentic RAG 与传统 RAG 最本质的区别是?
- A.使用了更大的生成模型
- B.智能体自主决定检索策略← 正确答案
- C.完全取消了向量数据库
- D.只能处理单轮问答
答案:B。传统 RAG 是固定流水线“有问必搜”,而 Agentic RAG 让智能体按需决策检索时机与策略。A 只是模型规模问题,C、D 与 Agentic RAG 的定义矛盾。类比:图书管理员vs自己判断要不要翻档案的侦探。
Q2. 模型对当前问题自答置信度很高时,智能体最合理的动作是?
- A.仍然发起多轮检索以防万一
- B.直接作答并跳过检索以节省成本← 正确答案
- C.强制改写查询后再发起检索
- D.将问题转交给另一个模型
答案:B。检索决策的核心是“按需检索”,置信度高说明知识缺口小,直接作答最省成本。A、C 浪费预算,D 无依据。就像侦探觉得凭经验就能答的案子,不必兴师动众出现场。
Q3. 以下哪些信号可用于多轮检索的收敛判断?
- A.新增文档占比低于阈值← 正确答案
- B.信息增益趋近于零← 正确答案
- C.连续多轮证据没有变化← 正确答案
- D.随机等待一段固定时长
答案:ABC。收敛的本质是“线索已榨干”。A、B、C 都反映新增信息不足,可以触发停止;D 是主观等待,与证据无关,不是有效的收敛信号。对应公式 $\rho_t < \varepsilon$ 的工程直觉。
Q4. 把“Transformer 有哪些改进”拆成两个子问题分别检索,属于哪种改写策略?
- A.同义词扩展策略
- B.术语映射策略
- C.子问题分解策略← 正确答案
- D.否定句式处理
答案:C。一个大问题被拆成多个子问题再聚合答案,正是动态查询改写中的“子问题分解”。A 是换同义词,B 是术语对齐,D 处理否定表达,均不符合。
Q5. 验证阶段发现候选文档与已采纳证据矛盾,应该?
- A.直接剔除该条候选证据← 正确答案
- B.保留并提高它的权重
- C.放在答案末尾使用
- D.跳过验证直接生成
答案:A。矛盾证据会污染生成结果,必须剔除并记录原因,这正是“交叉问询”的意义。B、C 会加重矛盾,D 直接放弃了验证环节。侦探不会把互相打架的证词同时写进结案报告。
Q6. 重排融合公式中 α 的作用是?
- A.平衡两种检索得分的比重← 正确答案
- B.控制生成文本的输出长度
- C.表示候选文档的个数
- D.表示检索执行的轮数
答案:A。公式 $s = \alpha s_{\text{BM25}} + (1-\alpha) s_{\text{cross}}$ 中,α 调节轻量检索分与深度精排分的权重。B、C、D 都与公式含义无关。
Q7. Agentic RAG 中记忆(Memory)模块的主要作用是?
- A.保存用户账号与登录密码
- B.记录已获线索与待补缺口← 正确答案
- C.缓存全量文档与参数
- D.替代向量数据库索引
答案:B。智能体的状态记忆相当于“办案笔记”,在多轮检索中记录已获证据与信息缺口,驱动下一步行动。A 是安全范畴,C、D 混淆了记忆与存储组件的职责。
Q8. 下面哪些是 Agentic RAG 中智能体的关键动作?
- A.判断是否需要发起检索← 正确答案
- B.动态改写并拆分查询← 正确答案
- C.验证证据之间的一致性← 正确答案
- D.对图像做随机裁剪
答案:ABC。检索决策、动态改写、结果验证是 Agentic RAG 的三大核心动作;D 是图像处理操作,与检索增强生成无关。对比侦探的查案流程即可判断。
Q9. 评估 Agentic RAG 系统时,最应关注的一组指标是?
- A.回答准确率与工具调用成本← 正确答案
- B.页面加载速度与首屏时间
- C.GPU 温度与显存占用率
- D.模型参数量与训练时长
答案:A。Agentic RAG 的核心权衡是“质量 vs 成本”:准确率(如 F1)衡量回答质量,工具调用次数衡量系统开销。B 是前端指标,C、D 是基础设施指标,不能直接反映检索链路健康度。
Q10. 多轮检索发现信息缺口后,智能体可以采取哪些行动?
- A.改写查询后再次检索← 正确答案
- B.追加澄清子问题← 正确答案
- C.切换另一个知识库← 正确答案
- D.清空全部历史记录
答案:ABC。面对信息缺口,可以改写查询、追加子问题或更换数据源来补证;D 清空历史会丢失已有线索,违背状态记忆的设计初衷。侦探发现线索断了,只会换方向追查,不会烧掉办案笔记。