一句话总结:本文提出了 RAG(Retrieval-Augmented Generation)模型,将预训练的 seq2seq 模型(parametric memory)与基于 DPR 的 Wikipedia 向量索引(non-parametric memory)相结合,端到端训练,在多个开放域 QA 任务上达到 SOTA,并证明了 RAG 生成的回答比纯参数模型更具体、多样和事实准确。


Intro

Motivation

大语言模型虽然能在参数中存储知识,但存在根本性局限:

  1. 知识难以更新和修正:参数化的知识嵌入在权重中,无法灵活更新
  2. 缺乏可解释性:无法追溯预测的知识来源
  3. 容易产生幻觉(hallucination):尤其是对长尾知识
  4. 知识密集型任务上的表现不如 task-specific 架构

作者认为,将预训练的生成模型与可显式访问的非参数化记忆相结合,可以同时解决上述问题。

贡献

  1. 提出 RAG:将预训练 seq2seq model(BART)+ 预训练 retriever(DPR)+ Wikipedia 向量索引组合成统一的概率模型,端到端训练
  2. 两种变体:RAG-Sequence(整个序列使用同一检索文档)和 RAG-Token(每个 token 可用不同检索文档)
  3. 三个开放域 QA 任务 SOTA:Natural Questions、WebQuestions、CuratedTrec
  4. 知识更新能力:无需重新训练,仅替换文档索引即可更新模型的世界知识
  5. 生成质量提升:RAG 生成的回答比纯 BART 更具体(specific)、更多样(diverse)和更事实(factual)

Method 核心方法

Figure 1: RAG 架构概览。将预训练的检索器(Query Encoder + Document Index)与预训练的 seq2seq 生成器(Generator)结合,端到端微调。对于 query x,使用 MIPS 检索 top-K 文档 z_i,最终的预测 y 通过边缘化不同文档下的生成结果得到。

1. 模型架构

RAG 的核心是:将检索文档作为潜在变量(latent variable),在 seq2seq 生成过程中通过边缘化(marginalization)来使用检索到的知识

组件:

  • Retriever:Dense Passage Retriever (DPR),基于 BERT_BASE 双编码器,预计算 Wikipedia 文档的向量索引(21M 文档,每个 100 词)
  • Generator:BART-large(400M 参数),预训练的 seq2seq Transformer
  • Non-parametric Memory:Wikipedia 全文向量索引,通过 FAISS 的 MIPS(最大内积搜索)实现快速检索

2. RAG-Sequence

整个生成序列使用同一个检索文档。概率模型为:

解码时:对每个 top-K 文档分别做 beam search,然后对 beam 中的假设做边缘化(Thorough Decoding)或近似边缘化(Fast Decoding)。

3. RAG-Token

每个目标 token 可以依赖不同的检索文档。概率模型为:

解码更简单:将每个 token 的生成概率替换为对所有文档的边缘化概率,然后标准 beam search。

4. 训练

端到端训练,无检索监督信号(不需要标注”哪个文档是正确的”):

  • 文档编码器 BERT_d 冻结(避免频繁重建索引)
  • Query 编码器 BERT_q 和 BART 生成器可训练
  • 损失函数:负对数似然,Adam 优化器

5. Wiki 知识源更新

非参数记忆可以随时替换:将 Wikipedia 索引从 2018 年版本替换为 2022 年版本,模型无需重新训练即可适应新知识。


实验/评估/结果

开放域 QA(核心结果)

Figure 3: (左)NQ 性能随检索文档数的变化;(中)NQ 检索召回率;(右)MS-MARCO Bleu-1 和 Rouge-L 随检索文档数的变化。RAG 仅需少量文档即可达到高召回率。

数据集RAG之前 SOTA说明
Natural QuestionsSOTADPR / REALM生成式回答首次超越抽取式
TriviaQASOTAT5-11B无需专门预训练即超越
WebQuestionsSOTADPR
CuratedTrecSOTADPR

关键发现:尽管这些任务通常被设计为”抽取式”(从文档中提取答案 span),RAG 的自由形式生成反而优于之前的抽取式方法。

Abstractive QA (MS-MARCO)

  • RAG 在 MS-MARCO NLG 任务上生成更具体、更多样的回答
  • 比 BART baseline 的回答事实性更高
  • 即使某些问题在 Wikipedia 中找不到答案,RAG 仍能依赖参数化知识生成合理回答

Jeopardy 问题生成

  • RAG 生成的 Jeopardy 问题比 BART 更具体、更多样
  • 人类评估:RAG 生成的问题比 BART 更”factual”和”specific”

FEVER 事实验证

  • RAG 在 FEVER 上达到与使用强检索监督的 pipeline 模型仅差 4.3% 的性能
  • 说明了 RAG 在不需要检索监督的情况下即可接近监督检索系统

消融实验

  • 同时训练 retriever 和 generator 优于仅训练 generator
  • Top-K 从 5 增加到 10 带来小幅提升
  • RAG-Sequence vs RAG-Token:性能接近,任务依赖

结论

RAG 开创了”检索增强生成”的范式——将语言模型的知识输出与外部知识库的检索相结合。这个范式解决了纯参数模型知识难以更新、缺乏可解释性、容易幻觉等问题。RAG 在知识密集型任务上达到了 SOTA,并证明了其生成质量在事实性和多样性方面的优势。


思考

优点

  1. 范式的开创性:RAG 不是对某个具体架构的改进,而是在方法论层面提出了一个新范式:“检索+生成”的混合架构。这篇论文成为 retrieval-augmented generation 整个子领域的奠基之作。

  2. 端到端训练不依赖检索监督:retriever 和 generator 联合训练不需要标注”哪个文档相关”——这正是为什么它叫 latent variable model。这在实际中非常重要,因为获取检索标注的成本极高。

  3. 模块化的优雅设计:retriever 和 generator 各自基于已有预训练组件(DPR 和 BART),通过概率公式联结起来。这种”组合已有组件创建新系统”的方法是 modern AI 工程的核心范式。

  4. 知识更新的实际价值:无需重新训练即可更新模型的世界知识——这在知识不断更新的实际应用中价值巨大。

缺点与局限

  1. 只检索 Wikipedia:知识源仅限 Wikipedia,覆盖范围有限。现实世界的知识密集型任务需要更多样化的知识源(代码库、企业文档、实时信息等)。

  2. 检索器质量的基础限制:RAG 的性能很大程度上受限于 DPR。如果前 K 个文档不包含正确答案,生成器无论如何也无法产出正确答案——这是所有 RAG 系统的根本瓶颈。

  3. 生成器-检索器的联合训练不够深:虽然论文声称端到端训练,但文档编码器是冻结的。这意味着 retrieval index 不能随着生成器的学习而优化,存在优化 gap。

  4. 上下文窗口受限:BART 的输入窗口有限,只能拼接有限数量的检索文档。后来随着长上下文 LLM 的发展,这个问题得到了缓解。

与已有 Wiki 的连接