知识密集型自然语言处理任务的检索增强生成技术研究 [译]

作者:

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

作者: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。所属机构:Facebook AI Research, University College London, New York University;联系邮箱:plewis@fb.com

摘要

在自然语言处理领域,大型预训练语言模型因能存储大量事实知识而备受关注,尤其是在针对具体任务进行细致调整后,它们的表现尤为出色。不过,这些模型在获取和准确使用知识方面仍有所不足,特别是在那些需要大量知识的任务上,它们的效果还不如专为特定任务设计的系统。此外,如何为这些模型的决策提供依据,以及如何更新它们所掌握的世界知识,仍是目前研究中的难题。迄今,研究人员已经探索了在提取型任务中应用具有可微分存取机制的非参数记忆的预训练模型。本研究则是针对检索增强生成(Retrieval-Augmented Generation, RAG)的通用调整方法进行探讨。这种方法结合了预训练的参数记忆(如 seq2seq 模型)和非参数记忆(例如,通过预训练神经网络检索器访问的 Wikipedia 的密集向量索引)。我们对比了两种 RAG 方法:一种是在整个生成过程中使用相同的检索内容,另一种则在生成的每个部分可能使用不同的内容。我们对这些模型在多种知识密集型任务上进行了细致的调整和评估,在几个开放领域的问答任务上取得了领先成绩,超过了传统的 seq2seq 模型和专门为特定任务设计的检索 - 提取系统。在语言生成任务中,我们发现 RAG 模型能产生更具体、多样化且符合事实的语言,相比之下,传统的只依赖参数的 seq2seq 模型则显得逊色。

1 引言

经过预训练的神经语言模型被发现可以深入地从数据中学习知识,这一发现来自 Petroni 等人 (2019) 的研究。这些模型能够在不依赖外部存储的情况下,充当一种内置的、基于参数的知识库,正如 Raffel 等人 (2019) 和 Roberts 等人 (2020) 所描述。尽管这一进展令人振奋,但这些模型也存在一些缺陷:它们难以更新或改进自己的记忆库,无法直接揭示预测背后的逻辑,并可能产生一些不符合现实的错误判断,Marcus (2020) 对此进行了阐述。为了解决这些问题,研究人员开始探索结合参数化记忆和基于检索的非参数化记忆的混合模型,如 Guu 等人 (2020)、Karpukhin 等人 (2020)、Petroni 等人 (2020) 所提出。这些模型的知识库可以直接更新和扩展,且其使用的知识可以被检验和理解。例如,REALM (Guu 等人 2020) 和 ORQA (Lee 等人 2019) 两个新型模型,它们将掩码语言模型(由 Devlin 等人 2019 开发)与可微分检索器结合在一起,已在开放域的提取式问答方面展现出了潜力。现在,我们将这种结合参数化和非参数化记忆的方法应用于自然语言处理(NLP)的核心领域,即序列到序列(seq2seq)模型。

我们为预训练的、带参数记忆的生成模型引入了一种名为“检索增强生成”(RAG)的非参数记忆功能,通过一种通用的微调方法实现。我们构建了 RAG 模型,其参数记忆部分是一个预先训练好的序列到序列(seq2seq)转换器模型,非参数记忆则是一个包含维基百科内容的密集向量索引库,通过一个预训练的神经网络检索器来访问。这些组件被整合到一个端到端训练的概率模型中(参见图 1)。检索器(Dense Passage Retriever,由 Karpukhin 等人于 2020 提出,简称 DPR)基于输入提供相关的潜在文档,然后 seq2seq 模型(例如 BART,由 Lewis 等人于 2019 提出)根据这些潜在文档及输入内容生成输出。我们使用了一种基于最佳 K 个结果的近似方法来整合这些潜在文档,可以是针对每个输出(假定同一个文档负责所有词汇的生成),也可以是针对每个词汇(不同的文档负责不同词汇的生成)。与 T5(由 Raffel 等人于 2019 提出)或 BART 类似,RAG 可以针对任何序列到序列任务进行微调,同时学习生成器和检索器。

之前的研究工作大量聚焦于为特定任务从零开始训练的非参数记忆系统架构,例如内存网络(由 Weston 等人于 2015 提出)、堆栈增强网络(由 Joulin 和 Mikolov 在 2015 提出)以及内存层(由 Lample 等人在 2019 提出)。与之不同,我们探索的是一个设置,其中带参数和非参数的记忆组件均是预先训练好且已经加载了丰富知识的。关键在于,通过预先训练好的访问机制,我们能够在不需要额外训练的情况下实现对知识的访问。

我们的研究成果凸显了在 知识密集型任务(即那些没有外部知识源人类难以完成的任务)中,结合参数化与非参数化记忆体系进行信息生成的优势。我们的 RAG 模型在开放自然问题(Kwiatkowski 等人,2019)、WebQuestions(Berant 等人,2013)和 CuratedTrec(Baudiš 和 Šedivỳ,2015)方面达到了业界领先水平,同时在 TriviaQA(Joshi 等人,2017)上大幅超越了最近采用特定预训练目标的方法。尽管这些任务本质上是提取信息的,我们的发现表明,自由生成的方式优于传统的提取方法。在知识密集型生成方面,通过在 MS-MARCO(Bajaj 等人,2016)和危险问题生成上的实验,我们的模型生成的回答在事实性、具体性和多样性方面均优于 BART 基准模型。在 FEVER(Thorne 等人,2018)的事实验证任务中,我们的成绩接近于那些使用强大检索监督的最新管道模型,差距仅为 4.3%。此外,我们还展示了如何通过替换非参数化记忆体系来更新模型以适应世界的变化。11 RAG 实验的代码已经开源,作为 HuggingFace Transformers Library(Wolf 等人,2019)的一部分,可在此链接查看:https://github.com/huggingface/transformers/blob/master/examples/rag/。您还可以在此链接体验 RAG 模型的交互式演示:https://huggingface.co/rag/

图 1: 我们的方法概览。我们把一个预训练的检索系统(包括查询编码器和文档索引)与一个预训练的序列到序列模型(生成器)结合,进行整体微调。对于一个给定的查询 xx,我们利用最大内积搜索(MIPS)方法找出相关度最高的前 K 个文档 z_iz\_i。在做出最终预测 yy 时,我们将 zz 当作一个潜在变量,并在不同文档的基础上综合考虑序列到序列模型的预测结果。

2 方法

我们研究了 RAG 模型,这种模型利用输入序列 xx 来检索文本文档 zz,并在生成目标序列 yy 时,将这些文档作为额外的参考上下文。如 图 1 所展示的那样,我们的模型包含两个主要部分:(i)一个检索器 pη(zx)p_{\eta}(z|x),它配备了参数 η\eta,用于基于查询 xx 返回一个文本段落的分布(限定在前 K 个最相关的文本),以及(ii)一个生成器 pθ(yix,z,y1:i1)p_{\theta}(y_{i}|x,z,y_{1:i-1}),它由参数 θ\theta 驱动,能够根据前 i1i-1 个令牌 y1:i1y_{1:i-1}、原始输入 xx 和检索到的文本 zz,生成当前的令牌。

为了实现检索器和生成器的端到端训练,我们把检索到的文档看作一个隐藏变量。我们设计了两种模型,它们以不同的方式整合这些隐藏的文档,从而生成文本的概率分布。在第一种方法,即 RAG-Sequence 中,模型利用同一文档预测每个目标令牌。而第二种方法,RAG-Token,则允许根据不同的文档预测每个目标令牌。接下来,我们将详细介绍这两种模型,并讨论 pηp_{\eta}pθp_{\theta} 这两个组件,以及训练和解码过程。

2.1 模型

RAG-Sequence 模型

RAG-Sequence 模型采用同一篇检索文档来生成整个序列。在技术层面,它将这篇检索文档视作一个单独的隐藏变量,并通过 top-K 近似法计算得到基于序列到序列(seq2seq)的概率 p(yx)p(y|x)。具体来说,它先用检索器找出前 K 篇最相关的文档,然后生成器会为每篇文档分别计算输出序列的概率,最后将这些概率合并,

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

RAG-Token 模型简介

RAG-Token 模型是一种创新的人工智能模型,它可以为每一个目标词元(即文本中的关键词或词语)选择一个不同的相关文档,并在此基础上生成答案。简而言之,这个模型首先从一个大型的文档库中找出最相关的前 K 个文档,然后基于这些文档来预测下一个词元的可能性。通过这种方式,模型能够从多个文档中提取信息,更加精准地生成回答。特别地,当目标任务是分类问题时,RAG-Token 模型可以将目标类别视为仅包含一个词元的序列,这时它与另一种模型 RAG-Sequence 的工作方式相同。

2.2 检索组件:DPR

DPR 是一种基于最新的双编码器架构的检索工具,用于在大规模文档集中快速找到最相关的内容。这个工具的核心是两个基于 BERTBASE 技术的编码器:一个用于处理文档(文档编码器),另一个用于理解查询请求(查询编码器)。简单来说,DPR 通过比较文档和查询请求的编码,快速定位到最相关的文档。为了提高检索效率,DPR 使用了一种称为最大内积搜索(MIPS)的高效搜索方法。在实际应用中,DPR 被用于找到包含特定问题答案的文档,比如在 TriviaQA 和 Natural Questions 这样的问题回答系统中表现出色。DPR 的这种能力使它成为构建大型、高效检索系统的理想选择,被广泛用于各种人工智能应用中。

2.3 生成器:BART

我们的生成器组件能够根据先前的内容和其他信息来预测下一个词汇,这部分工作可以由不同的编解码系统来完成。我们选择了 BART-large 这种大型的预训练模型,它基于一种被称作 seq2seq transformer 的技术,拥有 4 亿个参数,能够处理复杂的文本转换任务。在生成文本时,我们将输入内容和检索到的信息结合起来,简单地把它们连在一起。BART 通过学习从带有噪声的数据中恢复原始数据的方式进行训练,表现出色,甚至优于类似规模的 T5 模型。我们把 BART 用于生成文本的这部分参数称为“参数记忆”。

2.4 训练

在训练过程中,我们同时对检索器和生成器进行优化,而不是直接指导它们应该检索哪些具体的文档。我们使用了一套包含输入和预期输出的训练数据集,通过一种名为 Adam 的优化方法,努力降低模型在预测输出时的误差。我们在训练期间保持文档索引不变,仅对查询部分和文本生成部分进行调整。这样做虽然牺牲了一些性能,但大大节约了资源。

2.5 解码

在实际使用时,我们有两种不同的模式:RAG-Sequence 和 RAG-Token,它们在处理文本时的方式各有不同。

RAG-Token

RAG-Token 是一种标准的文本生成模式,它根据已有的文本逐步生成下一个词汇。这个过程涉及到多个复杂的计算步骤,但可以简化为:模型会考虑一系列可能的选项,并选择最合适的继续生成文本。为了找到最佳选项,我们使用了一种名为“波束搜索”的技术,它能够有效地探索不同的可能性,并找出最佳的文本序列。

RAG-序列解码方法

在 RAG-序列的情况下,预测结果的概率计算方式并不是基于单个词的传统方法,所以我们不能仅用一种常规的搜索技术(beam search)来找出最佳答案。相反,我们需要对每篇参考文档分别进行这种搜索,并根据一定的公式评估每个可能的答案。这样做会产生许多可能的答案,有些甚至可能不是所有文档搜索结果的一部分。为了评估一个特定答案的可能性,我们会对每个相关文档进行额外的计算,尤其是那些在初次搜索中没有出现的答案,并将这些计算结果进行综合分析。这种详尽的解码过程被我们称为“彻底解码”。当答案序列较长时,可能的答案数量 Y|Y| 会变得很大,需要执行许多次计算。为了提高解码的效率,我们采用了一种近似方法:假设在初次搜索中未出现的答案的概率接近于零。这样一来,就无需在产生候选答案集 YY 之后再进行额外的计算。我们称这种方法为“快速解码”。

3 实验细节

我们在多种需要大量知识的任务上测试了 RAG 模型。在所有实验中,我们都使用了维基百科的一个数据集作为知识库。遵循 Lee et al. (2019) 和 Karpukhin et al. (2020) 的方法,我们选择了 2018 年 12 月的数据。每篇维基百科文章被切分成 100 个词的段落,总共形成了约 2100 万个这样的文档。我们为每个文档创建了一个数学表示(编码),并使用了一种特殊的索引方法(FAISS),这种方法基于 Malkov 和 Yashunin (2016) 的研究,可以快速地在这些文档中找到相关信息。在模型训练阶段,我们会为每个查询选择前 kk 个最相关的文档。在训练过程中,我们考虑选择前 5 或 10 个文档,而在测试阶段则根据开发数据集来确定 kk 的值。下面,我们将详细介绍每项任务的实验设置。

3.1 开放领域问答研究

开放领域问答技术 (Open-domain Question Answering, 简称 QA) 是一个在实际应用中非常重要的领域,也是测试知识密集型任务的常用平台,如 Guu 等人于 2020 年的研究所示 (2020)。在这项工作中,我们把问题和答案当作输入和输出的文本对,例如 (x,y)(x,y),并通过最小化答案的负对数似然来训练 RAG 模型。我们将 RAG 与流行的“提取式问答模式”进行了比较,该模式由 Chen 等人在 2017 年提出 (2017),在这种模式下,答案是从检索到的文档中提取的特定文本片段,主要依赖于所谓的“非参数化知识”。此外,我们还考察了“闭卷式问答”方法,如 Roberts 等人 2020 年的研究 (2020),这种方法虽然也是生成答案,但并不涉及信息检索,而是完全依赖于模型内的知识,即“参数化知识”。

我们选取了四个著名的开放领域问答数据集进行研究,包括自然问题 (Natural Questions, NQ) 数据集(Kwiatkowski 等人,2019 年 (2019))、TriviaQA (TQA) 数据集(Joshi 等人,2017 年 (2017))、WebQuestions (WQ) 数据集(Berant 等人,2013 年 (2013))以及 CuratedTrec (CT) 数据集(Baudiš 和 Šedivỳ,2015 年 (2015))。由于 CT 和 WQ 数据集的规模较小,我们参考了 Karpukhin 等人在 2020 年的 DPR 研究 (2020),利用我们在 NQ 数据集上的 RAG 模型作为这两个小型数据集的初始化模型。我们采用了与先前研究相同的训练、验证和测试数据划分方法,并报告了精确匹配 (Exact Match, EM) 分数。特别地,对于 TQA 数据集,为了与 T5 模型进行比较(参考 Roberts 等人 2020 年的研究 (2020)),我们还对 TQA Wiki 测试集进行了评估。

3.2 抽象性问题回答

RAG 模型不仅能进行基础的提取式问答,还能通过抽象文本生成来回答更复杂的问题。为了测试 RAG 在知识密集型场景下的自然语言生成(NLG)能力,我们采用了 MSMARCO NLG 任务 v2.1 Nguyen et al. (2016) 作为测试。这项任务包含了一系列问题,针对每个问题,搜索引擎提供了十个关键参考文献,以及基于这些文献的完整句子答案。在我们的实验中,我们仅使用问题和答案,不使用提供的参考文献,将 MSMARCO 当作一个开放领域的抽象性问答任务。值得注意的是,MSMARCO 中的一些问题若没有参考文献,就难以准确回答,例如:“加州沃尔卡诺的天气如何?”因此,不使用参考文献会影响性能。我们还发现,有些 MSMARCO 的问题仅凭维基百科是无法解答的。在这种情况下,RAG 可以利用其参数化知识来生成合理的回答。

3.3 生成《危险边缘》风格的问题

为了评估 RAG 在非问答环境下的生成能力,我们进行了开放领域问题生成的研究。不同于标准开放领域问答任务中常见的简短直接的问题,我们提出了一个更具挑战性的任务:生成《危险边缘》(Jeopardy)风格的问题。《危险边缘》的提问方式独特,通常是根据一个实体的描述来猜测这个实体是什么。例如,“世界杯”就是对“1986 年,墨西哥成为第一个两次举办这项国际体育比赛的国家”的问题的答案。因为《危险边缘》风格的问题都是精确的事实陈述,所以基于答案实体来生成这样的问题是一个充满挑战的知识密集型任务。

我们使用了 SearchQA Dunn et al. (2017) 提供的数据集,其中包括 100K 训练样本、14K 开发样本和 27K 测试样本。鉴于这是一个新的任务领域,我们训练了一个 BART 模型以作对比。根据 Zhang and Bansal (2019) 的方法,我们使用了针对 SQuAD 调整的 Q-BLEU-1 指标 Nema and Khapra (2018) 来进行评估。Q-BLEU 是 BLEU 的一个变体,它在匹配实体时赋予了更高的权重,并且在问题生成方面的人类判断相关性更高。我们还进行了两次人工评估,一次是对生成内容的事实性进行评估,另一次是对其具体性进行评估。我们定义事实性为陈述内容是否能够得到可信外部来源的证实,具体性则是指输入和输出之间的高度相关性 Li et al. (2016)。我们按照最佳实践,采用了成对比较的评估方式 Li et al. (2019)。在这个评估过程中,评估员会看到一个答案和两个由 BART 和 RAG 分别生成的问题。然后他们需要从四个选项中选择:问题 A 更好,问题 B 更好,两个问题都不错,或两个问题都不好。

3.4 实事核查

FEVER 项目是由 Thorne 等人于 2018 年提出的一个挑战,目的是判断一个自然语言表述是否得到维基百科的支持、反驳,或者是否缺乏足够的信息来做出判断。这个任务首先需要从维基百科中找出与这个表述相关的信息,然后基于这些信息来判断该表述是正确、错误,还是无法仅凭维基百科来验证。FEVER 既是一个信息检索问题,也是一个需要深入推理的难题。此外,它也是测试 RAG(检索 - 生成)模型在分类任务上,而非仅是内容生成能力的一个好例子。在处理 FEVER 时,我们将其不同的判断类别(如“支持”、“反驳”或“信息不足”)转化为单一的输出信号,并直接基于这些信号进行训练。与通常处理 FEVER 的方法不同,我们的方法不依赖于提前获取的信息作为训练依据。在现实世界的许多应用中,我们通常无法获得这样的预先信息,因此不依赖于此类信息的模型能够适用于更广泛的任务场景。我们研究了两种情况:一是标准的三分类任务,即判断信息是“支持”、“反驳”还是“信息不足”;二是 Thorne 和 Vlachos 在 2020 年研究的二分类任务,即仅判断信息是“支持”还是“反驳”。在这两种情况下,我们都关注于判断的准确性,并进行了详细的报告。

4. 结果分析

表 1: 开放域问答系统的测试成绩。对于 TQA 测试,左栏使用的是标准开放域问答测试集,右栏则应用了 TQA-Wiki 的测试集。详情请参考附录 D

表 2: 生成式和分类任务的测试成绩。在 MS-MARCO 的最新技术水平是由 Bi 等人在 2020 提出的,FEVER-3 的成绩来自于 Zhong 等人的 2019 研究,而 FEVER-2 则是 Thorne 和 Vlachos 在 2020 的工作 *采用了确定的上下文/证据。未直接访问黄金数据集的最优模型已用下划线标注。

| 模型类型 | | NQ | TQA | | WQ | CT | | :--- | | :--- | :---: | | ---: | :---: | | 无参考书籍模型 | T5-11B(Roberts 等人,2020) | 34.5 | - / | 50.1 | 37.4 | - | | T5-11B 加强版(Roberts 等人,2020) | 36.6 | - / | 60.5 | 44.7 | - | | 有参考书籍模型 | REALM(Guu 等人,2020) | 40.4 | - / | - | 40.7 | 46.8 | | DPR(Karpukhin 等人,2020) | 41.5 | 57.9 / | - | 41.1 | 50.6 | | | RAG-Token | 44.1 | 55.2 / | 66.1 | 45.5 | 50.0 | | | RAG-Seq | 44.5 | 56.8 / | 68.0 | 45.2 | 52.2 |

模型JeopardyMSMARCOFVR3FVR2
B-1QB-1R-LB-1标签准确率
SotA--49.8*49.9*76.892.2*
BART15.119.738.241.664.081.1
RAG-Tok.17.322.240.141.572.589.5
RAG-Seq.14.721.440.844.2

表 2: 各模型在生成和分类测试中的得分。MS-MARCO SotA 是 Bi et al. (2020) 所提出的,FEVER-3 来自 Zhong et al. (2019),FEVER-2 则由 Thorne 和 Vlachos (2020) 提出。*表示使用了精准的语境或证据。没有使用精准资料的最佳模型用下划线标出。

4.1 开放领域问答

2 展示了 RAG 与其他领先模型在开放领域问答任务上的对比结果。在所有四个任务中,RAG 都刷新了最高记录(其中 TQA 任务是基于与 T5 模型相当的数据分割)。RAG 的设计结合了只依赖内部知识库的“闭卷”模式的灵活性和基于外部信息检索的“开卷”模式的高效性。不同于 REALM 和 T5+SSM,RAG 在无需进行昂贵的“关键片段遮蔽”预训练的情况下也能取得优异的成绩,这一方法最初由 Guu et al. (2020) 提出。值得一提的是,RAG 的检索器是基于 DPR 检索器构建的,后者通过在自然问题和 TriviaQA 上的监督学习而优化。RAG 在与 DPR 问答系统的比较中显示了优势,后者使用基于 BERT 的“交叉编码器”重新排序文档,并结合了提取式阅读器。RAG 的表现证明,要实现顶尖水平的性能,并不一定需要重排序器或提取式阅读器。

在回答问题时,即使可以直接从文档中提取答案,采用生成式答案的方法也有其独特优势。即使某些文档并未直接包含答案,但只要含有相关线索,RAG 也能够生成正确的答案。这种方法比传统的提取式方法更加高效,因为它可以更好地综合各个文档的信息。更重要的是,即使正确答案不在任何检索到的文档中,RAG 也能够生成正确答案。例如,在自然问题(NQ)数据集中,即便在正确答案不在检索文档中的情况下,RAG 也能达到 11.8% 的准确率,而传统的提取式模型在这种情况下的准确率则为 0%。

4.2 抽象问题回答

正如表 2 中展示的,RAG-Sequence 在 Open MS-MARCO NLG 挑战中的成绩超越了 BART,分别在 Bleu 和 Rouge-L 评价标准上提高了 2.6 分。值得注意的是,RAG 的表现已接近顶尖模型,这一成就尤为突出,因为 (i) 其他顶尖模型能够访问含有生成答案所需详细信息的优质参考资料,(ii) 许多问题若没有这些优质参考资料是难以回答的,且 (iii) 并非所有问题都可以仅凭维基百科来解答。表 3 则展示了我们模型生成的部分答案。从质量上来看,RAG 模型在生成准确无误的信息方面表现得更好,相比之下,BART 在生成内容时更容易产生错误或不准确的信息。在后续部分,我们还将展示 RAG 生成的内容在多样性上优于 BART(详见 §4.5)。

4.3《危险边缘》问题生成

2 显示,RAG-Token 在《危险边缘》节目问题生成方面表现优于 RAG-Sequence,两者都超过了 BART 在 Q-BLEU-1 上的表现。5 的人类评估结果显示,在从 BART 和 RAG-Token 生成的 452 对问题中,仅有 7.1% 的情况下,BART 的问题被认为比 RAG 更准确,而在 42.7% 的情况下,RAG 的问题更准确。此外,在另外 17% 的情况下,RAG 和 BART 生成的问题都被认为是准确的。这明显证明了在这项任务上,RAG 超越了最先进的生成模型 BART。评估者还发现,RAG 生成的问题在具体性上有显著提高。表 3 展示了各模型的典型生成例子。

《危险边缘》的问题通常包含两部分信息,RAG-Token 之所以表现出色,可能是因为它能够结合多个文档的内容来生成答案。图 2 给出了一个示例。在生成与“太阳”相关的问题时,提及《太阳照常升起》的文档 2 的相关性得分非常高。同样,在生成关于《永别了,武器》的问题时,文档 1 的相关性得分最高。有趣的是,每本书的第一个词被生成后,文档的相关性得分变得平均。这表明,生成器可以在不特别依赖某个文档的情况下完成书名。换句话说,模型本身的知识就足以完成这些书名。我们通过将“太阳”这一部分标题输入只使用 BART 的模型进行验证,结果 BART 能够补全出《太阳照常升起》这一全称,说明这一书名已经储存在了 BART 的知识库中。同样地,对于《永别了,武器》,BART 也能完成正确的补全。这一示例展示了参数化记忆(模型内部的知识)与非参数化记忆(外部文档的信息)是如何协同工作的——非参数化部分帮助指导生成过程,从而提取出参数化记忆中储存的特定知识。

参见图注
参见图注

图 2: RAG-Token 文档的相关性得分 p(z_ix,y_i,y_i)p(z\_{i}|x,y\_{i},y\_{-i}) 对于每个生成的词汇的输入“海明威”,用于《危险边缘》问题生成的 5 个检索文档。当生成《永别了,武器》时,文档 1 的相关性得分很高,而在生成《太阳照常升起》时,则是文档 2 的相关性得分更高。

表 3: 生成任务中的示例。RAG 模型生成的回答更加具体和事实准确。‘?’表示事实上不正确的回答,* 表示部分正确的回答。

任务输入模型生成
MS-MARCO解释中耳是什么BART中耳是耳朵中位于鼓膜与内耳之间的部分。
RAG-T中耳指的是鼓膜内侧的耳部区域。
RAG-S中耳包括鼓室和三块听小骨。
在苏格兰需要使用什么货币BART在苏格兰,使用的货币是英镑。
RAG-T苏格兰的货币是英镑。
RAG-S苏格兰使用的货币是英镑。
危险问答问题生成华盛顿BART这个州是美国县数量最多的州。
RAG-T它是美国唯一一个以美国总统命名的州。
RAG-S这个州是雷尼尔山国家公园所在地。
神曲BART但丁的这部史诗诗作分为三个部分:地狱、炼狱和天堂。
RAG-T《地狱》是但丁《神曲》三部曲的第一部。
RAG-S这部 14 世纪的史诗作品分为“地狱”、“炼狱”和“天堂”三个部分。

表 4:危险问答问题生成任务的人工评估结果。

表 5:生成任务中不同三元组与总三元组的比例。

实际性特异性
BART 较佳7.1%16.8%
RAG 较佳42.7%37.4%
两者均佳11.7%11.8%
两者均差17.7%6.9%
无明显优势20.8%20.1%
MSMARCO危险问答问题生成
金标准89.6%90.0%
BART70.7%32.4%
RAG-Token77.8%46.8%
RAG-Seq83.5%53.8%

表 5:生成任务中不同三元组与总三元组的比例。

4.4 事实核查

2 展示了我们在 FEVER 数据集上的测试结果。在判断信息为“真”、“假”或“不确定”的三种分类任务中,我们的 RAG (Retrieval-Augmented Generation) 模型的表现仅比当前顶尖模型低 4.3%。这些顶尖模型通常是复杂的、专门为特定任务设计的系统,需要大量定制开发和使用特殊的数据检索技术进行训练,而我们的 RAG 模型则不需要这些复杂操作。在二元分类任务中(判断信息为“真”或“假”),我们的结果与 Thorne 和 Vlachos 在 2020 年使用 RoBERTa (Liu et al., 2019) 模型获得的成绩相近。他们的模型是在已知正确证据的情况下进行判断,而我们的 RAG 模型则需要自行查找证据,尽管如此,我们的模型准确率仅比他们低 2.7%。此外,我们还研究了 RAG 模型检索的文档与 FEVER 数据集中标记为关键证据的文档之间的相关性。我们发现,在 RAG 检索的文档中,有 71% 是来自于 FEVER 数据集中标记为关键证据的文档,而在前 10 篇检索的文档中,有 90% 包含了这样的关键证据。这表明 RAG 模型在检索与事实核查相关的证据方面表现出色。

4.5 其他结果

生成内容的多样性

如第 4.3 节 所述,RAG 模型在生成《危险边缘》节目的问题时,其内容比 BART 更加贴近事实和具体。借鉴 Li et al.(2016)、Vijayakumar et al.(2018)和 Massarelli et al.(2019)的最新研究,我们进一步探讨了如何通过比较不同模型生成的独特词组与总词组的比例来评估其内容的多样性。根据表 5 的数据,RAG-Sequence 生成的内容比 RAG-Token 更加多样化,并且这两者都比未采用多样性提升技巧的 BART 显著更具多样性。

表 6:开发集上的消融实验。由于 FEVER 任务是分类任务,两种 RAG 模型在这里的表现相同。

模型NQ (自然问题)TQA (教师问答)WQ (网页问答)CT (常规测试)危险边缘问题生成MSMarcoFVR-3 (分类验证率 3)FVR-2 (分类验证率 2)
精确匹配B-1 (BLEU-1)QB-1 (快速响应 BLEU-1)R-L (Rouge-L)标签准确度
RAG-Token-BM2529.741.532.133.117.522.355.548.4
RAG-Sequence-BM2531.844.136.633.811.119.556.546.9
RAG-Token-Frozen37.850.137.151.116.721.755.949.4
RAG-Sequence-Frozen41.252.141.852.611.819.656.747.3
RAG-Token43.554.846.551.917.922.656.249.4
RAG-Sequence44.055.844.953.415.321.557.247.5

检索功能的消融测试

RAG 的一个显著特点是它能学习检索与任务密切相关的信息。为了测试这个检索机制的有效性,我们进行了一个实验,其中在训练期间固定了检索器。正如表 6 所示,经过学习的检索功能可以提升所有任务的结果。

我们比较了 RAG 的密集检索器和基于词汇重叠的 BM25 检索器 Robertson 和 Zaragoza (2009)。在这里,我们用一个固定的 BM25 系统来替换 RAG 的检索器,并在计算 p(zx)p(z|x) 时使用 BM25 的检索分数。表 6 展示了比较结果。对于 FEVER 任务,BM25 表现得最好,可能是因为 FEVER 任务的声明高度依赖实体,非常适合基于词汇重叠的检索方法。对于其他所有任务,可微分检索都带来了改进,特别是在开放域问答任务中,这一点尤为重要。

实时更换索引

RAG 这类非参数记忆模型的一个优势是,可以在测试阶段轻松更新知识。而像 T5 或 BART 这样的纯参数模型,则需要进一步训练才能适应世界的变化。为了展示这一点,我们使用了 DrQA Chen et al. (2017) 2016 年 12 月的维基百科数据建立索引,并比较了使用这个索引的 RAG 和使用我们主要结果中较新索引(2018 年 12 月)的 RAG 的输出结果。我们准备了一份在这两个日期之间变化的 82 位世界领袖的名单,并用“{职位}是谁?”(例如,“秘鲁总统是谁?”)这样的模板来测试我们的 NQ RAG 模型。使用 2016 年的索引,RAG 对 2016 年的世界领袖的问题回答正确率达到 70%,而使用 2018 年的索引,对 2018 年的世界领袖问题的正确率为 68%。但是,当索引与领导人的年份不匹配时,准确率就显著降低(使用 2018 年索引回答 2016 年领导人的问题准确率为 12%,使用 2016 年索引回答 2018 年领导人的问题准确率为 4%)。这证明了我们可以通过简单更换其非参数记忆部分,来更新 RAG 的世界知识。

检索更多文档的效果

在模型训练时,我们尝试了检索 5 个或 10 个潜在文档,但发现这两种情况在性能上没有显著差异。我们可以在测试时调整检索文档的数量,这可能会影响到性能和运行时间。如图 3(左)所示,测试时检索更多的文档可以逐渐提高 RAG-Sequence 在开放域问答任务中的表现,但 RAG-Token 的性能在检索 10 个文档时达到顶峰。图 3(右)显示,虽然检索更多文档可以提高 RAG-Token 在 Rouge-L 上的表现,但同时会牺牲 Bleu-1 的分数,而对 RAG-Sequence 的影响则不那么明显。

图 3: 左图展示了检索更多文档时 NQ 任务性能的变化情况。中间图展示了 NQ 任务中的检索召回性能。右图则展示了在检索更多文档时,MS-MARCO 任务中 Bleu-1 和 Rouge-L 分数的变化。

5 相关工作

针对单一任务的检索技术

在以往的研究中,我们发现在自然语言处理(Natural Language Processing, NLP)的多个单独任务中应用检索技术可以显著提高性能。这些任务包括:开放域问答(由 Chen 等人于 2017 年提出);事实核查(Thorne 等人,2018 年);事实填充(Petroni 等人,2020 年);长篇问答(Fan 等人,2019 年);维基百科文章创作(Liu 等人,2018 年);对话系统(Moghe 等人,2018 年;Weston 等人,2018 年;Dinan 等人,2019 年;Fan 等人,2020 年);翻译(Gu 等人,2018 年);以及语言建模(Guu 等人,2018 年;Khandelwal 等人,2020 年)。我们的工作汇聚了这些任务中应用检索技术的先前成果,证明了一个统一的基于检索的架构能够在多个任务中实现卓越的性能。

面向 NLP 的通用架构

在 NLP 任务的通用架构领域,先前的工作已经在无需检索的情况下取得了显著成就。例如,一个经过预训练的整体语言模型在微调后,已在 GLUE 基准测试中的多种分类任务上展现出强大的性能 Wang et al. (2018a, 2019);Radford et al. (2018);Devlin et al. (2019)。此外,GPT-2 (Radford et al., 2019) 进一步展示了一个单向的、预训练的语言模型在判别和生成任务中都能取得出色的表现。为了进一步提升性能,BART Lewis et al. (2019) 和 T5 Raffel et al. (2019); Roberts et al. (2020) 提出了一个利用双向注意力的单一预训练编码器 - 解码器模型,在判别和生成任务上都取得了更强的性能。我们的工作目标是通过学习一个检索模块来增强预训练的生成式语言模型,从而拓宽单一统一架构可能应用的任务范围。

学习检索

在信息检索领域,学习检索文档的研究已经取得了显著进展,尤其是最近使用预训练的神经语言模型的方法,如 Nogueira and Cho (2019) 和 Karpukhin et al. (2020) 的研究。一些研究通过优化检索模块来助力特定下游任务,如问题回答,采用了搜索技术 Perez et al. (2019)、强化学习方法 Choi et al. (2017); Wang et al. (2018c, b),或者是潜在变量技术 Lee et al. (2019); Guu et al. (2020)。这些研究通过不同的基于检索的架构和优化技巧,在特定任务上取得了卓越的成绩。而我们的研究则展示了,一个基于检索的统一架构能够通过微调,在多种任务上都取得强大的表现。

基于内存的架构

我们开发的文档索引,实际上就像是一个给神经网络提供的巨大外部记忆库,这和内存网络(Weston et al. 2015;Sukhbaatar et al. 2015)的概念非常相似。有一些与我们同时进行的研究(例如 Févry et al. 2020)在学习如何为输入数据中的每一个实体检索到一个经过训练的嵌入表示,这与我们直接检索原始文本的方法不同。另外,也有研究致力于改进对话模型,使其能通过关注事实嵌入来生成更加准确的文本(例如 Ghazvininejad et al. 2018;Fan et al. 2020)。我们的记忆库最大的特点是,它是由原始文本构成的,而不是由分布式表示构成。这样一来,记忆库不仅可读性强,增加了模型的可解释性,同时也易于编辑,我们可以通过修改文档索引来动态更新模型的记忆。类似的方法也已经被应用到了知识密集型对话中,其中生成器直接基于检索到的文本进行条件生成,尽管这些文本是通过 TF-IDF 而非端到端学习的检索方法获得的(Dinan et al. 2019)。

检索并编辑方法

我们的方法与检索并编辑风格的方法有着相似之处,即对于给定的输入,找到一个类似的训练输入 - 输出对,然后对其进行修改以产生最终的输出。这种方法在包括机器翻译(Gu et al. 2018b;Hossain et al. 2020)和语义解析(Hashimoto et al. 2018)等多个领域都取得了成功。我们的方法有所不同,不仅仅是轻微修改检索结果,而是聚合多个检索到的内容,并且学习潜在的检索技巧,检索的是证据文件而不仅仅是相关的训练对。虽然如此,RAG 技术可能在这些场景中也表现出色,代表了值得探索的未来方向。

6 讨论

在这项工作中,我们展示了具有参数和非参数记忆访问能力的混合生成模型。我们的 RAG 模型在开放领域问答方面取得了最先进的成果。我们发现,相比于纯粹的参数化模型 BART,人们更喜欢 RAG 生成的内容,认为它更加准确和具体。我们对学习到的检索部分进行了详细的探索,证明了其有效性,并展示了如何通过简单地替换检索索引来更新模型,无需重新训练。在未来的研究中,探究是否可以从零开始联合预训练这两部分,可能会非常有益,无论是使用类似 BART 的去噪声目标,还是其他类型的目标。我们的工作为研究参数记忆与非参数记忆如何相互作用、如何有效结合它们开辟了新的方向,显示出在各种自然语言处理任务中的应用潜力。

Broader Impact

这项工作相比之前的研究提供了几个积极的社会效益:它基于真实事实知识(在这个案例中是维基百科)的更强基础,使得它在生成更多实际信息时“幻觉”更少,并提供了更多的控制和解释能力。RAG 可以在许多直接对社会有益的场景中被应用,例如,通过赋予其医疗指数并询问该主题的开放领域问题,或者帮助人们更有效地完成工作。

然而,这些优势也伴随着潜在的缺点:维基百科或任何潜在的外部知识来源可能永远不会完全是事实的,也完全没有偏见。由于 RAG 可以作为一种语言模型被应用,类似于 GPT-2 Radford et al. (2019) 的关切在这里同样适用,虽然可能程度较小,包括它可能被用于生成虐待、伪造或误导性的新闻内容或社交媒体内容;冒充他人;或自动化生成垃圾邮件/网络钓鱼内容 Solaiman et al. (2019)。高级语言模型可能也会在未来几十年导致各种工作的自动化 Grace et al. (2017)。为了减轻这些风险,可以采用 AI 系统来对抗误导性内容和自动化的垃圾邮件/网络钓鱼。

Acknowledgments

作者希望感谢审稿人对本文的深思熟虑和建设性反馈,以及 HuggingFace 在开源 RAG 模型代码方面的帮助。作者还要感谢 Kyunghyun Cho 和 Sewon Min 提供的富有成效的讨论和建议。EP 感谢 NSF 研究生研究奖学金的支持。PL 由 FAIR 博士生计划支持。

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 的附录

Appendix AImplementation Details

对于开放领域的 QA,我们报告了使用 RAG-Token 模型检索 15 篇文档的测试结果。对于 RAG-Sequence 模型,我们报告了使用 50 篇文档检索的测试结果,并使用了 Thorough Decoding 方法,因为答案通常较短。我们对 QA 使用贪婪解码,因为我们没有发现波束搜索提高了结果。对于 Open-MSMarco 和 Jeopardy 问题生成,我们报告了使用 RAG-Token 和 RAG-Sequence 检索 10 篇文档的测试结果,并且还训练了一个 BART-large 模型作为基准。我们使用了四个波束大小,并使用了 RAG-Sequence 模型的 Fast Decoding 方法,因为 Thorough Decoding 并没有提高性能。

Appendix BHuman Evaluation

参见说明
参见说明

图 4: 用于人类评估事实性的注释界面。点击“查看工具指南”时会弹出详细说明和示例。

4显示了人类评估的用户界面。为了避免屏幕位置的偏见,哪个模型对应于句子 A 和句子 B 是针对每个例子随机选择的。鼓励注释者使用互联网研究主题,并在完整说明标签中提供了详细的说明和示例。我们在评估中包含了一些金标准句子,以评估注释者的准确性。有两名注释者在这些例子上表现不佳,他们的注释被从结果中删除。

附录 C 训练设置详细信息

我们使用 Fairseq(由 Ott 等人于 2019 年提出)训练所有 RAG 模型和 BART 基准模型。这一过程包括了混合精度浮点运算技术(由 Micikevicius 等人于 2018 年提出),并将训练任务分布在 8 个各具 32GB 内存的 NVIDIA V100 GPU 上,尽管这些任务也可以仅在一个 GPU 上运行。我们发现利用 FAISS 进行高效的最大内积搜索在 CPU 上表现良好,因此我们选择在 CPU 上存储文档索引向量,这大约需要 100 GB 的 CPU 内存来处理所有的维基百科数据。在提交论文后,我们还把代码移植到了 HuggingFace 的 Transformers 框架中(由 Wolf 等人于 2019 年开发),这一新版本在保持与原版本相同性能的同时,提供了更为简洁和易用的实现,并已开源。我们还利用 FAISS 提供的压缩工具减少了文档索引的 CPU 内存需求,降至 36GB。关于运行 RAG 实验的脚本,可以在这里找到,而 RAG 模型的互动演示则可在这里查看。

附录 D 开放域问答 (QA) 的更多细节

在开放域问答中,一个问题通常有多个答案选项。这些答案在训练阶段被抽取型模型所利用,因为在准备训练数据时,它们通常会用所有的答案选项来匹配文档中的内容。对于 RAG 模型,我们通过分别用自然问题 (Natural Questions) 和 WebQuestions 中的每一对问答 (q,a) 进行训练,这样做略微提高了准确率。对于 TriviaQA,一个问题可能有多个有效答案,但其中一些答案,比如表情符号或拼写变种,可能并不适合作为训练目标。因此,在 TriviaQA 中,如果答案候选不在查询的前 1000 个文档中出现,我们会将其过滤掉。

CuratedTrec 数据预处理

CuratedTrec 的答案以正则表达式的形式给出。这种形式被认为是 CuratedTrec 不适合用于答案生成模型的原因之一(Guu 等人,2020)。为了克服这一挑战,我们采用了一个预处理步骤。首先,我们检索每个查询的前 1000 个文档,然后选择与正则表达式模式最频繁匹配的答案作为训练目标。如果没有找到匹配项,我们将使用一个简单的启发式方法:生成正则表达式的所有可能排列,并将正则表达式中的非确定性符号替换为一个空格。

TriviaQA 评估方法

在公开领域的问答研究中,研究人员通常利用公开的开发数据集作为测试基准,因为问答数据集的测试部分往往专注于阅读理解并受到一定限制。我们根据 DPR Karpukhin 等人在 2020 年的研究 [2020] 使用的数据分割方式来呈现我们的成果,这也是公开领域问答领域的一种常见做法。对于 TriviaQA,我们采用的测试数据集是众所周知的 TriviaQA Web 开发者分割版。值得一提的是,Roberts 等人在 2020 年的研究 [2020] 选择了 TriviaQA 的官方维基百科测试集。为了与他们的研究进行对比,Févry 等人 [2020] 也采用了这一做法(详见 Févry 等人 2020 年研究的附录)。为了实现与这两种方法的公平比较,我们在两个测试集上都进行了性能报告。我们发现,在官方的维基百科测试集上,我们的表现远胜于传统的公开领域测试集,原因在于官方维基测试集中的问题更易于通过维基百科找到答案。

附录 E FEVER 任务的详细说明

在处理 FEVER 分类任务时,我们参照了 Lewis 等人在 2019 年的研究方法 [2019]。首先,我们重新构造了声明,然后利用最后一个隐藏状态的表征来进行分类,并通过整合多个文档的信息来得到最终的类别概率。FEVER 任务本身包含两个子任务:一是判断一个声明是“支持”、“反驳”还是“信息不足”,这是我们主要论文中探讨的部分。二是从维基百科中抽取支持分类预测的证据性句子。由于 FEVER 使用的维基百科数据与我们的不同,直接应对这一挑战并不易。我们期待在未来的工作中探索这一领域。

附录 F 关于“空文档”概率的探索

我们在 RAG 中实验了一种类似于 REALM Guu 等人 [2020] 的“空文档”机制,以应对那些无法为特定输入检索到有用信息的情况。具体来说,如果检索到 kk 篇文档,我们会额外考虑一篇空白文档,并为这个空文档预测一个概率值,然后在 k+1k+1 个预测结果中找出最可能的答案。在模拟空文档概率时,我们尝试了三种方法:一是学习空文档的嵌入表示;二是使用静态的学习偏置项;三是通过神经网络预测概率值。然而,这些方法并没有带来性能提升,因此我们最终没有采用。在 Open MS-MARCO 的场景中,由于并非所有问题都能找到有用的文档,我们观察到模型倾向于针对那些不太可能从检索中获益的问题,检索到一组特定的文档。这种现象表明,在 RAG 中可能不需要专门的空文档机制。

附录 G 参数

我们的 RAG 模型包含了 DPR 中 BERT-base 查询和文档编码器的可训练参数,每个有 1.1 亿参数(尽管我们自己并未训练文档编码器),以及来自 BART-large 的 4.06 亿可训练参数,共计 6.26 亿可训练参数。表现最佳的“闭卷”(仅参数化)开放域问答模型是 T5-11B,拥有 110 亿可训练参数。与我们模型参数数量最接近的 T5 模型是 T5-large(7.7 亿参数),在 Natural Questions 上的得分为 28.9 EM,Roberts 等人 [2020],这远低于 RAG-Sequence 所达到的 44.5 分,表明混合参数/非参数模型在强大的开放域问答性能上需要的可训练参数远少于传统模型。非参数化记忆索引不包含可训练参数,但包含了 2100 万个 728 维向量,总共有 153 亿个数值。这些可以通过 8 位浮点精度轻松存储,以便管理内存和磁盘占用。

附录 H 检索崩溃

在初步实验中,我们观察到对于某些任务,如 Fan 等人 [2018] 的故事生成,检索组件会“崩溃”,无论输入内容如何都会检索到相同的文档。一旦检索崩溃,生成器会学会忽略这些文档,RAG 模型的表现就会与 BART 相当。这种崩溃可能是由于某些任务对事实知识的要求不够明确,或目标序列较长,可能导致检索器获得的梯度信息不足。Perez 等人 [2019] 在优化检索组件以提升下游任务性能时,也发现了虚假的检索结果。

附录 I 各数据集样本数量概览

本文所涉及数据集中的训练、开发和测试样本数量,如表 7 所示。

表 7: 各数据集包含的样本数量。*部分数据作为隐藏子集用于评估

任务名称训练样本数开发样本数测试样本数
Natural Questions7916987583611
TriviaQA78786883811314
WebQuestions34183622033
CuratedTrec635134635
Jeopardy Question Generation973921371426849
MS-MARCO15372612468101093*
FEVER-3-way1454501000010000
FEVER-2-way9696666666666