想象一位经验丰富的老师正在批改学生的论述题。她手里有一份参考答案(检索结果),但她不会机械地照抄答案打分——她会先问自己几个问题:“这份参考答案贴合题目吗?” “信息够新、够全吗?” “还是说,我需要再去查阅补充资料?” 如果发现参考答案明显跑题或过时,她会重新查找更准确的资料,而不会硬着头皮用错误的标准答案去评判学生。 传统的检索增强生成(RAG)就像一位拿到标准答案就直接念的助教——不论学生问什么,他都照着手头那份资料回答,资料过期了、答非所问了也不自知。而 Self-RAG 和 CRAG 的核心理念,正是让 AI 学会“老师式的自我评估”:在回答之前先评审检索结果的“相关性”和“充分性”,质量不足就主动发起二次检索或调用备用信息源。这节课,我们就来拆解这套让 AI 从“被动背答案”进化到“主动核答案”的思维框架。

岗位关联

掌握 Self-RAG 与 CRAG 的核心逻辑,意味着你能够构建具备“自我纠错”能力的 AI 系统——在检索质量失控时自动拦截并修正,这是迈向可靠、可信 AI 应用的关键一步。

目录
  1. 可视化演示
  2. 核心思想:从“拿来即用”到“先审后用”
  3. 传统RAG的局限:照本宣科的“助教困境”
  4. Self-RAG原理:反思Token引导的智能检索决策
  5. CRAG机制详解:低置信度时的“网络求生”
  6. 方法对比:两种风格的“自我审核员”
  7. 应用场景:三位“AI质检员”的上岗实录
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示主成分分析(PCA)的核心过程:计算数据协方差矩阵的最大特征向量,将高维数据投影到主成分方向实现降维,支持散点图与投影模式切换。

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

主成分方向 紫色线为第一主成分(PC1),方差最大方向 辅色线为第二主成分(PC2),正交方向 Var = λ1/(λ1+λ2) = 80%

核心思想:从“拿来即用”到“先审后用”

回到那位批改作业的老师。在她动笔打分之前,她会快速浏览一遍参考答案,判断这份答案是否足够好——题目问的是“论述辛亥革命的影响”,而参考答案里写的是“辛亥革命的过程”,这显然文不对题。她会怎么做?大概率是合上这份资料,去书架上找另一本书,或者去资料室调取更准确的档案。这个“先判断、再决定是否使用”的动作,就是 Self-RAG 和 CRAG 的灵魂。

传统 RAG 系统就像一台老式自动售货机:你投币(提问),它就从固定轨道里掉出一罐饮料(检索结果),不管这罐饮料是不是过期了、是不是你想要的牌子。而 Self-RAG 和 CRAG 系统则换了一位“智能售货员”:它拿到你的需求后,会先看看货架上有什么,评估一下这些货品与你的需求的匹配度——匹配才递给你,不匹配就转身去仓库(二次检索)找新的货源。

技术层面,Self-RAG 的核心是引入了一组“反思 Token(Reflection Token)”——这是 Transformer 输出词汇表里的一组特殊标记,模型在生成答案前先输出这些标记来表达对检索结果的“态度”。例如 Retrieve 表示“需要检索”,ISREL 表示“检索结果与问题相关”,ISSUP 表示“答案有足够证据支持”。这些特殊 token 让模型像老师写评语一样,对检索质量进行显式标注。

在实际推理时,模型并不需要穷举所有反思 token。它先在每个解码步骤预测最合适的 token——比如预测 ISREL 为“相关”——再以高频 token 为条件继续生成正文。这样就实现了“先评估、后作答”的互动决策链。

回顾售货员的比喻:Self-RAG 的反思 token 就是售货员内心不断评估的一句话:“这罐饮料对得上顾客的需求吗?对不上得赶紧换一个。” 它把“评估”动作直接嵌入了模型的每一次生成,让 AI 不再是张口就来,而是在开口前先在心里打个草稿。

P(y∣x)=∑t∈TP(t∣x)×∏i=1NP(yi∣x,t,y<i)P(y|x) = \sum_{t \in \mathcal{T}} P(t|x) \times \prod_{i=1}^{N} P(y_i | x, t, y_{<i})
这个公式表示:模型生成回答时,先判断选择一个反思 token t,再在 t 的约束下逐词生成答案。相当于老师先写“此题答案可用”的评价,再开始正式批注。
  1. 理解变量$x$ 是用户输入的问题,$y$ 是模型最终生成的回答,$t$ 是反思 token,$\mathcal{T}$ 是所有反思 token 的集合。就像把“问题”和“答卷”放在桌上,老师先圈定要用哪些评分标准。
  2. 评估输出概率$P(t|x)$ 表示给定问题后,模型选择特定反思 token 的概率。这是模型在判断“这个问题需不需要检索”“当前检索结果够不够好”,对应老师判断“这份参考答案是否可用”。
  3. 条件生成回答$\prod_{i=1}^{N} P(y_i | x, t, y_{<i})$ 是在反思 token 的约束下逐词生成回答的联合概率——老师确定了评价标准后,就按这个标准一步步写出详细批语。

传统RAG的局限:照本宣科的“助教困境”

想象一位刚入职的助教,领导交给他一本厚厚的标准答案手册,嘱咐他说:“学生问什么,你就照着这本手册念。” 第一天,学生问手册上有的问题,他答得不错;第二天,学生问了一个手册上没写的新问题,他依然机械地翻动手册,念了一段毫不相关的内容——因为他根本没有“手册里没有答案”这个意识。这就是传统 RAG 的典型困境。

传统 RAG 的流程是简单的三段式:检索(Retrieve)→ 增强(Augment)→ 生成(Generate)。系统从向量数据库中召回 top-k 个相关文档,把它们拼进 prompt,再让语言模型生成回答。整个过程是“单程流水线”——没有一个环节会停下来问:“我召回的这些文档真的有用吗?” 正如助教从不质疑手册的正确性。

这个设计有三个致命短板:

  • 一次性检索:检索动作只发生一次,如果第一轮召回的文档就是噪音,系统没有自我纠错的机会;
  • 无反馈机制:生成器对检索质量的好坏没有任何信号反馈,好文档坏文档被一视同仁地拼进 prompt;
  • 噪音敏感:当检索文档与问题主题偏移时,模型会被错误信息“带偏”,产生看似流畅实则错误的回答。

从概率角度看,传统 RAG 的生成目标是纯粹最大化似然 $P(y|x, D)$,其中 $D$ 是检索文档集合。这个目标函数里没有对 $D$ 质量的任何度量——质量高低全凭运气。好比助教的打分 只取决于标准答案手册的内容,而不取决于手册本身是否正确。

那么如何打破这个死局?答案是为系统增加一个“评估-再检索”的反馈回路。这正是 Self-RAG 和 CRAG 的出发点——先让模型批判自己:“我眼前这份资料真的能解答这道题吗?” 不能,就立即启动补救机制。

回到助教的故事,改变后的助教多了一个习惯:翻开手册前,先快速扫一眼目录和章节标题,确认找对了章节才开念。找不到对口内容时,他会主动去隔壁办公室问资深教师(相当于二次检索)。这份“自觉”正是传统 RAG 升级为 Self-RAG 或 CRAG 后获得的。

PRAG(y∣x)=∏i=1NP(yi∣x,y<i,D)P_{RAG}(y|x) = \prod_{i=1}^{N} P(y_i | x, y_{<i}, D)
这个公式里决策变量只有 $x$ 和 $D$,没有“是否信任 $D$”的自由度——生成器只能被动接受检索结果。
  1. 认识变量$x$ 是用户问题,$y_{<i}$ 是此前已生成的词序列,$D$ 是检索回来的文档集合。三个变量缺一不可,就像助教打分需要题目、已写的批语和标准答案手册三样东西。
  2. 理解为固定条件$D$ 在公式中是一个固定条件而非可变量——它一旦检索回来就锁死了,无论好坏都会参与后续所有生成步骤。这好比助教一旦翻开手册某一页,他就只照着这一页念,不会跳页。
  3. 缺失的质量项整个连乘式里没有 $P(D|x)$ 这样的质量评估因子——模型压根没有表达“这本文册是不是适合当前问题”的渠道。这就是“单向流水线”的数学本质。

Self-RAG原理:反思Token引导的智能检索决策

现在我们来围观这位“升级版”老师具体是怎么工作的。假设她在批改一道历史论述题,手里拿到了初始的参考答案。与以往不同,她不会立刻动笔,而是先在心中默问三个问题:第一,“这个学生的题目我需要查资料吗?还是凭常识就能判断?” 第二,“手头这份参考答案跟题目相关吗?” 第三,“这份答案的依据充分吗?” 这三个问题分别对应 Self-RAG 框架中三类反思 token 的功能。

Self-RAG 是 2023 年发表的一种自反思式检索增强生成框架(论文标题为 Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection)。它的核心创新在于通过训练一个批判模型(critic model)来生成反思 token,从而让生成过程动态决定:是否检索(Retrieve token)、检索文档与问题的相关性(ISREL token)、回答是否被检索文档支持(ISSUP token)、以及回答对用户问题的满意度(ISUSE token)。

  • Retrieve:模型预测当前问题是否需要检索外部知识。如果模型自信满满(比如问“1+1等于几”),它可以输出 NoRetrieve 直接作答;反之输出 Retrieve 触发搜索。
  • ISREL:检索到文档后,模型评估文档与问题是否相关。不相关则触发“二次检索”——换一批关键词,重新召回。
  • ISSUP / ISUSE:在生成答案时验证证据充分性和答案实用性,确保生成的内容有坚实的依据。

训练过程分为两个阶段:先训练生成模型(generator)学会在被检索文档的支撑下生成回答;再训练批判模型(critic model)学会输出上述反思 token。推理时,模型在每个解码步骤并行生成多种候选片段,并用反思 token 的分数对这些候选片段打分排序,选出最高的那段输出。

Self-RAG 的决策过程实际上是动态的:如果第一个检索到的文档 ISREL 得分低,模型可以再次采样新的查询词,重新执行检索;如果所有文档都相关度低,模型可以输出“资料不足”回应,而不是强行编造。这种动态机制极大地提升了回答的可信度。

回到老师批改作业的比喻:Self-RAG 就像是给老师配备了一位“复核员”。老师每写一条评语,复核员就站在旁边对照评分标准打钩打叉——不相关就打回重写,证据不足就标注“待补充”。老师与复核员之间的往复对话,就是模型内部生成与批判的博弈,最终交付的高分答卷往往更扎实、更有依据。

Score(y)=∏i=1∣y∣Pgen(yi∣x,y<i,D)×∏j=1MPcritic(rj∣x,y)\text{Score}(y) = \prod_{i=1}^{|y|} P_{\text{gen}}(y_i | x, y_{<i}, D) \times \prod_{j=1}^{M} P_{\text{critic}}(r_j | x, y)
这个公式是 Self-RAG 的推理打分机制:候选回答的最终得分由生成概率和反思 token 概率共同决定,相当于老师既看批语写得顺不顺,也看每条批语是否踩中评分标准。
  1. 候选片段得分$P_{\text{gen}}(y_i | x, y_{<i}, D)$ 是生成模型产出候选片段 $y$ 中每个词的概率,反映了答案的流畅度和对检索文档 $D$ 的利用程度。对应“老师的批语文字本身是否通顺”。
  2. 反思打分因子$\prod_{j=1}^{M} P_{\text{critic}}(r_j | x, y)$ 是批判模型给这个候选片段打出的反思 token 概率连乘。这里的 $M$ 个反思 token 涵盖相关性、支持度、有用性等维度,每个 token 像一条评分标准。
  3. 两者相乘取最优最终得分是生成概率和反思概率的乘积。系统对每个候选片段打分后,取分数最高的作为最终输出。这好比老师给几位候选批语各打一个总分,挑最高分的誊写在作业本上。

CRAG机制详解:低置信度时的“网络求生”

场景切换到一位正在准备公开课的年轻教师。她开始试讲时,发现自己准备的教案里有一段关于“新课标改革”的描述可能过时了——她对此的把握度不高。此时她做出了一个果断决定:暂停试讲,打开电脑快速搜索最新政策文件。这种“当我不确定,我就去查证”的行为模式,正是 CRAG(Corrective Retrieval Augmented Generation)设计的精髓。

CRAG 的出发点是:与其让模型对质量不佳的检索文档假装自信,不如显式地评估检索结果的可信度,并在信任不足时执行“纠正动作”。CRAG 的思路用精确的“置信度评估器”(confidence evaluator)来判断检索到的各个文档与用户问题的相关程度,然后根据评估结果走三条路径之一:

  • 高置信度:当评估器判定检索文档与问题高度相关时,系统直接采用原文档生成回答,不浪费计算资源;
  • 模糊置信度:文档部分相关、但还不够充分时,系统通过“知识条带提取”(knowledge strip extraction)从文档中抽取最关键的片段,过滤掉不相关段落;
  • 低置信度:评估器判定检索结果基本不可用时,系统触发“备选检索动作”——对大语言模型(LLM)而言,这一步常是调用网络搜索(web search)API,用更宽泛的查询词从全网获取大量互补的文本片段,再从中精炼出高价值的补充信息。

CRAG 的置信度评估器本身是一个轻量级判别模型,它接收用户问题与检索文档的拼接序列,输出一个相关性分数。论文中使用了一个基于 T5-large 的微调模型,可以理解为一个“相关性打分器”。

触发二次检索的判定逻辑非常直接:

值得一提的是,CRAG 的三档设计非常契合“最小成本纠正”原则:能直接用时绝不折腾,部分可用时只做裁剪,完全不可用才劳师动众去搜全网。比如政策评估助理发现一份 2018 年的地方政策文件,评估器认为与当前问题相关性中等——系统不会直接使用,也不会立刻全网搜索,而是先提取文件中与问题直接相关的条款,筛除冗余背景段落,再用提取出的“知识条带”辅助生成。

回到公开课老师的比喻:CRAG 就是她的备课辅助系统。当她不太确定教案质量时,系统帮她标出核心段落(知识条带提取);当她确认教案不可靠时,系统自动弹出搜索引擎帮她找最新资料。这种“能省则省、当用则用”的策略,让每一次检索资源都花在刀刃上。

Action={Useif s≥τhighExtractif τhigh>s≥τlowSearchif s<τlow\text{Action} = \begin{cases} \text{Use} & \text{if } s \geq \tau_{\text{high}} \\ \text{Extract} & \text{if } \tau_{\text{high}} > s \geq \tau_{\text{low}} \\ \text{Search} & \text{if } s < \tau_{\text{low}} \end{cases}
这个分段函数描述了三档决策:分数高直接采用、中档做抽取、低档触发网页搜索。就像老师对教案的把握程度:很确定(直接用)、有点不确定(划重点)、完全没把握(去查资料)。
  1. 计算分数$s$ 是置信度评估器打分出的相关性分数,通常归一化到 [0,1]。它是“教师对当前资料把握度”的数值化表现。
  2. 设定双阈值$\tau_{\text{high}}$ 和 $\tau_{\text{low}}$ 是两个预置的超参数阈值,分别定义“高度信任”和“低度信任”的分界线。系统调控的旋钮就在这两个数字上——阈值偏高,更谨慎、更容易触发搜索;阈值偏低,更高效但风险增加。
  3. 三档决策映射$s \ge \tau_{\text{high}}$ 走 Use 路径直接用原文档;分数居中走 Extract 路径做条带提取;分数低于 $\tau_{\text{low}}$ 走 Search 路径触发网页搜索。这种离散化设计让系统有了“分级响应”的纠错策略。

方法对比:两种风格的“自我审核员”

同一所学校的两位老师,批改相同的一份作业,风格可能完全不同。王老师喜欢在批改前先做三步自我质询——“这道题需要查资料吗?”“资料相关吗?”“答案有依据吗?” 然后才动笔;李老师则迅速扫一眼资料,心里按可信度打个分——“大概八分准,直接改;六分准,画画重点;三分准,上网查。” 前者是 Self-RAG 的风格,后者是 CRAG 的风格。

两者的核心差异体现在三个维度:

| 对比维度 | Self-RAG | CRAG |

|---------|----------|------|

| 决策时机 | 生成前和生成中均做决策(每个解码步骤都可能触发检索) | 只在生成前对检索集做一次置信度评估 |

| 反思信号 | 多类反思 token(是否检索、相关性、支持度、有用性) | 单一置信度分数(三档离散化) |

| 二次检索渠道 | 重新构造查询词,走内部检索器 | 调用外部网页搜索 API |

| 训练方式 | 需要对生成器和批判模型做专门的微调训练 | 只训练一个轻量级置信度评估模型 |

| 灵活度 | 高——每一步都能动态决定用不用新文档 | 中——评估一次后走三档中的一档 |

从架构层面看,Self-RAG 对模型本体的改造更深——它直接改变了语言模型的解码机制,把“评价”内嵌为输出的一部分;CRAG 则更像一个外挂的“纠错模块”,用一个小评估器包裹原有的生成模型。因此,Self-RAG 适合需要“边想边查”的复杂推理任务(比如多跳问答),而 CRAG 适合“查一次、定生死”的简单检索场景(比如事实型问答)。

从计算成本角度分析,Self-RAG 的解码开销远高于传统模型——每步都要计算反思 token 的分数;CRAG 的开销则主要在置信度评估器和可能的网页搜索上。论文实验表明,Self-RAG 在 PopQA 和 PubHealth 等长尾知识基准上比传统 RAG 有 10-20% 的准确率提升,而 CRAG 在复杂事实校验类任务上也展示出对噪音的强鲁棒性。

回到两位老师的比喻:王老师(Self-RAG)的批改速度稍慢,但每一句批语都经过反复推敲;李老师(CRAG)的批改速度更快,凭借“快准狠”的信赖度判断也很高效。选择哪位老师,取决于你是要处理一份需要深度思考的论文,还是一次快速判断是非的测验——现实中优秀的 AI 系统往往两者结合,先用 CRAG 做粗筛,再用 Self-RAG 做细节反思。

应用场景:三位“AI质检员”的上岗实录

现在,我们跟随三位采用 Self-RAG / CRAG 技术的“AI 质检员”,看看他们在真实职场中的亮眼表现。他们虽然身处不同行业,但工作内核惊人一致:不盲信检索结果,先评估、再决定是否使用。

第一位质检员就职于某省级政策研究机构。公务员小李每天要起草大量政策解读文件,以前他靠关键词搜索欧盟和国内政策文档,结果往往搜出一堆过时的旧版文件,直接引用会造成重大错误。现在他用的政策评估系统嵌入了 CRAG 机制——系统先对搜到的政策文件做相关性打分,低分就自动去政府官网拉取最新修订版,并高亮“知识条带”供小李核对。小李的起草效率提升了 60%,出错率下降了八成。

第二位质检员服务于一家三甲医院的临床科研团队。医生们需要快速追踪最新的靶向药临床研究结果。传统系统偶尔会查到已被撤回的论文,险些误导治疗决策。引入 Self-RAG 后,模型在生成回答时先输出反思 token 判断检索文献的可信度;当它识别到某篇论文与当前患者病例不相关时,会主动发出二次检索请求,只采纳近三年发表于高影响力期刊的证据。这一机制让临床循证检索的准确率提高了 35%。

第三位质检员任职于一家跨境电商公司的市场部。市场分析师需要每天监控竞品动态,她使用智能情报系统抓取全网评论。CRAG 的置信度评估器在此大显身手——当抓取的评论帖子与“竞品价格策略”话题相关度不高时,系统自动降低这些帖子的权重,转而搜索行业分析报告,提炼出精准的价格变动情报。分析师过去每天花 3 小时人工筛帖子,现在只需 30 分钟审核系统整理好的情报摘要。

AI 应用场景

场景一:政策评估中的“纠错型检索”

阶段:数据检索与增强生成

解决的问题:政策分析通常需要引用最新法规与历史文件,传统 RAG 系统检索到过时或无关文档时不会自我纠正,可能导致政策解读偏差。CRAG 的置信度评估器能自动判断文档相关性,低分时触发政府官网搜索,确保引用依据的时效性与准确性。

具体案例:某省级研究院部署 CRAG 方案,系统对检索到的政策文档做三级评估,将低置信度文档路由至政府门户搜索最新修正案,并用知识条带提取关键条款,辅助研究员快速完成政策比对报告,报告准确率从 72% 提升至 93%。

场景二:医学研究中的“反思型证据检索”

阶段:模型推理与决策

解决的问题:临床研究需严谨评估文献证据强度,传统模型无法识别撤回论文或低质量研究。Self-RAG 的反思 token 机制让模型在生成结论前评估文献支持度,证据不足时主动二次检索,过滤掉不可靠信息。

具体案例:某药企医学团队使用基于 Self-RAG 构建的文献助手,系统在回答“某靶向药对 NSCLC 患者的疗效”时,先检索到一项已撤稿研究,反思 token 判定其支持度不足,触发二次检索并只引用近三年高质量期刊证据,最终给出的结论与实际临床指南吻合。

Python 演示

python71 行
import math  class RetrievalEvaluator:    """模拟文档相关性评估器,返回一个0到1之间的置信度分数"""     def __init__(self):        # 用关键词匹配模拟真实评估器的打分逻辑        self.keywords = ['policy', 'clinical', 'price', 'study']     def score(self, question, document):        q_words = set(question.lower().split())        d_words = set(document.lower().split())        overlap = len(q_words & d_words)        total = max(len(q_words), 1)        return overlap / total  class SimulatedRAG:    def __init__(self, high_threshold=0.6, low_threshold=0.3):        self.evaluator = RetrievalEvaluator()        self.high_th = high_threshold        self.low_th = low_threshold        self.search_count = 0        self.extract_count = 0     def retrieve(self, query):        """模拟一次文档检索,返回候选文档列表"""        docs = [            'policy update on carbon tax',            'clinical study for targeted therapy',            'price analysis report 2024',        ]        return docs     def web_search(self, query):        """模拟二次网页搜索"""        self.search_count += 1        return ['fresh web result for ' + query]     def correct(self, question, docs):        """CRAG式纠正:根据置信度决定是否二次检索"""        best_doc = max(docs, key=lambda d: self.evaluator.score(question, d))        s = self.evaluator.score(question, best_doc)        if s >= self.high_th:            action = 'use'        elif s >= self.low_th:            action = 'extract'            self.extract_count += 1        else:            action = 'search'            new_docs = self.web_search(question)            best_doc = new_docs[0]        return action, best_doc, s  def main():    rag = SimulatedRAG()    question = 'latest clinical study for cancer treatment'    docs = rag.retrieve(question)    action, selected_doc, score = rag.correct(question, docs)    print(f'Question: {question}')    print(f'Best doc: {selected_doc}')    print(f'Confidence score: {score:.2f}')    print(f'Action taken: {action}')    print(f'Web searches triggered: {rag.search_count}')    print(f'Extractions performed: {rag.extract_count}')  if __name__ == '__main__':    main()
目的:模拟 CRAG 的置信度评估与三档决策逻辑,直观展示系统何时触发二次检索。
  1. class RetrievalEvaluator定义一个评估器类,用词重叠率模拟深度模型的置信度打分。
  2. score(question, document)计算问题与文档的关键词重叠比例,作为相关性分数。
  3. correct(self, question, docs)核心纠正逻辑:先选出最佳文档并打分,再根据阈值决定 use/extract/search。
  4. self.search_count用计数器跟踪触发网页搜索的次数,便于观察低置信度场景的行为。
  5. web_search(self, query)模拟二次检索动作,与真实 CRAG 中调用搜索 API 的行为一致。

常见误区

误区“Self-RAG 和 CRAG 都是让模型评估检索结果、必要时二次检索,应该是一回事吧?”

正解两者虽然目标相似,但机制差异显著。Self-RAG 通过反思 token 嵌入解码过程,在生成前、中、后都能评估,且二次检索走内部检索器;CRAG 则在生成前用轻量评估器输出置信度分数,低分时调用网页搜索。一个像“边写边审”的老师,一个像“先打分再动手”的老师。

为何常见:因为两者的技术报告都强调“评估检索质量”和“触发补救动作”,读者容易忽略实现层面的大相径庭。

误区“Self-RAG 引入反思 token,一定是往模型里添加了很多新参数吧?”

正解反思 token 并不是新增的模型参数,而是在词汇表中加入的特殊标记,通过微调训练让模型学会输出这些标记。它类似于在本来只有“数字+字母”的键盘上新增了几个功能键(如 Shift、Ctrl),键盘硬件本身没变,但能表达的指令更多了。

为何常见:人们习惯把新能力归因于“更多参数”,忽略词汇表扩展与对齐训练同样能解锁新行为。

误区“既然 CRAG 能在低置信度时触发搜索,那可以一直搜到有高置信度结果为止。”

正解实际系统中,网页搜索次数受推理延迟和成本约束,通常只允许有限的 1-2 次重试。论文中的 CRAG 设计了“恢复动作”——如果搜索后的结果置信度仍然很低,系统会回退到仅用生成模型作答或输出“信息不足”的提示,不会无休止地搜。

为何常见:直觉上“多搜几次总比一次好”,但忽视了生产环境对响应时间和 API 费用的刚性约束。

误区“模型每生成一个 token 都会同时输出 Retrieve、ISREL、ISSUP 等反思标签,效率太低了。”

正解反思 token 是按需生成的——模型只在关键决策点输出对应标签。例如,仅在答案生成前输出 Retrieve 或 NoRetrieve;仅在检索后输出 ISREL 评估相关性。并非每个输出 token 都伴随全量反思标签,计算开销远低于初学者想象。

为何常见:论文中的示意图常把反思标签画在生成序列的多个位置,让人误以为它们是逐 token 伴随的。

面试题

Q1. Self-RAG 的核心创新在于引入了什么机制?

单选题 · easy

  • A.更大的检索数据库
  • B.反思 Token 自我评估← 正确答案
  • C.多轮对话记忆
  • D.强化学习奖励模型

答案:B。Self-RAG 的核心是引入反思 token(如 Retrieve、ISREL、ISSUP),让模型对检索结果进行自我评估并决定是否二次检索。A 是数据层面的扩展,C 是对话系统特性,D 是独立于检索的优化方法,均非 Self-RAG 的核心创新。

Q2. CRAG 的置信度评估器判定检索文档分数很低时,系统会执行什么动作?

单选题 · easy

  • A.直接使用原文档生成
  • B.触发网页搜索补充← 正确答案
  • C.放弃回答该问题
  • D.请求用户重新提问

答案:B。CRAG 的三档决策逻辑中,低置信度分数会触发备选检索动作——对 LLM 而言通常是调用网络搜索获取互补信息。A 对应高置信度路径,C 和 D 是 CRAG 设计之外的极端处理方法,不是论文规定的动作。

Q3. 以下哪些属于 Self-RAG 中的反思 Token 类型?

多选题 · mid

  • A.Retrieve← 正确答案
  • B.ISREL← 正确答案
  • C.Attention
  • D.ISSUP← 正确答案

答案:ABD。Self-RAG 的反思 token 包括控制是否检索的 Retrieve、评估相关性的 ISREL、评估证据支持度的 ISSUP 和评估有用性的 ISUSE。Attention(注意力)是 Transformer 内部机制,不是反思 token。

Q4. 传统 RAG 与 Self-RAG 的根本区别是什么?

单选题 · mid

  • A.传统 RAG 使用更大的语言模型
  • B.传统 RAG 没有检索质量反馈回路← 正确答案
  • C.传统 RAG 无法生成自然语言
  • D.传统 RAG 不需要检索数据库

答案:B。传统 RAG 是单向流水线,检索后直接生成,没有任何机制评估检索文档质量;Self-RAG 通过反思 token 构造了“检索→评估→(再检索)→生成”的闭环。A、C、D 都与传统 RAG 的事实不符。

Q5. CRAG 中“知识条带提取”(Knowledge Strip Extraction)的作用是什么?

单选题 · mid

  • A.删除所有检索文档
  • B.从文档中抽取最相关的关键片段← 正确答案
  • C.扩展检索文档的数量
  • D.将文档翻译成其他语言

答案:B。当置信度处于模糊区间时,CRAG 会从文档中抽取出最相关部分用于生成,过滤无关注释。A 对应低置信度路径,C 是二次检索的效果,D 与检索纠正无关。

Q6. Self-RAG 与 CRAG 的差异体现在哪些方面?

多选题 · mid

  • A.Self-RAG 反思信号更多维← 正确答案
  • B.CRAG 只在生成前评估一次← 正确答案
  • C.Self-RAG 二次检索走内部检索器← 正确答案
  • D.CRAG 需要训练完整的大语言模型

答案:ABC。Self-RAG 有多类反思 token 在解码步骤中做决策,二次检索用内部检索器;CRAG 用单值置信度分数在生成前评估一次,二次检索走网页搜索。CRAG 只需训练轻量评估模型,D 说法错误。

Q7. 在 Self-RAG 的推理打分公式中,反思 Token 概率分数的角色是什么?

单选题 · hard

  • A.替代生成概率作为最终得分
  • B.与生成概率相乘共同决定候选排序← 正确答案
  • C.仅用于训练阶段,推理时忽略
  • D.作为损失函数计算梯度

答案:B。Self-RAG 的候选片段得分等于生成概率与反思 token 概率的乘积,两者共同决定最终输出。A 忽视生成质量,C 违背推理机制,D 描述的是训练过程而非推理打分。

Q8. CRAG 的置信度评估器通常基于什么模型微调而来?

单选题 · hard

  • A.小型卷积神经网络
  • B.T5-large 文本到文本模型← 正确答案
  • C.循环神经网络 LSTM
  • D.随机森林分类器

答案:B。CRAG 论文中描述置信度评估器是一个轻量级判别模型,基于 T5-large 微调获得,用于对问题-文档对输出相关性分数。传统 ML 模型和 CNN 无法直接处理复杂的语义关联判断。

Q9. Self-RAG 在实际部署时面临的挑战包括哪些?

多选题 · hard

  • A.解码阶段计算开销增大← 正确答案
  • B.需要专门训练批判模型← 正确答案
  • C.无法处理多跳推理问题
  • D.复杂推理时灵活性受限

答案:AB。Self-RAG 需要额外训练生成器和批判模型,解码时每步计算反思 token 概率导致推理开销上升。C 与事实相反——Self-RAG 尤其擅长多跳推理;D 描述不准确,Self-RAG 的灵活性恰恰是其亮点。

Q10. 当 CRAG 的置信度评估器针对某文档给出 0.75 分,且 high=0.8、low=0.4 时,系统会执行什么操作?

单选题 · extreme

  • A.直接使用该文档生成答案
  • B.执行知识条带提取后生成← 正确答案
  • C.触发网络搜索获取新文档
  • D.直接拒绝回答

答案:B。0.75 介于 low(0.4)与 high(0.8)之间,属于“模糊置信度”区间,系统会先执行知识条带提取,仅使用文档中最相关的片段辅助生成。A 需要分数大于 0.8,C 需要分数低于 0.4,D 在 CRAG 中不存在这种动作。