精读笔记 · CRAG:纠错式检索增强生成
论文全称:Corrective Retrieval Augmented Generation
arXiv 编号:2401.15884(2024 年 1 月)
作者团队:Shi-Qi Yan, Jia-Chen Gu, Yun Zhu, Zhen-Hua Ling(中国科学技术大学)+ Zhenhua Ling(Google Research 合作)
发表状态:ICLR 2024 Workshop(后续版本)
本文 PDF:CRAG Corrective RAG [2401.15884].pdf
阅读地图
本文解决的核心问题:RAG(检索增强生成)检索回来的文档可能是错的或不相关的,大模型却照单全收,导致幻觉(hallucination)加剧而非减少。
CRAG 的解法可以用一句话概括:在检索结果进入大模型之前,先派一个"质检员"给它打分,好的精炼后用,差的换去网上找,不确定的两手都用。
| 章节 | 本文对应位置 | 精读深度 |
|---|---|---|
| Abstract | 第 1 节 | ★★★ 逐句精译 |
| Introduction | 第 2 节 | ★★★ 核心段精译 |
| 任务定义 | 第 3 节 | ★★ 概念澄清 |
| CRAG 方法(核心) | 第 4 节 | ★★★ 全部段落,一段不漏 |
| 实验结果 | 第 5 节 | ★★★ 关键数字精读 |
| 相关工作 | 第 6 节 | ★ 一句话带过 |
| 结论 | 第 7 节 | ★★ 要点摘录 |
一、Abstract(摘要)精译
原文段落 A-1
"Large language models (LLMs) inevitably exhibit hallucinations since the accuracy of generated texts cannot be secured solely by the parametric knowledge they encapsulate."
翻译
大型语言模型(LLMs)不可避免地会产生幻觉,因为仅凭其内部封装的参数化知识,无法保证生成文本的准确性。
新手讲解
"参数化知识"(parametric knowledge)是指大模型在训练阶段从海量数据中"记住"的知识,就像人的长期记忆。但这份记忆有两个硬伤:一是有截止日期(训练数据截止后的事不知道),二是可能记错(训练数据本身有噪声)。所以模型说话时会"一本正经地胡说八道",这就是幻觉(hallucination)。
原文段落 A-2
"Although RAG serves as a promising solution, its effectiveness is contingent upon the relevance and accuracy of the retrieved documents."
翻译
尽管 RAG(检索增强生成)是一种有前景的解决方案,但其效果在很大程度上取决于检索到的文档的相关性和准确性。
新手讲解
RAG 的基本思路是:回答问题前,先去知识库(或网络)里找几篇相关文章,然后把这些文章和问题一起交给大模型,让模型参考这些"参考资料"来回答。这样做的好处是:不再完全依赖模型的"死记硬背",而是结合外部知识。
但问题来了:如果检索系统找回来的文章根本不相关,甚至是错误的,大模型却还是把它当成权威资料来用,最终答案反而更离谱。 这就是 CRAG 要解决的痛点。
原文段落 A-3
"...a lightweight retrieval evaluator is designed to assess the overall quality of retrieved documents for a query, returning a confidence degree based on which different knowledge retrieval actions can be triggered."
翻译
……我们设计了一个轻量级检索评估器(retrieval evaluator),用于评估针对给定查询所检索到的文档的整体质量,并返回一个置信度分数,基于该分数可以触发不同的知识检索动作。
新手讲解
这是 CRAG 的第一个核心贡献:引入一个"质检员"模型。
术语首次出现 → 检索评估器(Retrieval Evaluator):一个专门训练的小模型(本文用的是 T5-large,约 7.7 亿参数,比 GPT-4 小得多),它的唯一工作就是判断"这篇检索回来的文档,和用户的问题到底有多相关?",并给出一个 -1 到 +1 之间的分数。
类比:你让助手去图书馆找资料,助手拿回来一叠文件。正常 RAG 做法是直接把这叠文件交给专家(大模型)用。CRAG 的做法是先让一个"资料验收员"过一遍,确认这些资料质量合格再往下走。
原文段落 A-4
"...a decompose-then-recompose algorithm for knowledge refinement to selectively focus on key information and filter out irrelevant information in retrieved documents."
翻译
……一种"先拆解再重组"算法(decompose-then-recompose algorithm),用于知识精炼(knowledge refinement),以便选择性地聚焦关键信息,并过滤掉检索文档中的无关信息。
新手讲解
这是 CRAG 的第二个核心贡献:即便检索回来的文档质量合格,里面也充满了无关内容(比如你查"爱因斯坦出生年份",检索回来一篇爱因斯坦传记,里面 90% 的内容是他的科学成就,真正有用的只有一句话)。
术语首次出现 → 知识精炼(Knowledge Refinement):把检索到的文档先"切碎"成小片段(strips),再用评估器逐一打分,过滤掉得分低的片段,最后把得分高的片段重新拼接成一段干净的知识,再喂给大模型。
类比:你收到一份 100 页的市场调研报告,但你只想知道"今年手机销量"这一个数字。知识精炼就是让人先把那一句关键数字找出来,删掉其余 99.9 页,再把这句话交给你的决策者。
原文段落 A-5
"CRAG is plug-and-play and can be seamlessly coupled with various RAG-based approaches."
翻译
CRAG 是"即插即用"的,可以无缝地与各种基于 RAG 的方法结合使用。
新手讲解
这句话非常重要,意味着 CRAG 不是一个全新的独立系统,而是一个可以插在任何现有 RAG 管道上的"纠错中间件"。
类比:你家的净水器可以接在任何品牌的水龙头上,不需要换整套管道系统。CRAG 就是这样的"净水器"——不管你用的是标准 RAG 还是 Self-RAG,只要在检索结果进入大模型之前插入 CRAG 的评估和精炼步骤,就能提升质量。
二、Introduction(引言)核心段精译
原文段落 I-1(背景)
"LLMs have attracted increasing attention and exhibited impressive abilities to understand instructions and generate fluent language texts, but inevitably manifest hallucinations due to factual errors."
翻译
大型语言模型吸引了越来越多的关注,展现出令人印象深刻的指令理解能力和流畅文本生成能力,但由于事实性错误,不可避免地会产生幻觉。
新手讲解
LLM 的困境:越流畅越危险。模型能把一段错误信息说得非常自信、非常流畅,读者很难分辨真假。这是整个 RAG 研究领域的出发点。
原文段落 I-2(现有 RAG 的问题)
"The heavy reliance of generation on the retrieved knowledge raises significant concerns about the model's behavior and performance in scenarios where retrieval may fail or return inaccurate results."
翻译
生成过程对检索知识的严重依赖,使得当检索失败或返回不准确结果时,模型的行为和性能令人忧虑。
新手讲解
现有 RAG 系统有一个隐含假设:检索器是可信的。但现实中,检索器经常失败——问题描述模糊、知识库覆盖不全、向量相似度不等于语义相关性,等等。当检索失败时,大模型还在"认真参考"这些垃圾资料,后果可想而知。
原文段落 I-3(现有方法的盲点)
"Most conventional RAG approaches indiscriminately incorporate the retrieved documents, regardless of whether these documents are relevant or not."
翻译
大多数传统 RAG 方法不加区分地引入检索到的文档,不管这些文档是否相关。
新手讲解
这是作者对现有 RAG 方法最核心的批判。"不加区分"(indiscriminately)这个词很犀利——现有方法对检索质量是盲目信任的。CRAG 的整个动机就建立在打破这个盲目信任之上。
原文段落 I-4(论文贡献)
"This paper studies the scenarios where the retriever returns inaccurate results and makes the first attempt to design corrective strategies."
翻译
本文研究检索器返回不准确结果的场景,并首次尝试设计纠错策略。
新手讲解
"首次尝试"(first attempt)这个措辞表明这是一个新的研究方向,而不仅仅是对现有方法的改进。作者明确把"检索结果不准确时怎么办"作为独立问题来研究,这本身就是一个贡献。
三、任务定义(Task Formulation)概念澄清
核心公式
$$P(Y|X) = P(D|X) \cdot P(Y|D, X)$$
其中:
- $X$:用户输入的问题
- $D$:检索器从知识库中找到的文档集合(Top-K 篇)
- $Y$:大模型最终生成的答案
新手讲解
这个公式把 RAG 拆成两步:
1. 检索步骤 $P(D|X)$:给定问题 $X$,找到相关文档 $D$
2. 生成步骤 $P(Y|D,X)$:给定文档 $D$ 和问题 $X$,生成答案 $Y$
现有 RAG 只优化了第 2 步(更好的生成),对第 1 步的质量不做任何保证。CRAG 在这两步之间插入了一个质检环节。
关键风险描述
"This system exhibits a low tolerance for risk, as any unsuccessful retrieval can result in an unsatisfactory response."
翻译
该系统对风险的容忍度很低,任何一次检索失败都可能导致不满意的响应。
新手讲解
这是整个 RAG 系统的"阿喀琉斯之踵":整条流水线中,检索是最脆弱的环节,但又是最被忽视的环节。
四、CRAG 方法(核心章节,全部段落精读)
这是本文最重要的部分,也是笔记的重点。CRAG 方法由三个紧密联系的组件构成:
1. 检索评估器(Retrieval Evaluator):给检索结果打分
2. 三种动作触发机制:根据分数决定走哪条路
3. 知识精炼(Knowledge Refinement)+ 网络搜索增强(Web Search Augmentation):两条不同的处理路径
4.1 总体架构
CRAG 工作流(用"验货→决策→处理"类比)
用户问题 X
↓
检索器(如向量数据库)→ 检索到 K 篇文档
↓
【质检员:检索评估器】给每篇文档打置信度分
↓
┌──────────────────────────────────────────┐
│ 判断整体置信度 │
│ │
│ ≥ 上阈值 (Correct) → 知识精炼 → 大模型 │
│ ≤ 下阈值 (Incorrect) → 网络搜索 → 大模型 │
│ 中间 (Ambiguous) → 两者都做 → 大模型 │
└──────────────────────────────────────────┘
↓
大模型(LLM)生成最终答案 Y
类比:你是一家餐厅的采购经理,每天供应商(检索器)送来食材(检索文档)。你会安排一个验货员(检索评估器)先检查食材质量:
- 质量好(Correct):接收,并切掉坏的部分(知识精炼),送进厨房
- 质量差(Incorrect):退货,改去另一家超市(网络搜索)买
- 质量参差(Ambiguous):一边接收部分合格品,一边补充采购
4.2 检索评估器(Retrieval Evaluator)
原文段落 M-1(模型架构)
"T5-large is adopted and fine-tuned. For every question, there are generally 10 documents retrieved. At inference, the evaluator scores the relevance from -1 to 1 for each question-document pair."
翻译
采用并微调 T5-large 模型。对于每个问题,通常检索 10 篇文档。在推理时,评估器为每个"问题-文档对"打出 -1 到 1 之间的相关性分数。
新手讲解
T5-large 是谷歌开发的一个中等规模的语言模型(约 7.7 亿参数),相比 GPT-4 等大模型,它非常"轻量"(lightweight)。选它的原因:
- 够小,评估速度快,不会让整个系统变慢
- 够准,经过专门微调后,判断相关性的能力超越了用 ChatGPT 直接问的方式(见实验:T5 评估器 84.3% 准确率 vs ChatGPT 58-64.7%)
评分机制:对每个"问题 $X$ + 文档 $d_i$"组合,评估器输出一个分数 $s_i \in [-1, +1]$:
- 接近 +1:这篇文档与问题高度相关,非常有用
- 接近 -1:这篇文档与问题几乎无关,甚至有误导性
- 接近 0:不确定
原文段落 M-2(置信度阈值)
"The first threshold is often set around 0.5, such as 0.59 on PopQA and 0.5 on PubQA, and the second threshold is set around -0.9."
翻译
第一个阈值通常设置在 0.5 左右(如在 PopQA 数据集上为 0.59,在 PubQA 上为 0.5),第二个阈值设置在 -0.9 左右。
新手讲解
系统设置了两个分界线(阈值),把所有检索文档分成三个区间:
-1.0 ────────────── -0.9 ──────────────── +0.5 ──────── +1.0
Incorrect Ambiguous Correct
(确认质量差) (模棱两可) (确认质量好)
对于 K=10 篇检索文档,系统取最高分作为整体判断依据:
- 至少有一篇文档得分 ≥ 上阈值 → Correct(正确)
- 所有文档得分 ≤ 下阈值 → Incorrect(错误)
- 剩余情况 → Ambiguous(模糊)
4.3 三种动作(Three Actions)
原文段落 M-3(动作概述)
"Three confidence-based actions—Correct, Incorrect, and Ambiguous—are triggered by the retrieval evaluator's confidence degree."
翻译
三种基于置信度的动作——正确(Correct)、错误(Incorrect)和模糊(Ambiguous)——由检索评估器的置信度分数触发。
新手讲解
这三种动作是 CRAG 的"决策引擎"。不同于现有 RAG 的"无脑照单全收",CRAG 基于评估分数走不同的处理路径。下面逐一展开。
动作一:Correct(检索结果正确)
当评估器认为至少有一篇检索文档质量足够高时,触发"知识精炼"流程。
处理步骤:
1. 对所有文档执行 decompose-then-recompose(拆解-重组)
2. 过滤低质量片段,保留高质量片段
3. 将精炼后的知识喂给大模型
新手讲解
即使文档整体质量不错,里面也有大量无关内容。精炼步骤确保大模型看到的是"最纯的信息",而不是一大锅夹杂着无用内容的"信息汤"。
动作二:Incorrect(检索结果错误)
当评估器认为所有检索文档都不相关或质量极差时,放弃内部知识库,转向网络搜索。
处理步骤:
1. 将原始问题改写成关键词查询(query rewriting)
2. 调用 Google Search API 等网络搜索引擎
3. 对搜索结果同样执行知识精炼
4. 将网络知识喂给大模型
新手讲解
内部知识库检索失败,不代表问题无法回答——网络上可能有最新、最准确的信息。这一步是 CRAG 的"兜底机制"。
类比:你去公司的内部档案室查一份资料,档案员说"没有这份文件"。这时你不应该放弃,而是应该去公共图书馆(互联网)查。
动作三:Ambiguous(检索结果模糊)
当评估器不确定时,同时执行内部知识精炼和网络搜索,将两路结果合并。
新手讲解
这是最稳健的处理方式:两手都不放弃。内部知识库可能有相关信息但不完整,网络可能有最新信息但需要过滤。两者合并,互相补充,效果往往优于单一路径。
类比:你不确定公司档案里有没有这份资料,那就同时查档案室和图书馆,把两个来源的内容综合起来。
4.4 知识精炼:Decompose-then-Recompose(先拆解再重组)
原文段落 M-4(核心算法)
"Each retrieved document is segmented into fine-grained knowledge strips through heuristic rules. Irrelevant knowledge strips are filtered out, while relevant ones are recomposed via concatenation in order."
翻译
每篇检索到的文档通过启发式规则被切分为细粒度的"知识片段"(knowledge strips)。不相关的知识片段被过滤掉,而相关的片段则按顺序拼接重组。
新手讲解
这是 CRAG 最精巧的设计之一。整个流程分三步:
第一步:Decompose(拆解)
把一篇检索文档切割成多个细粒度片段(knowledge strips)。切割规则基于句子边界或段落边界(启发式规则,不是用神经网络)。
例如,检索到一篇关于"牛顿"的维基百科文章,可以切成:
- 片段 1:"牛顿于 1643 年出生于英国林肯郡…"
- 片段 2:"他发现了万有引力定律…"
- 片段 3:"他发明了微积分…"
- 片段 4:"他在光学领域也有重要贡献…"
如果用户问的是"牛顿出生在哪里",只有片段 1 是有用的。
第二步:Filter(过滤)
用检索评估器对每个片段打分,过滤掉低分片段(无关内容)。
第三步:Recompose(重组)
把高分片段按原始顺序拼接起来,形成一段"精炼后的知识"(refined knowledge),交给大模型。
视觉示意:
原始文档(100句)
↓ Decompose(切片)
[片段1][片段2][片段3]...[片段100]
↓ Filter(评估器打分,过滤低分)
[片段1 ✓][片段3 ✓][片段47 ✓]
↓ Recompose(重组)
精炼知识:"牛顿出生于...(片段1)...他的力学三大定律...(片段3)..."
↓
→ 大模型(只看精华)
为什么这样做有效?
大模型处理长文本时会产生"迷失在中间"(lost in the middle)问题——上下文太长时,模型会忽略中间的信息。知识精炼把文档从 1000 字压缩到 200 字,让大模型只看到最关键的部分,大幅提升答案质量。
4.5 网络搜索增强(Web Search Augmentation)
原文段落 M-5(查询改写)
"The input questions are rewritten into queries composed of keywords by ChatGPT to mimic the daily usage of search engine."
翻译
通过 ChatGPT 将输入问题改写成由关键词组成的查询,以模仿日常搜索引擎的使用方式。
新手讲解
术语首次出现 → 网络搜索增强(Web Search Augmentation):当内部知识库检索失败时,系统自动调用网络搜索引擎作为备用知识源。
为什么需要"查询改写"?
- 用户原始问题:"Who was the first person to walk on the Moon?" (自然语言,适合对话)
- 搜索引擎查询:"first person walk Moon" (关键词,适合搜索)
自然语言问题直接丢给 Google 效果不好(因为 Google 是关键词搜索引擎,不是问答引擎)。所以用 ChatGPT 先把问题"翻译"成关键词查询,再去搜索,质量更高。
搜索完成后,对网络搜索结果同样执行 decompose-then-recompose 精炼,确保最终喂给大模型的知识同样干净。
4.6 训练细节(Retrieval Evaluator 的训练方式)
检索评估器使用的是弱监督学习:
- 正样本(相关文档):从问答数据集中,找到包含正确答案的文档-问题对
- 负样本(不相关文档):随机抽取文档-问题对(几乎肯定不相关)
这种训练方式不需要人工标注每篇文档的相关性,成本很低,但效果显著(实验表明,微调后的 T5-large 评估器准确率 84.3%,远超直接用 ChatGPT 提问的 58-64.7%)。
4.7 即插即用(Plug-and-Play)设计
"CRAG is plug-and-play and can be seamlessly coupled with various RAG-based approaches."
新手讲解
CRAG 的架构设计刻意保持了模块化。它只在以下两个位置插入逻辑:
1. 检索之后:用评估器给检索结果打分
2. 生成之前:用精炼后的知识替换原始检索结果
大模型(LLM)部分完全不变。这意味着:
- 标准 RAG(如 Lewis et al. 2020)可以接入 CRAG → 得到 CRAG-RAG
- Self-RAG(如 Asai et al. 2023)可以接入 CRAG → 得到 Self-CRAG
- 未来任何新的 RAG 变体都可以接入
这种"中间件"设计是 CRAG 能被广泛采用的重要原因。
五、实验结果(Experiments)重点段精读
5.1 实验设置
评估数据集(四个,覆盖短文本和长文本生成):
| 数据集 | 任务类型 | 评估指标 |
|---|---|---|
| PopQA | 短文本问答(事实性) | 准确率(Accuracy) |
| Biography | 长文本生成(人物传记) | FactScore(事实密度) |
| PubHealth | 健康信息核实 | 准确率(Accuracy) |
| Arc-Challenge | 科学选择题 | 准确率(Accuracy) |
新手讲解
- PopQA:问简单的事实性问题(如"奥巴马是哪年当总统的?"),评估答案是否正确
- Biography:让模型写一段名人传记,评估生成的句子中有多少比例是事实(FactScore)
- PubHealth / Arc-Challenge:判断健康声明或科学问题的真假
选这四个数据集,是为了测试 CRAG 在不同任务类型(短/长、事实性/推理性)下的普适性。
5.2 主要结果
原文数据(Table 1 精读)
基础模型:LLaMA2-hf-7b(通用 7B 模型)
| 方法 | PopQA (Acc↑) | Biography (FactScore↑) | PubHealth (Acc↑) | Arc-Challenge (Acc↑) |
|---|---|---|---|---|
| 标准 RAG | 37.7% | 44.9 | 9.1% | 23.8% |
| CRAG | 39.8% | 47.7 | 9.1% | 25.8% |
| Self-RAG | 29.0% | 32.2 | 0.7% | 23.9% |
| Self-CRAG | 49.0% | 69.1 | 0.6% | 27.9% |
增强模型:SelfRAG-LLaMA2-7b(专门针对 RAG 微调的 7B 模型)
| 方法 | PopQA (Acc↑) | Biography (FactScore↑) | PubHealth (Acc↑) | Arc-Challenge (Acc↑) |
|---|---|---|---|---|
| 标准 RAG | 40.3% | 59.2 | 39.0% | 46.7% |
| CRAG | 59.3% | 74.1 | 75.6% | 54.8% |
| Self-RAG | 54.9% | 81.2 | 72.4% | 67.3% |
| Self-CRAG | 61.8% | 86.2 | 74.8% | 67.2% |
原文关键描述
"CRAG outperformed RAG by margins of 19.0% accuracy on PopQA."
翻译
CRAG 在 PopQA 数据集上以 19.0% 的准确率优势超越了标准 RAG。
新手讲解
这里说的是 SelfRAG-LLaMA2-7b 底座下,CRAG 相比标准 RAG 提升了 19%(59.3% vs 40.3%)。19 个百分点在 NLP 领域是非常显著的提升(通常 1-3% 的提升就值得发论文)。
关键数字解读:
| 对比 | 提升幅度 | 意义 |
|---|---|---|
| CRAG vs RAG(PopQA) | +19.0% | 证明纠错机制对短文本问答有巨大帮助 |
| CRAG vs RAG(Biography FactScore) | +14.9 | 证明知识精炼对长文本生成有帮助 |
| Self-CRAG vs Self-RAG(PopQA) | +6.9% | 即使基础模型已经很强,CRAG 还能再提升 |
| Self-CRAG vs Self-RAG(Biography) | +5.0 | 长文本生成同样受益 |
5.3 消融实验(Ablation Study)
三种动作的贡献(Table 2)
在 PopQA 数据集,SelfRAG-LLaMA2-7b 底座下:
| 配置 | 准确率 |
|---|---|
| 完整 CRAG | 59.3% |
| 去掉 Correct 动作 | 58.1%(-1.2%) |
| 去掉 Incorrect 动作 | 58.6%(-0.7%) |
| 去掉 Ambiguous 动作 | 58.5%(-0.8%) |
新手讲解
每种动作去掉之后都有下降,说明三种动作各有贡献,缺一不可。Correct 动作贡献最大,说明知识精炼对整体效果最为关键。
知识处理方式的贡献(Table 3)
在 PopQA 数据集,SelfRAG-LLaMA2-7b 底座下:
| 配置 | 准确率 |
|---|---|
| 完整 CRAG | 59.3% |
| 去掉知识精炼(refinement) | 47.0%(-12.3%) |
| 去掉查询改写(rewriting) | 56.6%(-2.7%) |
| 去掉片段选择(selection) | 53.8%(-5.5%) |
新手讲解
最惊人的发现:去掉知识精炼后准确率骤降 12.3%。这证明"把原始文档直接喂给大模型"和"把精炼后的知识片段喂给大模型"效果差距悬殊。知识精炼不是锦上添花,而是 CRAG 效果的核心支柱。
查询改写和片段选择贡献相对较小,但依然不可缺少。
5.4 检索评估器的准确性对比
"The retrieval evaluator achieved 84.3% accuracy vs ChatGPT's 58-64.7%."
翻译
检索评估器达到了 84.3% 的准确率,而 ChatGPT 直接判断的准确率仅为 58-64.7%。
新手讲解
这里的"准确率"是指:评估器判断"这篇文档是否与问题相关"的正确率,以人工标注为金标准。
结果令人意外:一个经过专门微调的小模型(T5-large,7.7 亿参数)在这个任务上远胜于直接用 ChatGPT 打分(ChatGPT 约 1750 亿参数,大 200 倍)。
原因:T5-large 针对"相关性判断"任务专门微调,而 ChatGPT 是通用模型,虽然更聪明,但并不专注于这个窄任务。这说明专用小模型在特定任务上可以超越通用大模型,这是一个重要的实践结论。
5.5 鲁棒性实验(Robustness)
关键段落
"When retrieval quality declined artificially by removing accurate results, Self-CRAG showed more graceful degradation than Self-RAG, maintaining superior performance across degraded retrieval scenarios."
翻译
当通过人为移除正确结果来降低检索质量时,Self-CRAG 的性能下降比 Self-RAG 更加平缓,在检索质量下降的场景下保持了更好的性能。
新手讲解
这个实验模拟了"检索器变差"的场景:逐渐增加噪声文档的比例,观察不同方法的表现。
结果:Self-RAG 在检索质量下降时性能急剧恶化,而 Self-CRAG 因为有"纠错机制",能在检索质量不佳时自动切换到网络搜索,性能下降更平缓。
类比:在食材供应不稳定的情况下,有备用供应商(网络搜索)的餐厅(Self-CRAG)比完全依赖单一供应商的餐厅(Self-RAG)更有韧性。
六、相关工作(Related Work)
一句话带过:本节回顾了 RAG 的发展历史(Dense Passage Retrieval、Fusion-in-Decoder、FLARE 等)以及检索质量评估的相关工作,说明 CRAG 是在这些基础上首次系统性地将"检索纠错"作为独立研究问题的工作。
七、结论与附录
结论要点
- CRAG 通过引入轻量级检索评估器和三级动作机制,有效解决了 RAG 对低质量检索文档的盲目依赖问题。
- decompose-then-recompose 知识精炼算法对性能提升贡献最大(消融实验证明)。
- CRAG 的即插即用特性使其可以与任何 RAG 系统结合,具有广泛的适用性。
- 经过专门微调的轻量评估器在相关性判断任务上超越了直接使用 ChatGPT 打分。
局限性(论文原文未展开,但可推断)
- 网络搜索增强依赖外部搜索 API(如 Google),在无网络或限制网络的部署环境中无法使用
- 检索评估器需要领域特定的微调(不同数据集的阈值不同),迁移成本存在
- 增加了整体推理延迟(评估+精炼+可能的网络搜索)
附录
附录包含更详细的数据集描述、训练超参数、更多消融实验(不同 Top-K 设置、不同阈值设置的影响),可供需要复现实验的读者参考。
总结:CRAG 的核心思想一图读懂
┌─────────────────────────────────────────────────────────────────┐
│ CRAG 核心流程 │
│ │
│ 用户问题 X │
│ │ │
│ ▼ │
│ 检索器 → [文档1, 文档2, ..., 文档K] │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ 检索评估器(T5-large微调) │ ← 轻量级"质检员" │
│ │ 为每篇文档打分:-1 ~ +1 │ │
│ └──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 最高分 ≥ 上阈值? │ │
│ │ → Correct:知识精炼(切片→过滤→重组)→ 精炼知识 │ │
│ │ │ │
│ │ 最高分 ≤ 下阈值? │ │
│ │ → Incorrect:查询改写 → 网络搜索 → 知识精炼 │ │
│ │ │ │
│ │ 中间情况? │ │
│ │ → Ambiguous:内部精炼 + 网络搜索(合并两路) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 干净的知识 → 大模型(LLM)→ 最终答案 Y │
│ │
│ ★ 即插即用:CRAG 只修改检索层,不修改大模型本身 │
└─────────────────────────────────────────────────────────────────┘
关键术语速查
| 术语(英文) | 中文 | 一句话解释 |
|---|---|---|
| Retrieval Evaluator | 检索评估器 | 轻量级模型(T5-large),给检索文档打相关性分数 |
| Knowledge Refinement | 知识精炼 | 对检索文档执行切片-过滤-重组,提取最相关片段 |
| Decompose-then-Recompose | 先拆解再重组 | 知识精炼的具体算法,把文档切碎再拼接高质量片段 |
| Knowledge Strip | 知识片段 | 文档被切割后的细粒度单元(通常是句子或段落级别) |
| Web Search Augmentation | 网络搜索增强 | 内部检索失败时,改用网络搜索作为补充知识源 |
| Query Rewriting | 查询改写 | 将自然语言问题转化为搜索引擎友好的关键词查询 |
| Confidence Degree | 置信度分数 | 评估器输出的 -1 到 +1 分数,反映文档相关性 |
| Correct / Incorrect / Ambiguous | 正确/错误/模糊 | 三种动作类型,由置信度分数触发不同处理路径 |
| Plug-and-Play | 即插即用 | CRAG 可与任何 RAG 方法无缝结合,不修改底层大模型 |
| FactScore | 事实得分 | 长文本生成的评估指标,衡量生成内容中事实准确句子的比例 |
| Hallucination | 幻觉 | 大模型生成的内容看似合理但实际不准确的现象 |
| Parametric Knowledge | 参数化知识 | 大模型在训练阶段"记住"的知识,存储在模型权重中 |
笔记撰写时间:2026-05-27
基于原始论文:arXiv 2401.15884,CRAG (Corrective Retrieval Augmented Generation)
论文团队:中国科学技术大学 / Google Research,2024