Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

作者: Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela 年份: 2020 会议: NeurIPS 分类: 高效推理与部署

论文笔记:RAG

元信息

项目内容
机构Facebook AI Research (FAIR), University College London, New York University
日期May 2020
对比基线BART, T5, DPR, Extractive QA SOTA
链接arXiv

一句话总结

提出 检索增强生成(RAG) 框架,将 DPR 检索器与 BART 生成器结合,通过在生成过程中边际化(marginalize)检索到的文档,在开放域问答等知识密集型任务上建立新 SOTA。

核心贡献

参数记忆 + 非参数记忆的统一框架: 将预训练语言模型的参数化知识(parametric memory)与外部文档索引的非参数化知识(non-parametric memory)融合,形成端到端可训练的 RAG 模型

两种边际化策略: 提出 RAG-Sequence 和 RAG-Token 两种文档边际化方式,分别适用于不同的生成场景

知识可更新: 非参数记忆(文档索引)可以随时替换和更新,无需重新训练模型——这是纯参数化模型无法做到的

开放域 QA 新 SOTA: 在 Natural Questions、TriviaQA、WebQuestions 等 benchmark 上超越当时所有抽取式和生成式方法

问题背景

要解决的问题

预训练语言模型将知识”压缩”在参数中,存在三个根本问题:(1) 知识更新需要重新训练;(2) 无法追溯知识来源;(3) 对长尾和最新知识的记忆不可靠

现有方法的局限

纯参数化生成模型GPT-2, BART): 生成时只依赖参数记忆,对罕见事实容易幻觉

抽取式问答模型(DPR + reader): 只能从检索到的文档中抽取片段作为答案,无法生成、改写或综合多文档信息

REALM (Guu et al., 2020): 将检索融入 BERT 预训练,但仅限于抽取式任务,不支持生成

本文的动机

如果能让生成模型在生成每个答案时”查阅”外部文档库,就能结合参数化知识的泛化能力和非参数化知识的精确性与可更新性

方法详解

整体架构

RAG 由两个核心组件组成:

  1. 检索器 pη(zx)p_\eta(z|x): 基于 DPR(Dense Passage Retrieval),使用 BERT 编码 query 和 document,通过最大内积搜索(MIPS)检索 Top-K 相关文档
  2. 生成器 pθ(yix,z,y1:i1)p_\theta(y_i|x, z, y_{1:i-1}): 基于 BART(seq2seq 模型),将检索到的文档与原始输入拼接后生成答案

RAG-Sequence 模型

思路: 对整个生成序列使用同一个检索文档,然后对不同文档的结果进行边际化

适用场景: 答案倾向于来自单一文档的情况(如问答)

RAG-Token 模型

思路: 对每个生成 token 独立检索和边际化文档,允许不同 token 从不同文档获取信息

适用场景: 需要综合多文档信息的情况(如长文本生成)

训练方式

检索器初始化: 使用预训练的 DPR 模型(query encoder + document encoder)

生成器初始化: 使用预训练的 BART-large

文档索引: 使用 Wikipedia 的 21M 段落,通过 FAISS 实现高效 MIPS 检索

端到端训练: 联合优化检索器的 query encoder 和生成器参数(document encoder 冻结)

Top-K 文档: 默认检索 Top-5 或 Top-10 文档

关键公式

公式1: RAG-Sequence 边际化

pRAG-Seq(yx)ztop-k(p(x))pη(zx)i=1Npθ(yix,z,y1:i1)p_{\text{RAG-Seq}}(y|x) \approx \sum_{z \in \text{top-}k(p(\cdot|x))} p_\eta(z|x) \prod_{i=1}^{N} p_\theta(y_i|x, z, y_{1:i-1})

含义: 对 Top-K 检索文档求边际概率,每个文档独立生成完整答案序列后加权求和

符号说明:

  • xx: 输入问题
  • y=(y1,,yN)y = (y_1, \ldots, y_N): 生成的答案序列
  • zz: 检索到的文档
  • pη(zx)p_\eta(z|x): 检索器输出的文档相关度(softmax 归一化后的 Top-K 分数)
  • pθ(yix,z,y1:i1)p_\theta(y_i|x, z, y_{1:i-1}): 给定文档 zz 和前文 y1:i1y_{1:i-1} 时生成 token yiy_i 的概率

公式2: RAG-Token 边际化

pRAG-Token(yx)i=1Nztop-k(p(x))pη(zx)pθ(yix,z,y1:i1)p_{\text{RAG-Token}}(y|x) \approx \prod_{i=1}^{N} \sum_{z \in \text{top-}k(p(\cdot|x))} p_\eta(z|x) \, p_\theta(y_i|x, z, y_{1:i-1})

含义: 对每个生成 token 独立地在 Top-K 文档上边际化,允许不同 token 依赖不同文档

关键区别: \sum\prod 的顺序与 RAG-Sequence 相反——RAG-Token 先在文档上求和再对 token 求积

公式3: 检索器(DPR)

pη(zx)exp(d(z)q(x))p_\eta(z|x) \propto \exp\left(\mathbf{d}(z)^\top \mathbf{q}(x)\right)

含义: 文档相关度通过 query 向量和 document 向量的内积计算

符号说明:

  • q(x)=BERTq(x)Rd\mathbf{q}(x) = \text{BERT}_q(x) \in \mathbb{R}^d: query encoder 输出
  • d(z)=BERTd(z)Rd\mathbf{d}(z) = \text{BERT}_d(z) \in \mathbb{R}^d: document encoder 输出
  • Top-K 通过 FAISS 的 MIPS 索引高效检索

公式4: 训练目标

L=jlogp(yjxj)\mathcal{L} = -\sum_{j} \log p(y_j | x_j)

含义: 最小化负对数边际似然,其中 p(yjxj)p(y_j|x_j) 通过 RAG-Sequence 或 RAG-Token 公式计算

通过此损失反向传播,同时更新 query encoder η\eta 和 generator θ\theta(document encoder 保持冻结)

实验结果

Open-Domain Question Answering

模型NQ (EM)TriviaQA (EM)WebQ (EM)CuratedTrec (EM)
DPR (抽取式)41.556.834.625.9
REALM40.440.746.8
T5-11B (闭卷)36.660.537.4
RAG-Token44.556.845.550.0
RAG-Sequence44.156.145.252.0

RAG 在 Natural Questions 上达到 44.5 EM,超越 DPR (+3.0) 和 T5-11B (+7.9)

在 WebQuestions 和 CuratedTrec 上建立新 SOTA

知识密集型生成任务

任务指标BARTRAG-TokenRAG-Sequence
MS-MARCOBLEU-149.9
Jeopardy Q-GenBLEU-114.017.315.1
FEVER (3-way)Accuracy72.5

RAG-Token 在 Jeopardy 问题生成任务上 BLEU-1 达到 17.3,显著优于 BART (14.0),说明 RAG 的检索增强对生成质量确实有效

RAG-Sequence vs RAG-Token

RAG-Sequence: 在需要单一知识源的任务上更优(如 CuratedTrec),答案通常完全来自一个文档

RAG-Token: 在需要综合多源信息的任务上更优(如 Jeopardy 问题生成),不同 token 可以从不同文档获取知识

两种变体的差异在实践中并不总是巨大,具体取决于任务特性

消融实验

检索文档数 K 的影响: K=5 通常是最佳平衡点,K=1 性能显著下降,K>10 收益递减

DPR vs BM25 检索器: DPR 显著优于 BM25(稀疏检索),证明稠密检索对 RAG 至关重要

冻结 vs 微调 query encoder: 微调 query encoder 带来 1-2 点的一致提升

局限性

检索延迟: 每次生成都需要检索 Top-K 文档,增加了推理延迟,难以用于实时对话场景

文档索引静态性: 虽然理论上可以更新文档索引,但 FAISS 索引的重建成本不低,且 document encoder 冻结后无法适应新领域

检索质量瓶颈: 生成质量的上限取决于检索器能否找到相关文档;如果相关文档不在索引中,RAG 无法生成正确答案

上下文拼接的粗糙性: 将检索文档直接与 query 拼接作为生成器输入,缺乏对文档相关片段的精细定位

仅在英文评估: 未验证多语言场景下的效果

相关概念

  • DPR
  • BART
  • Dense Retrieval
  • FAISS
  • Open-Domain QA
  • REALM
  • Non-Parametric Memory
  • Knowledge Grounding
  • T5
  • Fusion-in-Decoder

速查卡片

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

  • 核心: 将 DPR 检索器 + BART 生成器端到端结合,通过在 Top-K 文档上边际化实现知识增强生成
  • 方法: RAG-Sequence(同一文档生成全序列)vs RAG-Token(每个 token 独立边际化文档);检索器用 DPR,索引用 FAISS MIPS
  • 结果: NQ 44.5 EM(+3.0 over DPR);TriviaQA 56.8 EM;多个开放域 QA 任务新 SOTA
  • 意义: 开创了 RAG 范式,成为知识密集型 NLP 任务的标准方法,催生了 RETRO、Atlas 等后续工作

笔记创建时间: 2026-04-03