RAG 框架经典论文导读合集
面向零基础新手 · 11 篇精选 · 中文导读
整理日期:2026-05-27
总览:RAG 是什么,为什么需要它,这 11 篇如何演进
RAG 在大模型体系里的位置
大语言模型(LLM,如 GPT、LLaMA)是在海量文本上预训练的"知识压缩机"——它把训练时见过的知识"压进"几十亿个参数里。但这种方式有两个天然缺陷:
- 知识截止问题:模型训练完成后,新发生的事情它不知道。问它"昨天的新闻",它只能瞎猜。
- 幻觉问题:模型不确定的时候,会自信地编造听起来合理的答案,专业上叫"hallucination(幻觉)"。
RAG(Retrieval-Augmented Generation,检索增强生成) 就是给模型配一个"开卷考试"的能力:每次回答问题时,先去外部知识库(文档、数据库、网页)里检索相关内容,再把检索到的资料喂给模型,让它"照着资料作答"。
类比:
- 纯 LLM = 闭卷考试,只靠背书
- RAG = 开卷考试,考前可以翻参考书
RAG 不替换 LLM,而是给 LLM 装上了"即时查阅"的能力,是目前企业落地知识问答、文档检索、客服机器人最主流的技术路线。
这 11 篇论文的逻辑演进
早期检索增强(稀疏检索 + 预训练融合)
├── REALM [2002.08909] → 把检索器嵌入预训练,端到端联合训练
├── DPR [2004.04906] → 用双编码器做稠密检索,性能大幅超越BM25
└── RAG原论文 [2005.11401] → 把检索器+生成器统一框架,RAG正式命名
高效解码与大规模检索
├── FiD [2007.01282] → 多段落融合解码,大幅提升多跳QA效果
└── RETRO [2112.04426] → 训练时就做检索,万亿参数规模验证
少样本与自适应检索
├── Atlas [2208.03299] → 少样本场景下联合微调检索器+生成器
├── HyDE [2212.10496] → 用LLM生成假设文档改善检索质量
主动与自反思 RAG(让模型自己决定何时检索)
├── FLARE [2305.06983] → 预测下一句,按需触发检索
├── Self-RAG [2310.11511]→ 生成反思标记,自评价、自纠错
└── CRAG [2401.15884] → 对检索结果打分+网络搜索补充
综述
└── RAG Survey [2312.10997] → 系统梳理全貌,是入门的地图
整体脉络:从"怎么检索更准"→"怎么生成更好"→"怎么让模型自主判断要不要检索",技术层层递进,每篇都在解决上一代的痛点。
论文 1:RAG 原论文
标题:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
arXiv:2005.11401
作者:Patrick Lewis 等(Facebook AI Research)
发表:NeurIPS 2020
一句话概括
提出了"检索增强生成"这一统一框架,首次将稠密检索器与序列到序列生成模型端到端结合,正式确立了 RAG 这个名称与范式。
背景与动机
2020 年前,NLP 社区解决知识密集型任务(比如开放域问答、事实核查)有两条路:
- 参数化记忆:直接把知识记在模型参数里(GPT-2、T5 那一派),优点是端到端,缺点是更新知识要重新训练,成本极高。
- 非参数化记忆:传统 IR(信息检索)系统,用关键词搜索(BM25),缺点是语义理解弱,检索质量有限。
痛点:有没有一种方法,既能利用大模型的语言生成能力,又能随时查阅外部知识库?这就是 RAG 要解决的问题。
类比:想象你在参加"谁是百万富翁",你有两个选择——死记硬背(参数化)或者偷偷带小抄(检索)。RAG 就是合法地把"带参考资料"做进了模型架构里。
论文结构与格式
全文约 10 页(正文)+ 附录,NeurIPS 风格。结构:
1. Introduction:点出痛点,介绍贡献
2. Methods:RAG-Sequence 与 RAG-Token 两种变体
3. Experiments:开放域 QA、摘要、对话等多任务实验
4. Analysis:消融实验——检索器好不好、文档数量影响等
5. Related Work:与 REALM、DPR 的关系
6. Conclusion
写作套路:先讲统一框架,再分变体,再大量实验验证,最后消融。是典型的 NLP 体系论文写法。
核心方法/架构详解
整体流程(开卷考试类比):
问题 q
→ 检索器(DPR)在维基百科里找 Top-K 篇文章
→ 把文章和问题拼接成输入
→ 生成器(BART)阅读后生成答案
两个核心组件:
-
检索器(Retriever):DPR(Dense Passage Retrieval)
- 用两个 BERT 编码器分别把"问题"和"文章段落"编码成向量
- 在向量空间里用余弦相似度找最近邻(最相关的段落)
- 索引用 FAISS 构建,支持毫秒级近似最近邻检索
- 类比:图书馆里有一个超级智能的书目索引,能按"含义"而非"关键词"找书 -
生成器(Generator):BART
- 是一个 seq2seq(序列到序列)模型,擅长生成流畅文本
- 输入 = 问题 + 检索到的 K 篇文章
- 输出 = 最终答案
两种变体:
- RAG-Sequence:对每篇检索文章分别生成候选答案,再汇总(每篇文章独立打分后综合)
- RAG-Token:生成每个 token 时都可以跨文章"综合参考"(更灵活)
类比:
- RAG-Sequence:先让 5 个同学各自答题,再投票选最好的答案
- RAG-Token:5 个同学实时协作,每写一个字都可以互相商量
主要创新点
- 首次将稠密检索器(DPR)与生成模型(BART)端到端联合训练
- 提出 RAG-Sequence 和 RAG-Token 两种概率框架,有理论推导
- 不需要人工标注检索监督信号,只用 QA 对即可训练
- 在多个知识密集型任务上超越当时所有 SOTA(包括闭卷 T5 11B)
- 知识库(维基百科)可独立更新,不用重训模型
实验设置
- 数据集:Natural Questions (NQ)、WebQuestions、CuratedTrec(开放域 QA);TriviaQA;MS-MARCO(对话);Jeopardy(事实生成);FEVER(事实核查)
- 基线:T5 闭卷模型、BM25+阅读器、REALM
- 指标:Exact Match (EM)、F1 分数
- 知识库:2018 年版维基百科,约 2100 万段落,每段 100 个 token
- 算力:用 FAISS 在 CPU 上做近似检索,训练在多张 GPU 上
写作风格特点
- 数学公式严谨,有完整的概率推导
- 图表清晰,模型架构图直观
- 实验覆盖面广,不只测一个任务
- 语言偏学术,但逻辑链条清晰
图表亮点
- Figure 1(架构图):完整展示了 DPR + BART 的数据流,是理解 RAG 框架最直观的图,必看。
- Table 1(开放域 QA 结果):直接对比闭卷 T5 11B,RAG 用更小模型取得更好结果,非常有说服力。
新手阅读建议
- 精读:Section 2(方法部分)+ Figure 1 + Table 1
- 可跳过:附录里的超参细节、FEVER 实验部分(格式特殊,不够典型)
- 前置知识:了解 BERT 基本原理、什么是 seq2seq 模型,会更容易理解
论文 2:REALM
标题:REALM: Retrieval-Augmented Language Model Pre-Training
arXiv:2002.08909
作者:Kelvin Guu 等(Google Research)
发表:ICML 2020
一句话概括
在预训练阶段就把检索器嵌入进来,让语言模型在"预测被遮盖词"时学会主动查阅知识库,是 RAG 家族的先驱之作。
背景与动机
2020 年初,BERT 横扫 NLP 各榜单,但有个大问题:BERT 的知识来自预训练语料,一旦训练完就"冻结"了。如果问它一个需要具体事实的问题(比如"爱因斯坦出生在哪里"),它只能靠参数里的模糊记忆回答。
REALM 的动机:能不能在预训练时就教会模型"不确定就去查"?
类比:普通学生背书(标准预训练),REALM 学生从小就养成"遇到不懂的查字典"的习惯——查字典这个行为本身也被纳入训练。
论文结构与格式
全文约 11 页,ICML 格式:
1. Introduction:批判参数化记忆的局限
2. REALM:模型架构 + 预训练目标
3. Fine-tuning:如何在下游任务微调
4. Experiments:开放域 QA 实验
5. Analysis:检索器学到了什么?
6. Related Work & Conclusion
核心方法/架构详解
关键思路:把"检索"变成预训练目标的一部分。
预训练任务:掩码语言建模(MLM)的增强版
标准 BERT 的 MLM:给一句话,随机遮住几个词,让模型猜被遮住的词。
REALM 的改造:猜词之前,先去知识库里检索相关文档,再用文档内容帮助猜词。
数学上,REALM 要最大化:
P(词 x | 上下文) = Σ_z P(x | z, 上下文) × P(z | 上下文)
其中 z 是检索到的文档。这意味着:正确答案的概率 = 在所有可能的参考文档上求和。
两个编码器:
- 知识检索器(Knowledge Retriever):BERT 编码问题,另一个 BERT 编码文档,用内积算相关性
- 知识增强编码器(Knowledge-Augmented Encoder):把问题和检索到的文档拼接,用 Transformer 处理,最终预测答案
关键工程挑战:如何在训练时高效检索?
每次更新参数,文档的向量表示都会变,所以需要定期重建 FAISS 索引(论文称为"异步索引刷新")。这是 REALM 最有工程价值的贡献之一。
主要创新点
- 首次将检索器嵌入预训练阶段(而非微调阶段),让模型从零开始学会检索
- 检索器与语言模型联合优化,检索行为有梯度更新
- 提出异步 FAISS 索引刷新机制,解决训练时检索器参数变化的问题
- 提出"Salient Span Masking":只遮住实体或日期等"需要知识"的词,避免浪费训练在无意义的词上
实验设置
- 数据集:Natural Questions、WebQuestions、TriviaQA
- 基线:T5(闭卷)、DrQA(稀疏检索)、GPT-2
- 指标:Exact Match (EM)
- 知识库:维基百科(2018 年版)
- 算力:TPU v3 Pod,训练成本较高(论文提到约 600 TPU 小时)
写作风格特点
- 数学推导严谨,EM 概率框架完整
- 有详细的消融实验(证明"Salient Span Masking"很重要)
- Analysis 部分展示了检索器确实学到了有意义的语义匹配
图表亮点
- Figure 1(REALM 流程图):清晰展示了预训练阶段如何嵌入检索,与标准 MLM 的对比一目了然。
- Table 2(开放域 QA 结果):REALM 用 BERT-base 规模就接近了 T5-11B 的性能,说明检索的价值。
新手阅读建议
- 精读:Section 2(REALM 架构)+ Figure 1
- 可跳过:数学推导细节(Section 2.3 的梯度部分)可以先跳过,理解思路即可
- 注意:这篇是 RAG 原论文的前身,建议先读 REALM 再读 RAG 原论文,理解"预训练检索"到"微调检索"的演进
论文 3:DPR
标题:Dense Passage Retrieval for Open-Domain Question Answering
arXiv:2004.04906
作者:Vladimir Karpukhin 等(Facebook AI Research)
发表:EMNLP 2020
一句话概括
用双塔 BERT 编码器做稠密向量检索,大幅超越传统关键词检索(BM25),成为现代 RAG 系统的"标准检索器"。
背景与动机
开放域问答(Open-Domain QA)需要从海量文档中找到相关段落,传统方法是 BM25——一种基于词频统计的关键词匹配算法,用了几十年了。
BM25 的问题:纯靠关键词,理解不了语义。比如问"飞机的发明者",文档里写的是"莱特兄弟率先实现了动力飞行",BM25 可能找不到,因为关键词没重叠。
DPR 的动机:用神经网络把问题和文章都编码成向量,在向量空间里按语义相似度检索。
类比:
- BM25 = 按书名关键词找书(只能找到书名里有这几个字的)
- DPR = 按内容含义找书(哪怕书名不含关键词,只要内容相关就能找到)
论文结构与格式
全文约 12 页,EMNLP 格式:
1. Introduction:BM25 的局限性
2. Dense Passage Retrieval:双编码器架构
3. Experiments:与 BM25 对比,多数据集验证
4. Ablation Study:训练数据质量、负样本选择等
5. Qualitative Analysis:案例分析
核心方法/架构详解
双塔编码器(Bi-Encoder):
问题 q → BERT_Q → 向量 E_q(768维)
段落 p → BERT_P → 向量 E_p(768维)
相似度 = E_q · E_p(内积)
两个 BERT 编码器分别把问题和段落压缩成固定长度的向量,然后用向量内积衡量相关性。
训练方式(对比学习):
给定一个问题和一个正样本段落(包含答案),训练目标是让正样本的相似度得分远高于负样本:
- 正样本:包含答案的段落
- 负样本有两种:
- BM25 难负样本:BM25 认为相关但实际不包含答案的段落(最有挑战性)
- 批内负样本(In-batch negatives):同一个 batch 里其他问题的正样本段落
批内负样本是工程技巧:batch 里有 B 个问题,每个问题的"正样本"对其他问题来说都是负样本,这样一个 batch 实际上提供了 B×(B-1) 个负样本对,大大提高了训练效率。
离线索引构建:
训练完后,把维基百科的 2100 万个段落全部用 BERT_P 编码成向量,存入 FAISS 索引(大约需要 65GB 内存)。推理时只需实时编码问题,然后在 FAISS 里做近似最近邻搜索,毫秒级返回 Top-K 段落。
主要创新点
- 证明了稠密检索可以全面超越 BM25,彻底改变了开放域 QA 的技术路线
- 系统研究了负样本选择策略,发现 BM25 难负样本最关键
- 只用少量 QA 标注对(约 1000-64000 条)就能训练出强大检索器
- 配套了完整的训练框架和索引工具,开源代码被后续大量工作沿用
实验设置
- 数据集:NQ、TriviaQA、WebQuestions、CuratedTrec、SQuAD
- 基线:BM25、BM25+DPR(混合)、ORQA、REALM
- 指标:Top-K 检索准确率(k=20, 100),下游 EM
- 知识库:维基百科(2018 年版,约 2100 万段落)
- 训练规模:在 8 张 32GB GPU 上训练
写作风格特点
- 实验非常扎实,消融研究细致
- 语言简洁直接,不过度炫技
- 重视工程可复现性,开放了完整代码和预训练模型
图表亮点
- Table 2(检索准确率对比):DPR Top-20 准确率 vs BM25,差距悬殊,是全文最震撼的一张表。
- Table 5(负样本消融):直观展示了不同负样本选择策略的影响,对实践非常有指导价值。
新手阅读建议
- 精读:Section 2(方法)+ Section 3.1(训练细节)+ Table 2
- 可跳过:Section 5(与 Retriever 联合训练的讨论)略复杂,初读可跳
- 注意:DPR 是 RAG 原论文的检索器组件,建议这两篇配对阅读
论文 4:FiD
标题:Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering
arXiv:2007.01282
作者:Gautier Izacard, Edouard Grave(Facebook AI Research)
发表:EACL 2021
一句话概括
提出"Fusion-in-Decoder(解码器端融合)"机制,让生成模型同时参考多达 100 篇检索段落,大幅提升开放域 QA 性能。
背景与动机
RAG 原论文已经把检索器和生成器结合起来了,但有个隐患:检索段落太多时,模型处理不过来。
原来的做法("Fusion-in-Encoder")是把所有检索段落拼接成一个长输入,喂给编码器。问题是:段落越多,输入越长,Transformer 的自注意力复杂度是 O(n²),计算量爆炸,而且 BERT 类模型有 512 token 的长度限制。
FiD 的洞见:能不能把每篇段落单独编码,只在解码时融合信息? 这样编码阶段的计算复杂度是线性的,可以轻松处理 100 篇段落。
类比:
- 旧方法 = 把 100 本参考书的内容全印在一张纸上,一次性读(读不完)
- FiD = 分别精读每本参考书做笔记,写答案时综合笔记
论文结构与格式
全文约 8 页,EACL 格式(偏短),结构精炼:
1. Introduction:指出 Fusion-in-Encoder 的扩展性瓶颈
2. Fusion-in-Decoder:核心方法
3. Experimental Setup:数据集和基线
4. Results:主实验
5. Analysis:段落数量的影响、与 RAG 对比
核心方法/架构详解
关键设计:编码器独立,解码器统一
Step 1:对每篇检索段落独立编码
[问题; 段落1] → Encoder → 向量序列 H1
[问题; 段落2] → Encoder → 向量序列 H2
...
[问题; 段落K] → Encoder → 向量序列 HK
Step 2:把所有向量序列拼接
H_all = [H1; H2; ...; HK]
Step 3:解码器对 H_all 做交叉注意力,生成答案
Decoder → 读取 H_all → 生成答案 token
为什么有效?
解码器的交叉注意力(cross-attention)可以在生成每个 token 时,自由地关注所有 K 篇段落的任意位置。这比 RAG 的"独立生成后投票"更灵活——解码器可以在不同段落之间做"软融合",综合多段落的信息。
与 RAG 的关键区别:
| 方法 | 多段落处理方式 |
|---|---|
| RAG-Sequence | 对每篇文章独立生成,最后投票 |
| RAG-Token | 生成每个 token 时对所有文章求边缘概率 |
| FiD | 编码器独立处理,解码器统一融合 |
FiD 在计算上更高效(编码可以并行),在效果上也更好(解码器有更强的融合能力)。
主要创新点
- 提出编码器-解码器分离的"Fusion-in-Decoder"范式,突破段落数量限制
- 证明检索段落数量(从 10 到 100)与 QA 性能正相关,越多越好
- 架构简洁优雅,工程上易于实现
- 成为后续多跳 QA、长文档 QA 的基础架构
实验设置
- 数据集:Natural Questions(NQ)、TriviaQA
- 基线:RAG、T5、GPT-3(API 测试),REALM
- 指标:Exact Match (EM)
- 检索器:DPR(使用 RAG 论文中训练好的版本)
- 生成器:T5(base、large)
- 段落数量:实验了 10、20、50、100 篇段落
写作风格特点
- 论文很短,结构极其精炼,"一招致胜"型论文
- 方法描述清晰,配图直观
- 实验设计简洁但有力,主要靠消融实验验证核心假设
图表亮点
- Figure 1(方法对比图):Fusion-in-Encoder vs Fusion-in-Decoder 的对比,清楚展示了设计差异。
- Figure 2(段落数量 vs 性能曲线):性能随段落数量单调上升,直观说明"多多益善"。
新手阅读建议
- 精读:Section 2(方法)+ Figure 1 + Figure 2,全文一小时能读完
- 可跳过:Section 5(与 GPT-3 对比的补充实验)
- 提示:这篇是 RAG 家族里方法最优雅、最易实现的之一,建议新手作为第二篇精读的 RAG 论文
论文 5:RETRO
标题:Improving Language Models by Retrieving from Trillions of Tokens
arXiv:2112.04426
作者:Sebastian Borgeaud 等(DeepMind)
发表:ICML 2022
一句话概括
在训练阶段就整合检索机制,构建了 250 亿参数的 RETRO 模型,展示了检索增强可以让小模型媲美大 25 倍的纯语言模型。
背景与动机
前面的 RAG 方法都是"事后叠加"——先训一个语言模型,再给它装上检索模块。RETRO 问了一个更根本的问题:如果从一开始训练时就让模型学会怎么使用检索结果,会不会更好?
另一个动机:大模型训练成本极高,但检索数据库可以无限扩充且成本低。能不能用小模型+大数据库来模拟大模型的知识?
类比:
- 普通 RAG = 先培养一个数学家,毕业后给他一个图书证
- RETRO = 从小就在图书馆里上课,检索和学习同步进行
论文结构与格式
全文约 15 页,DeepMind 风格的大体量论文:
1. Introduction:大模型参数即知识的局限
2. Method:RETRO 架构(Chunked Cross-Attention)
3. Experiments:语言模型困惑度、下游任务
4. Analysis:训练时检索 vs 推理时检索、数据库大小的影响
5. Discussion:隐私、记忆泄露等伦理讨论
核心方法/架构详解
关键设计:分块交叉注意力(Chunked Cross-Attention, CCA)
RETRO 把输入文本切成固定大小的"块"(chunk),对每个块分别检索相关段落,然后通过 CCA 机制让模型在处理这个块时"看"到检索到的内容。
训练文本被切成块 C1, C2, C3, ...
对每个块 Ci:
→ 用 Ci 作为查询,从 2 万亿 token 的数据库里检索 Top-2 段落
→ 通过 CCA 层,Ci 的 Transformer 层可以额外关注这些段落
数据库规模:
RETRO 使用 Google 的 MassiveText 数据集,存了约 2 万亿 token 的文本(相比 REALM/RAG 的维基百科,规模大了 3 个数量级)。检索器是冻结的 BERT 编码器。
RETRO++ 变体:对已有语言模型做"检索增强微调",将 RETRO 的 CCA 层插入现有模型,不必从头训练。
主要创新点
- 训练时即融入检索,而非推理时才检索
- 规模前所未有:2 万亿 token 数据库,相当于参数的 12 倍"外部记忆"
- 250 亿参数的 RETRO 媲美 Gopher(280B)在困惑度上的表现
- 提出 Chunked Cross-Attention,高效处理检索结果
- 讨论了检索数据记忆泄露等伦理问题,有前瞻性
实验设置
- 评估:Pile 数据集上的困惑度(Perplexity);下游 QA(Natural Questions、Wikitext)
- 基线:Gopher(280B)、GPT-3(175B)等纯语言模型
- 模型规模:150M 到 7.5B 参数(主力是 7.5B)
- 数据库:约 2 万亿 token,用 ScaNN 做近似最近邻
写作风格特点
- DeepMind 风格:理论推导+工程细节+伦理讨论三位一体
- 图表丰富,有大量消融实验
- 伦理讨论部分在 LLM 论文里罕见,值得关注
图表亮点
- Figure 1(模型规模 vs 困惑度曲线):小 RETRO 模型超越大得多的纯语言模型,冲击力很强。
- Figure 3(数据库大小影响):展示数据库越大,效果越好,有明确的 scaling law。
新手阅读建议
- 精读:Section 2(方法)+ Figure 1 + Figure 3
- 可跳过:Section 3 里关于困惑度的理论分析(数学较多,初读可跳)
- 提示:这篇难度较高,建议先读 RAG 原论文和 FiD,再来读 RETRO
论文 6:Atlas
标题:Atlas: Few-Shot Learning with Retrieval Augmented Language Models
arXiv:2208.03299
作者:Gautier Izacard 等(Meta AI Research)
发表:JMLR 2023
一句话概括
在少样本学习场景下,通过联合微调检索器和生成器(加上多种检索器更新策略),让 11B 参数的 RAG 模型在少量样本下超越 540B 参数的 PaLM。
背景与动机
GPT-3 发布后,"少样本学习(few-shot learning)"成为热门:只给模型几个例子,它就能完成任务。但 GPT-3 是 1750 亿参数的巨型模型,成本极高。
能不能用更小的模型 + 检索来实现同样的少样本能力?这就是 Atlas 的出发点。
痛点:之前的 RAG 方法在微调时通常只更新生成器,检索器是固定的(或者联合更新但不稳定)。Atlas 系统研究了如何在少样本场景下联合高效地更新检索器和生成器。
类比:
- 大模型少样本 = 一个见过一切的天才,看两个例子就懂了
- Atlas = 一个聪明的学生+图书馆,给几个例子,主动查资料,照样能学会
论文结构与格式
全文约 20 页(JMLR 期刊格式,较长),结构:
1. Introduction:少样本 RAG 的动机
2. Atlas 系统:架构(FiD 生成器 + Contriever 检索器)
3. 检索器微调策略:4 种方法的比较
4. 预训练:如何预训练 Atlas
5. Experiments:少样本 QA、事实核查等
6. Analysis:详细消融
核心方法/架构详解
架构基础:Atlas 建立在 FiD(生成器)+ Contriever(检索器)之上。
Contriever(Facebook 开源的无监督稠密检索器):用对比学习在无标注数据上训练,不需要人工标注 QA 对,泛化性强。
四种检索器微调策略(这是 Atlas 最重要的贡献之一):
- EMDR²(End-to-end training with EM):用期望最大化(EM 算法)把检索当作隐变量,通过生成损失间接优化检索器
- PDist(Perplexity Distillation):用生成器对各段落的困惑度作为信号,蒸馏回检索器
- LOOP(Leave-one-out):依次去掉每篇段落,看生成质量变化,反馈给检索器
- ADist(Attention Distillation):用解码器对各段落的注意力权重蒸馏回检索器
实验发现 EMDR² 在少样本场景下最有效。
少样本微调流程:
预训练 Atlas(无监督检索+生成预训练)
↓ 只给 K 个(K=4/16/64)标注样本
联合微调 检索器 + 生成器
↓
评估
主要创新点
- 系统比较了多种检索器微调策略,为社区提供了清晰的选型指南
- 在极少样本(如 64 个样本)下,11B 参数的 Atlas 超越了 540B 的 PaLM
- 首次大规模验证了 RAG 在少样本学习上的 scaling 优势
- 开源了完整系统(包括 Contriever、FiD、训练代码)
实验设置
- 数据集:KILT(知识密集型任务基准,含 NQ、TriviaQA、T-REx 等多任务);MMLU(学科知识评测)
- 基线:GPT-3(175B)、PaLM(540B)、Codex、T5
- 少样本设置:4-shot、16-shot、64-shot
- 指标:EM、F1、Accuracy
- 算力:64 张 A100,训练约 2 周
写作风格特点
- JMLR 期刊风格,实验极其全面
- 有清晰的"消融表格"对比不同策略
- 写作偏工程,实践指导价值高
图表亮点
- Table 1(少样本 KILT 结果):Atlas 11B vs PaLM 540B,以小博大的对比表,是全文高潮。
- Figure 2(不同检索器策略对比图):直观展示 4 种策略在不同样本量下的优劣,指导实践。
新手阅读建议
- 精读:Section 3(检索器策略)+ Table 1 + Figure 2
- 可跳过:KILT 各子任务的细节结果(太多了,看总体趋势即可)
- 提示:这篇适合已经了解 FiD 的读者,FiD → Atlas 是很好的阅读路径
论文 7:HyDE
标题:Precise Zero-Shot Dense Retrieval without Relevance Labels
arXiv:2212.10496
作者:Luyu Gao 等(CMU)
发表:ACL 2023
一句话概括
让 LLM 先"假装"生成一个答案文档,再用这个假设性文档的向量去检索真实文档,从而提升零样本检索质量。
背景与动机
稠密检索器(如 DPR、Contriever)的向量空间有一个不对称问题:查询(问题)和文档(答案)的语义分布不同。问题往往很短、不完整,而相关文档很长、信息丰富,它们在向量空间里可能相距较远。
传统做法需要大量标注的"问题-文档"对来训练检索器,解决这种不对称性。但标注成本高,且泛化差。
HyDE 的洞见:LLM 可以"凭空"生成一个假设性的答案文档,这个假设文档和真实文档在向量空间里更接近,因为它们都是文档风格的文本。
类比:
- 传统检索 = 你用一句问话去图书馆找书,司书不一定能理解你的简短问题
- HyDE = 你先根据问题写一篇小短文(哪怕是猜的),拿这篇小短文去找相似的书,效果更好
论文结构与格式
全文约 9 页,ACL 格式:
1. Introduction:查询-文档不对称问题
2. HyDE:方法描述(极简单,是优点)
3. Experiments:多语言、多任务检索实验
4. Analysis:假设文档的质量影响、不同 LLM 的效果
5. Conclusion
核心方法/架构详解
流程(极其简洁):
Step 1:用 LLM 生成假设性文档
输入:原始查询 q
提示词:根据问题写一段相关文档(零样本,LLM 直接生成,可能不完全准确)
输出:假设性文档 d̃(可能包含幻觉,但结构像答案文档)
Step 2:用假设性文档做检索
编码:d̃ → Encoder → 向量 e
检索:在文档库里找与 e 最相似的真实文档
返回:Top-K 真实文档
Step 3:把真实文档喂给 LLM 生成最终答案
(标准 RAG 流程)
为什么有效?
即使假设文档包含幻觉(事实错误),但它的写作风格和结构与真实文档一致,因此在向量空间里距离真实文档更近,相当于做了一次"查询扩展"。
理论解释:论文用高斯分布做了一个简单的数学分析——假设文档是真实文档分布上的一个样本,用它做检索相当于在文档分布上的软最近邻搜索。
主要创新点
- 无需任何标注数据,零样本提升检索质量
- 方法极其简洁:一段提示词 + 现成的 LLM + 现成的检索器
- 证明 LLM 的"幻觉"可以被正向利用(只要形式对,内容不必完全准确)
- 在多语言检索场景下效果尤其显著(跨语言 BEIR)
实验设置
- 数据集:BEIR 基准(18 个检索任务,包括多领域、多语言);TREC DL(精准检索)
- 基线:BM25、Contriever、DPR(有监督)
- LLM:InstructGPT(text-davinci-003)用于生成假设文档
- 编码器:Contriever-MSMARCO
- 指标:nDCG@10
写作风格特点
- 论文非常短,方法部分只有半页,但实验扎实
- 理论分析简洁直观
- 案例分析(Appendix)展示了假设文档的样子,很直观
图表亮点
- Figure 1(HyDE 流程图):三步流程一目了然,是理解该方法的最佳入口。
- Table 2(BEIR 多任务结果):HyDE 零样本超越有监督的 DPR,结果令人印象深刻。
新手阅读建议
- 精读:Section 2(方法)+ Figure 1,整篇可以在 30 分钟内读完
- 提示:这篇是 RAG 论文里对新手最友好的之一,方法直观,实验清晰
- 拓展:读完可以立即动手实验,用 ChatGPT API + 任意向量检索器复现
论文 8:FLARE
标题:Active Retrieval Augmented Generation
arXiv:2305.06983
作者:Zhengbao Jiang 等(CMU)
发表:EMNLP 2023
一句话概括
让语言模型主动判断何时需要检索,通过预测下一句是否包含不确定内容来动态触发检索,而非每次都检索。
背景与动机
早期 RAG 方法(包括 RAG 原论文)的检索策略是"一次性"的:给定问题,检索一次,生成全部答案。这对短问答还好,但对需要生成长文本的任务(比如写一篇文章、回答多步问题)就不够了——生成到后半段时,最初检索的内容可能已经不相关了。
FLARE 的问题:能不能让模型像人一样,"写到不确定的地方才去查资料"?
类比:
- 固定检索 RAG = 考试前查一次资料,然后闭卷答题
- FLARE = 开卷考试,每写到不会的地方才翻书
论文结构与格式
全文约 10 页,EMNLP 格式:
1. Introduction:长文本生成中固定检索的局限
2. FLARE:主动检索框架(两种变体)
3. Experiments:长文本生成任务
4. Analysis:检索时机分析、不同触发策略比较
5. Conclusion
核心方法/架构详解
FLARE 的核心循环:
当前已生成文本 = ""
重复:
1. LLM 基于已有文本生成"下一句"(作为临时预测)
2. 检查临时预测中是否有低置信度的 token(概率低于阈值)
3. 如果有 → 用临时预测作为查询,检索相关段落,重新生成这一句
4. 如果没有 → 把临时预测加入正式输出
直到生成结束
两种变体:
- FLARE direct:直接用低置信度 token 附近的文本作为检索查询
- FLARE instruct:用 few-shot 提示让 LLM 自己决定"生成搜索指令"(类似 ReAct)
关键设计:置信度作为检索触发信号
LLM 在生成每个 token 时都会输出概率(logit)。如果某段文本里有 token 的概率很低(比如 < 0.5),说明模型"不确定",就触发检索。
这是一个巧妙的"自监控"机制——模型的内部状态(概率)直接驱动外部行为(检索)。
主要创新点
- 首次系统提出"主动(Active)检索"框架,按需检索而非固定检索
- 用 token 置信度作为检索触发信号,无需额外训练
- 用"预测下一句"作为检索查询,解决了长文本生成中查询过时的问题
- 实验涵盖多种长文本生成任务,超越了 baseline 的固定检索方案
实验设置
- 数据集:StrategyQA(多步推理)、ASQA(长答案 QA)、WikiAsp(多文档摘要)、ConditionalQA
- 基线:标准 RAG(一次检索)、Demonstrate-Search-Predict
- LLM:GPT-3.5(text-davinci-003),通过 API 调用
- 检索器:BM25(Elasticsearch)、DPR
- 指标:EM、F1、ROUGE
写作风格特点
- 方法描述通过伪代码+流程图,工程导向明显
- 消融实验细致,分析了置信度阈值、检索时机等
- 案例分析部分直观展示了"何时触发检索"的效果
图表亮点
- Figure 1(FLARE 流程示意图):用例子展示了检索触发的时机,比文字描述更直观。
- Table 1(多任务结果):在多个任务上全面比较,展示主动检索的优势。
新手阅读建议
- 精读:Section 2(方法)+ Figure 1
- 可跳过:Section 4.3 的错误分析(较细节)
- 提示:FLARE 和 Self-RAG 可以配对阅读,前者用置信度触发检索,后者用特殊 token 触发,思路互补
论文 9:Self-RAG
标题:Self-RAG: Learning to Retrieve, Generate, and Critique
arXiv:2310.11511
作者:Asai 等(华盛顿大学)
发表:ICLR 2024
一句话概括
训练 LLM 在生成时插入特殊"反思标记(Reflection Tokens)",让模型自主决定是否检索、检索内容是否相关、生成内容是否真实可靠,实现全流程自我监控。
背景与动机
FLARE 已经让模型决定"何时检索",但还有更多问题没解决:
- 检索到的内容真的相关吗?(可能检索噪音)
- 生成的答案真的忠实于检索内容吗?(可能忽略检索内容,照样幻觉)
- 生成的答案整体质量如何?(可能正确但不完整)
Self-RAG 要打造一个会自我审视的模型,生成时边写边检查,发现问题立刻纠正。
类比:
- 普通 RAG = 查完资料直接写作,不回头检查
- Self-RAG = 写作时随时自问:"我查到的资料相关吗?我写的这句话有依据吗?整体答案质量够好吗?"
论文结构与格式
全文约 15 页,ICLR 格式:
1. Introduction:RAG 的残留问题
2. Self-RAG Framework:反思标记的设计与训练
3. Inference:推理时的解码策略
4. Experiments:多任务评估
5. Analysis:消融实验
核心方法/架构详解
反思标记(Reflection Tokens)——Self-RAG 的核心设计:
Self-RAG 在训练时给 LLM 引入了 4 种特殊 token,让模型"说出自己的思考过程":
| 标记 | 含义 | 可能取值 |
|---|---|---|
[Retrieve] |
是否需要检索? | Yes / No / Continue |
[IsREL] |
检索到的段落是否与问题相关? | Relevant / Irrelevant |
[IsSUP] |
生成内容是否得到段落支持? | Fully / Partially / No |
[IsUSE] |
生成内容总体是否有用? | 1-5 分 |
训练流程:
- 用 GPT-4 对训练数据中的每个样本打上反思标记(数据增强)
- 用这些带标记的数据微调 Llama-2(7B/13B)
- 微调后的模型已经学会在合适的位置插入这些标记
推理时的使用:
生成时:
- 遇到 [Retrieve=Yes] → 触发检索,获取段落
- 遇到 [IsREL=Irrelevant] → 忽略该段落,继续
- 遇到 [IsSUP=No] → 重新生成这段内容
- 用 [IsUSE] 分数在 beam search 里排序候选答案
这相当于把"检索决策 + 质量评估"内化为模型自身的生成行为,不需要外部打分模型。
主要创新点
- 首次将检索决策和质量评估都变成 LLM 自身的生成行为(而非外部模块)
- 端到端训练:只需微调一个模型就包含了全部功能
- 推理时可以通过调整不同标记的权重灵活控制"事实性"和"流畅性"的权衡
- 在事实准确性要求高的任务(医疗、法律 QA)上表现显著优于无反思的 RAG
实验设置
- 数据集:PopQA(事实 QA)、TriviaQA、ASQA(长答案)、ARC(科学推理)、MedQA(医疗 QA)
- 基线:ChatGPT、Llama-2、RAG(标准)、FLARE
- 模型:在 Llama-2-7B 和 13B 上微调
- 指标:EM、F1、ROUGE、Citation Recall/Precision(引用质量)
- 训练数据:约 15 万条,用 GPT-4 生成反思标记
写作风格特点
- 创意性很强,反思标记的设计新颖
- 实验任务多样,覆盖面广(通用 + 领域专用)
- 图表多,展示了反思标记分布、性能分析等细节
图表亮点
- Figure 1(Self-RAG 生成示例):用一段真实输出展示 4 种反思标记如何嵌入文本,非常直观。
- Table 2(多任务结果):在多个任务上 7B 的 Self-RAG 超越 ChatGPT,非常有说服力。
新手阅读建议
- 精读:Section 2(反思标记设计)+ Figure 1 + Table 2
- 可跳过:Section 4.3(推理时的精细解码策略,较技术性)
- 提示:建议 FLARE 和 Self-RAG 配对阅读,体会"何时检索"这个问题的不同解决思路
论文 10:CRAG
标题:Corrective Retrieval Augmented Generation
arXiv:2401.15884
作者:Shi-Qi Yan 等(哈工大 + 微软亚研院)
发表:ICLR 2024 Workshop(后收录主会)
一句话概括
对检索结果进行质量评估,当检索质量差时自动触发网络搜索进行补充纠错,从而提升 RAG 系统的鲁棒性。
背景与动机
所有 RAG 系统都有一个隐患:如果检索器找到的内容是错的或不相关的,生成器会被"带偏",产生错误甚至更自信的幻觉。
前面的方法(FLARE、Self-RAG)主要关注"何时检索",但没有认真处理"检索到的内容质量差怎么办"这个问题。
CRAG 的问题:能不能在使用检索结果之前,先评估一下质量,不好就重新找?
类比:
- 普通 RAG = 查到资料就用,不管对不对
- CRAG = 查到资料先检查一遍:好资料直接用;一般资料提炼关键信息;烂资料扔掉,去网上重查
论文结构与格式
全文约 9 页,ICLR Workshop 风格(精炼):
1. Introduction:检索质量问题
2. CRAG:评估器 + 三种行动策略 + 网络搜索
3. Experiments:多数据集对比
4. Ablation & Analysis
5. Conclusion
核心方法/架构详解
CRAG 的三步流程:
Step 1:检索
标准 RAG 检索 Top-K 段落
Step 2:质量评估(轻量级评估器)
评估器(小型分类器或 LLM)对每篇段落打分:
- Correct(高度相关,置信度高)
- Ambiguous(中等相关,不确定)
- Incorrect(无关或有误导)
Step 3:按评分采取不同行动
- Correct → 直接使用(精炼提取关键知识)
- Incorrect → 放弃,转向网络搜索(Bing API)
- Ambiguous → 检索结果 + 网络搜索结合使用
知识精炼(Knowledge Refinement):
即使是 Correct 的段落,也不是全文都有用。CRAG 用一个"分解-过滤-重组"的流程:
1. 把段落拆成更细的知识块
2. 对每个知识块单独评分
3. 只保留最相关的知识块
这类似于读文献时"画重点",而不是把整篇文章都复制进笔记。
网络搜索集成:
当检索质量不够时,CRAG 调用实时网络搜索(论文用 Bing Search API),获取最新、更可靠的信息。这使得 CRAG 具备了处理时效性问题的能力。
主要创新点
- 首次将"检索质量评估"作为独立模块插入 RAG 流程
- 三种行动策略(正确/模糊/错误)对应不同处理方式,有针对性
- 集成实时网络搜索作为"备用检索",突破了静态知识库的限制
- 轻量级评估器(可以是小模型)不显著增加推理成本
- 可插拔设计:可以套在任何现有 RAG 系统上
实验设置
- 数据集:PopQA、Biography(长文本生成)、PubHealth(医疗事实)、ARC-Challenge
- 基线:标准 RAG、Self-RAG、ChatGPT
- 评估器:用 T5-large 微调的二分类器(判断段落是否相关)
- 网络搜索:Bing Search API(实时检索)
- 指标:EM、F1、ROUGE-L、FactScore(事实准确率)
写作风格特点
- 流程图清晰,三步流程一目了然
- 实用主义导向,工程落地友好
- 案例分析展示了三种行动策略在真实场景中的效果差异
图表亮点
- Figure 1(CRAG 三步流程图):用颜色区分三种评估结果和对应行动,非常清晰。
- Table 1(多数据集结果):在需要时效性知识的任务上,CRAG 显著优于静态知识库 RAG。
新手阅读建议
- 精读:Section 2(CRAG 方法)+ Figure 1
- 可跳过:Section 4.3(知识精炼的详细实现)
- 提示:CRAG 是目前工程落地最友好的"自适应 RAG"方案之一,推荐有实际落地需求的读者重点关注
论文 11:RAG 综述
标题:Retrieval-Augmented Generation for Large Language Models: A Survey
arXiv:2312.10997
作者:Yunfan Gao 等(同济大学等)
发表:预印本(2023),被广泛引用
一句话概括
系统梳理了 RAG 的发展历程、技术分类和未来挑战,是理解整个 RAG 生态的"导航地图",也是入门 RAG 领域最推荐的综述。
背景与动机
RAG 领域在 2023 年爆炸式增长,各种变体、改进方法层出不穷,研究者和工程师需要一份系统梳理。这篇综述恰逢其时,提供了:
- RAG 技术的发展脉络(从早期到高级)
- 各组件的分类与比较(检索器、生成器、融合方式)
- 主要评估基准和评估维度
- 工业应用场景
- 未来研究方向
类比:这篇论文就像一本"RAG 百科全书目录",告诉你这个领域有哪些重要的书,每本书讲什么,从哪里开始读。
论文结构与格式
全文约 30 页,综述格式:
1. Introduction:RAG 的定义和重要性
2. Background:RAG 解决的问题背景
3. RAG Foundation:早期基础(Naive RAG)
4. Advanced RAG:高级改进(预检索、检索时、后检索优化)
5. Modular RAG:模块化 RAG 框架
6. RAG vs. Fine-tuning:与微调的比较
7. Evaluation:评估框架和基准
8. Applications:工业应用场景
9. Future Directions:研究方向
10. Conclusion
核心内容详解
综述提出的三代 RAG 框架:
-
Naive RAG(基础 RAG):直接检索-生成,代表工作是 RAG 原论文。问题:检索精度低、生成可能忽略检索内容。
-
Advanced RAG:对流程各环节进行优化:
- 预检索优化:查询改写(HyDE、多查询)、数据清洗
- 检索时优化:稠密检索、混合检索(BM25+向量)、重排序
- 后检索优化:上下文压缩、相关性过滤 -
Modular RAG:将 RAG 各组件解耦,可以灵活组合,代表工作是 Self-RAG、CRAG 等。
RAG vs. Fine-tuning 对比(重要内容):
| 维度 | RAG | Fine-tuning |
|---|---|---|
| 知识更新 | 实时,更新数据库即可 | 需要重训练 |
| 可解释性 | 高(有来源可追溯) | 低 |
| 训练成本 | 低(推理时检索) | 高(需要大量标注数据) |
| 领域适应 | 中等 | 高 |
| 幻觉控制 | 强 | 中等 |
结论:RAG 和微调不是对立关系,最佳方案往往是两者结合(先微调让模型适应格式,再用 RAG 提供知识)。
评估维度:
综述整理了 RAG 系统评估的三个关键维度:
- 检索质量:相关性、准确率、召回率
- 生成质量:流畅性、相关性、忠实度(是否符合检索内容)
- 下游任务性能:EM、F1、ROUGE 等
主要贡献
- 提出清晰的 RAG 三代分类框架(Naive/Advanced/Modular),被后续大量引用
- 系统梳理超过 100 篇相关工作,覆盖面全
- 提供了 RAG vs. 微调的决策框架,有实践指导价值
- 整理了主要评估基准和工具,帮助研究者快速定位评测方法
- 提出了 RAG 领域未来的关键挑战(长上下文、多模态、垂直领域等)
写作风格特点
- 中文团队写英文综述,表达流畅但偶有冗余
- 图表丰富,RAG 演进时间线、技术分类树等图表设计清晰
- 偏分类整理,不做深入的理论分析
- 更新较快,有多个版本(截至发表时 arXiv 已有 v5+)
图表亮点
- Figure 1(RAG 三代演进对比图):用对比图展示 Naive/Advanced/Modular RAG 的差异,是全文最有价值的图。
- Figure 2(RAG 技术全景图):列出了各技术组件和对应论文,是入门时的"选书书单"。
- Table 3(主要评估数据集汇总):非常实用,快速定位自己的任务应该用什么数据集。
新手阅读建议
- 阅读策略:这篇不必精读每一节,建议作为索引使用
- 第一遍:读 Introduction + Section 3(三代 RAG 框架)+ Figure 1,建立整体观
- 按需查阅:遇到某个具体问题(比如"怎么优化检索器")时,翻对应的 Advanced RAG 小节
- 配合使用:和本导读合集配合,把这篇综述当作"找论文"的工具,把具体导读当作"理解论文"的工具
- 可跳过:Application 部分(泛泛而谈,工程细节不足)
附录:快速参考表
| 论文 | 核心创新 | 难度 | 推荐阅读顺序 |
|---|---|---|---|
| RAG 原论文 | RAG 框架正式提出 | ★★★ | 1 |
| REALM | 预训练阶段嵌入检索 | ★★★★ | 2 |
| DPR | 稠密向量检索,超越 BM25 | ★★★ | 3(与 RAG 原论文配读) |
| FiD | Fusion-in-Decoder 多段落融合 | ★★ | 4 |
| RETRO | 训练时检索,万亿 token 数据库 | ★★★★★ | 7 |
| Atlas | 少样本联合微调检索器+生成器 | ★★★★ | 6 |
| HyDE | 假设文档改善零样本检索 | ★★ | 5 |
| FLARE | 按置信度主动触发检索 | ★★★ | 8 |
| Self-RAG | 反思标记全流程自我监控 | ★★★★ | 9 |
| CRAG | 检索质量评估+自动纠错 | ★★★ | 10 |
| RAG 综述 | 系统梳理整个 RAG 领域 | ★★(浏览) | 0(先读,建立全局观) |
新手推荐入门路径:
RAG 综述(建立全局观)
↓
RAG 原论文(理解基础框架)
↓
DPR(理解稠密检索)
↓
FiD(理解多段落融合)
↓
HyDE(轻松的零样本检索改进)
↓
FLARE / Self-RAG(主动/反思 RAG)
↓
CRAG(工程落地视角)
↓
REALM / Atlas / RETRO(深入研究)
本导读合集基于各论文 arXiv 版本及公开资料整理,面向零基础新手,重在概念理解而非数字复述。如需查阅具体实验数据,请参阅原论文。