【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)
目录
- 一、简介
- 一句话简介
- 作者、引用数、时间
- 论文地址
- 开源代码地址
- 二、摘要
- 三、引言
- 四、整体架构(用一个例子来阐明)
- 场景例子:
- 核心点:
- 五、方法 (架构各部分详解)
- 5.1 模型
- 1. RAG-Sequence Model
- 2. RAG-Token Model
- RAG-Sequence 模型
- RAG-Token 模型
- 总结
- 5.2 检索器:DPR
- 总结:
- 5.3 生成器:BART
- 5.4 训练
- 5.5 解码(推理)
- RAG-Token
- RAG-Sequence
- 两种模型通俗易懂的例子解释:
- 彻底解码 和 快速解码 的区别
- 1. 彻底解码(Thorough Decoding):
- 2. 快速解码(Fast Decoding):
- 总结:
- 六、实验
- 实验说明
- 6.1 开放领域问答(Open-domain Question Answering, QA)
- 四个开放领域问答数据集的简要介绍:
- 6.2 抽象问题问答(Abstractive Question Answering)
- 6.3 生成危险边缘(Jeopardy) 风格的问题
- 6.4 事实校验(Fact Verification)
- 七、结果
- 7.1 表1的解读-开放领域问答任务
- 总结:
- 7.2 表2的解读-生成和分类任务
- 术语和符号解释:
- 测试任务种类:
- 总的对比:
- 生成 Jeopardy 问题的任务对比
- 事实校验任务对比(FEVER)
- 总结:
- 7.3 表3的解读-生成任务回答的准确性和具体性
- 表格结构:
- 任务解释:
- 总结:
- 7.4 图2的解读
- 总结
- 7.5 表4的解读-Jeopardy 问题生成任务的事实性和具体性
- 7.6 表5的解读-生成内容的多样性
- 7.7 表6的解读-消融实验评估检索机制的有效性
- 为什么对于FEVER任务,BM25表现更好?
- 7.8 图3的解读-检索更多文档的效果
- 检索召回率(Answer Recall)
- 7.9 索引热交换(Index hot-swapping)-轻松更新知识库
- 背景
- 测试方法
- 结论
- 八、相关工作-前人的工作和本文的创新点
- 单任务检索
- NLP的通用架构
- 学习式检索
- 基于记忆的架构
- 检索与编辑方法
- 九、讨论
- 本文的贡献
- 未来研究方向
- 广泛应用的潜力
- 十、更广泛的影响
- 积极影响
- 潜在风险
一、简介
一句话简介
该论文是RAG的开山之作,提出了一种新的模型架构,将检索和生成结合在一起,以解决预训练模型在知识密集型自然语言处理任务中的局限性。
作者、引用数、时间
该文出自 Facebook AI Research 团队,Patrick Lewis、Ethan Perez等人,提交于arXiv,且已被NeurIPS 2020接收,第一版发布于2020年5月22日,被引用数:3600多次。
论文地址
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
开源代码地址
RAG 实验的代码已经开源,作为 HuggingFace Transformers Library(Wolf 等人,2019)的一部分,可在此链接查看:
https://github.com/huggingface/transformers/tree/main/examples/research_projects/rag
demo地址
https://huggingface.co/rag/
二、摘要
摘要讨论了 RAG(Retrieval-Augmented Generation) 模型的背景、动机和研究贡献:
-
背景:大型语言模型(如 GPT、BERT)通过大量数据预训练,能够存储丰富的知识,并在微调后表现出色。然而,这些模型在处理需要外部知识的复杂任务时存在一定局限性,尤其是在访问和操作知识时。它们的知识更新也非常困难。
-
RAG 模型的提出:为了解决这一问题,RAG 模型结合了两种不同的记忆系统:
- 参数化记忆:模型内置的预训练语言模型,它已经通过大量数据学习了通用的语言知识。
- 非参数化记忆:通过检索外部知识库(如维基百科)实时获取的信息,帮助模型生成答案。这样可以扩展模型的知识范围,增强生成效果。
-
两种 RAG 模型对比:
- 一种是在整个生成过程中使用相同的检索文档。
- 另一种是在生成每个词时,可以从不同的文档中获取信息,进一步提升生成的灵活性。
-
实验结果:通过对多个知识密集型任务进行微调,实验结果表明 RAG 模型在多个开放领域的问答任务中表现优异,并且在语言生成任务中,生成的回答比传统模型更准确、更丰富。
RAG 模型的创新在于它通过结合内置的语言知识和外部实时检索知识,提升了模型的生成能力和知识灵活性,尤其适合处理复杂和开放性的问题。
三、引言
引言主要介绍了 RAG(Retrieval-Augmented Generation) 模型的背景、现有问题和模型设计和优势,特别是它如何结合预训练语言模型和实时文档检索来提升复杂任务中的性能。
-
背景和问题:预训练的语言模型(如 BERT 和 GPT)尽管在自然语言处理任务上取得了很大进展,但它们在处理知识更新、解释生成内容等方面存在局限。生成不真实的答案(称为“幻觉”)是它们的一个常见问题。
-
RAG 模型的提出:为了解决这些问题,RAG 模型结合了预训练的语言模型和外部的非参数化知识源(如维基百科)进行知识检索。RAG 模型在生成答案时,能够不仅依赖模型自身的知识,还能通过实时检索相关文档来生成更加准确和丰富的答案。
-
创新点:与之前的模型相比,RAG 的创新点在于它能够同时使用预训练的参数化记忆(模型内部的知识)和非参数化记忆(外部检索到的文档),使得模型的知识库更加灵活、易于扩展,并能够生成多样且精确的答案。
-
实验结果:实验表明,RAG 在多个知识密集型任务中的表现优于传统模型,特别是在开放领域问答和事实校验任务中,RAG 展现了生成更准确、更详细回答的能力。
四、整体架构(用一个例子来阐明)

这张图展示了 RAG(Retrieval-Augmented Generation) 的整体架构,为了帮助理解这个架构,下面用一个通俗易懂的例子来解释。
场景例子:
你想向智能助手提问:“谁是《神曲》的作者?”(这是你输入的问题)。
-
查询编码器(Query Encoder):
- 你的问题先经过查询编码器,模型将这个问题转化为一个向量表示,即图中的 q ( x ) q(x) q(x)。可以把它想象成将自然语言问题转换为计算机能够理解的数字形式。
-
检索器(Retriever):
- 接下来,检索器使用这个向量去搜索一个文档数据库,这个过程通过一种称为最大内积搜索(MIPS)的技术来实现。这个步骤的目的是找到最相关的文档,这些文档中可能包含关于《神曲》的答案。
- 假设从数据库中找到了 4 个相关的文档 z 1 , z 2 , z 3 , z 4 z_1, z_2, z_3, z_4 z1,z2,z3,z4,每个文档都包含与问题相关的内容。
-
生成器(Generator):
- 对于每个找到的文档,模型使用生成器(在图中表示为 p θ p_\theta pθ)生成一个可能的回答。这是通过“参数化记忆”完成的,即生成模型根据文档和问题生成一个文本回答。
- 比如,对于文档 z 1 z_1 z1,生成器可能会生成:“《神曲》是但丁写的”,而对于文档 z 2 z_2 z2,生成器可能会产生类似的回答。
-
边缘化(Marginalization):
- 因为检索器找到了多个文档,模型会对所有文档的生成结果进行综合处理,即边缘化。这个过程可以通过对所有文档生成的结果进行加权求和来实现。简单来说,模型会将所有文档的回答综合起来,最终给出一个最优的预测(即“但丁是《神曲》的作者”)。
-
最终输出:
- 最终,智能助手输出的回答可能是:“《神曲》是由但丁创作的”,这是结合了多个文档中的信息来生成的。
核心点:
- 参数化记忆(Parametric Memory):模型通过预训练的权重来生成回答,这种权重是通过大量数据学习到的,这些权重参数已经存储了模型学到的大量事实知识。
- 非参数化记忆(Non-Parametric Memory):模型依赖外部文档库(非参数化的存储方式)来辅助生成更准确的回答,而不是完全依赖模型内部的权重。
五、方法 (架构各部分详解)
注意:如果看不懂复杂的数学公式部分,可直接跳过,后面就有通俗易懂的例子解释
5.1 模型
下面为数学公式部分,看不懂可跳过
RAG 有两种不同模型:RAG-Sequence Model 和 RAG-Token Model。它们主要区别在于如何处理检索到的文档和如何在生成答案时进行边缘化处理。
1. RAG-Sequence Model
-
过程:在 RAG-Sequence 模型中,检索到的文档作为一个潜在变量,整个序列的生成过程使用相同的文档。也就是说,对于给定的查询 (x),检索器会找到前 (k) 个相关的文档,然后生成器使用同一个文档来生成整个输出序列。
-
边缘化:在生成完成后,模型对所有文档的输出进行边缘化处理。具体的公式是:
p RAG-Sequence ( y ∣ x ) ≈ ∑ z ∈ top-k ( p ( ⋅ ∣ x ) ) p η ( z ∣ x ) p θ ( y ∣ x , z ) p_{\text{RAG-Sequence}}(y|x) \approx \sum_{z \in \text{top-k}(p(\cdot|x))} p_\eta(z|x) p_\theta(y|x, z) pRAG-Sequence(y∣x)≈z∈top-k(p(⋅∣x))∑pη(z∣x)pθ(y∣x,z)
其中, p η ( z ∣ x ) p_\eta(z|x) pη(z∣x) 是检索到的文档 (z) 给定查询 (x) 的概率, p θ ( y ∣ x , z ) p_\theta(y|x, z) pθ(y∣x,z) 是生成器基于文档 (z) 生成整个序列 (y) 的概率。
2. RAG-Token Model
-
过程:在 RAG-Token 模型中,针对每一个生成的目标 token,模型可以从不同的文档中选择内容。与 RAG-Sequence 不同的是,生成器不使用同一个文档生成整个输出序列,而是在生成每个 token 时可以选择一个不同的文档进行生成。
-
边缘化:每个 token 的生成也会进行边缘化处理,这意味着在每次生成新 token 时,都根据每个文档生成一个分布,并结合这些分布生成下一个 token。具体公式如下:
p RAG-Token ( y ∣ x ) ≈ ∏ i = 1 N ∑ z ∈ top-k ( p ( ⋅ ∣ x ) ) p η ( z ∣ x ) p θ ( y i ∣ x , z , y 1 : i − 1 ) 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}) pRAG-Token(y∣x)≈i=1∏Nz∈top-k(p(⋅∣x))∑pη(z∣x)pθ(yi∣x,z,y1:i−1)
这里, p θ ( y i ∣ x , z , y 1 : i − 1 ) p_\theta(y_i|x, z, y_{1:i-1}) pθ(yi∣x,z,y1:i−1) 是生成器基于文档 (z) 和前 (i-1) 个 token (y_{1:i-1}) 生成当前 token (y_i) 的概率。
下面为通俗易懂的例子解释
RAG-Sequence 模型
想象你问了一个问题,智能助手从一个图书馆里找了几本相关的书。助手从中选了一本书,然后根据这本书的内容生成整个回答。这个过程中,它一直在参考同一本书,直到回答结束。之后,它会比较多个回答,选出最好的那个。RAG-Sequence 模型就像这个助手,它在生成答案时始终依赖于同一本书(一个文档),然后通过多个文档生成的回答进行对比,给出最终答案。
RAG-Token 模型
另一种情况是,智能助手不只用一本书,而是每次它要生成一个词时,都会从不同的书中挑选出一个词来组合答案。比如,它可能用第一本书生成第一个词,然后用第二本书生成下一个词。最后,它把每次从不同书中挑选的词组合起来,得到一个完整的答案。RAG-Token 模型就像这个助手,它在生成每个词的时候可以参考不同的书(文档),所以每个词都有可能来源于不同的地方。
总结
- RAG-Sequence 模型:在生成整个答案时,助手只从一本书中获取信息。
- RAG-Token 模型:在生成每个词时,助手可以从不同的书中获取信息。
这使得 RAG-Token 模型更加灵活,能够从多个文档中提取信息,适合那些需要从多个来源获取答案的复杂问题。
5.2 检索器:DPR
下面为数学公式部分,看不懂可跳过
检索组件 p η ( z ∣ x ) p_\eta(z|x) pη(z∣x) 基于 DPR,它采用双编码器架构:
p η ( z ∣ x ) ∝ exp ( d ( z ) ⊤ q ( x ) ) p_\eta(z|x) \propto \exp \left( \text{d}(z)^\top \text{q}(x) \right) pη(z∣x)∝exp(d(z)⊤q(x))
其中, d ( z ) \text{d}(z) d(z) 是通过 BERT-base 文档编码器生成的文档 z z z 的密集表示, q ( x ) \text{q}(x) q(x) 是通过 查询编码器生成的查询 x x x 的表示。两个编码器都基于 BERT 模型。计算前 K 个文档的相关性得分 p η ( z ∣ x ) p_\eta(z|x) pη(z∣x) 是一个 最大内积搜索(MIPS) 问题,该问题可以通过子线性时间近似求解。
文中使用预训练的 DPR 双编码器来初始化检索器,并建立文档索引。这个检索器被训练用于检索包含 TriviaQA 和 Natural Questions 数据集问题答案的文档。文中将文档索引称为非参数化记忆。
-
双编码器架构:
- DPR 使用两个编码器:一个用于查询 q ( x ) q(x) q(x),一个用于文档 d ( z ) d(z) d(z)。查询和文档的表示都是通过各自独立的 BERT-base 模型生成的。
- 查询表示: q ( x ) q(x) q(x) 是查询 x x x 通过查询编码器生成的密集向量表示。
- 文档表示: d ( z ) d(z) d(z) 是文档 z z z 通过文档编码器生成的密集向量表示。
-
相似度计算:
- 文档 z z z 和查询 x x x 的相似度通过它们的向量点积来计算:
p η ( z ∣ x ) ∝ exp ( d ( z ) ⊤ q ( x ) ) p_\eta(z|x) \propto \exp \left( \text{d}(z)^\top \text{q}(x) \right) pη(z∣x)∝exp(d(z)⊤q(x))
这个公式表示的是在给定查询 x x x 的情况下,检索到文档 z z z 的概率。
- 文档 z z z 和查询 x x x 的相似度通过它们的向量点积来计算:
-
MIPS(最大内积搜索):
- MIPS 是一种高效的算法,用于快速从大量文档中找到与查询最相关的前 K 个文档。这个问题通过内积最大化来解决,从而加速检索过程,且其时间复杂度为子线性。
-
非参数化记忆:
- 文档索引被称为 非参数化记忆,因为这些外部知识(如维基百科)并没有内嵌在模型的参数中,而是通过动态检索获取。因此,模型可以从外部数据源中灵活地访问相关知识,而不依赖模型内的固定知识。
总结:
DPR 检索器 通过双编码器架构将查询和文档分别编码为向量,利用内积计算它们的相似度,并通过 MIPS 算法高效检索出与查询相关的文档。这个过程允许模型动态地访问外部知识库,并利用这些知识生成高质量的答案。
下面为通俗易懂的解释
DPR(Dense Passage Retrieval,稠密段落检索)是帮助RAG模型进行信息检索的。可以把它想象成一个非常高效的文档搜索系统。
-
双编码器架构:
DPR使用了两个独立的“编码器”来分别处理文档和查询问题。可以理解为有两个机器,一个负责将所有可能的答案(文档)编码成一种紧凑的形式(稠密向量),另一个负责将问题编码成类似的紧凑形式。 -
匹配文档和问题:
搜索的核心思想是比较问题和文档的“紧凑形式”,看它们之间有多“接近”。接近度越高,说明这个文档可能越适合回答你的问题。可以把这个过程想象成查找最匹配的钥匙和锁,只有最相似的才能成功匹配。 -
预训练:
这里的编码器已经通过海量数据进行过预训练(相当于已经看过很多问题和答案),所以它知道如何高效地将问题和答案进行匹配。 -
高效检索:
由于要处理的文档量非常大,DPR使用了一种叫“最大内积搜索”的方法来加速这个匹配过程。就像在一大堆钥匙里快速找到几把最可能打开锁的钥匙。 -
非参数记忆:
最后,文档被存储在一个叫做“非参数记忆”的地方。这个名字听起来复杂,但本质上只是一个巨大的文档库,系统在需要时可以随时去里面寻找最相关的答案。
DPR 就像是一个已经学会如何快速找到最佳答案的智能搜索引擎。
5.3 生成器:BART
BART 是一个用于生成文本的强大工具,它可以从输入的信息中生成连贯的回答。
- BART 是一个 seq2seq(sequence-to-sequence) 模型,预训练时使用了一个带有“去噪”目标的任务,这意味着它能很好地从混乱或不完整的信息中恢复完整的答案。
- 在这个 RAG 模型中,BART 被用来生成每个问题的答案。具体来说,它结合了从文档检索中获取到的内容 ( z ) 以及用户的输入 ( x ),然后生成答案。
- BART-large 是一种特别大的版本,包含了 4亿个参数,这使得它能够处理非常复杂的语言生成任务。
- 文中还提到,BART 的生成部分被称为 “参数化记忆”,因为生成器依赖的知识是存储在 BART 模型的参数中的,这些参数通过预训练学到了丰富的语言知识。
换句话说,BART 是 RAG 模型中的生成模块,负责从检索到的文档中提取信息并生成最终的答案。
5.4 训练
训练过程的核心思想是联合训练,同时优化文档检索模块(Retriever)和生成模块(Generator)。具体解释如下:
-
无监督选择文档:在训练过程中,模型不会明确告诉哪个文档最适合当前的查询,而是通过训练模型来自行学习从文档库中找到相关的文档。
-
给定输入输出对:训练集由一组输入/输出对组成。例如,输入可以是一个问题,输出可以是答案。模型通过这些已知的输入和输出对来进行微调。
-
损失函数:模型使用一种叫做“负对数似然”的损失函数。这意味着它在训练时,会尝试最小化生成答案的“错误程度”,即最大化模型生成正确答案的概率。
-
优化器:使用 Adam 优化器,这是一种在深度学习中常用的技术,可以帮助模型更高效地学习和调整参数。
-
更新组件:在这个训练过程中,文中提到模型并不需要频繁更新所有部分。尤其是 BERT 文档编码器(BERT_d),它很难频繁更新(因为代价高)。相反,文档编码器保持不变,只微调查询编码器 BERT_q 和 BART 生成器。
简而言之,模型通过调整它找到的文档和生成的答案,来提升自己对问题的理解和回答能力,而不需要频繁更新所有模块。
5.5 解码(推理)
下面为数学公式部分,看不懂可跳过
在测试时,RAG-Sequence 和 RAG-Token 需要通过不同方式来近似求解 arg max y p ( y ∣ x ) \text{arg max}_y p(y|x) arg maxyp(y∣x)。
RAG-Token
RAG-Token 模型 可以被视为一个标准的自回归序列到序列(seq2seq)生成器,其转移概率为:
p θ ′ ( y i ∣ x , y 1 : i − 1 ) = ∑ z ∈ top-K ( p ( ⋅ ∣ x ) ) p η ( z ∣ x ) p θ ( y i ∣ x , z , y 1 : i − 1 ) p'_\theta(y_i | x, y_{1:i-1}) = \sum_{z \in \text{top-K}(p(\cdot | x))} p_\eta(z|x) p_\theta(y_i | x, z, y_{1:i-1}) pθ′(yi∣x,y1:i−1)=z∈top-K(p(⋅∣x))∑pη(z∣x)pθ(yi∣x,z,y1:i−1)
解码时,可以将 p θ ′ ( y i ∣ x , y 1 : i − 1 ) p'_\theta(y_i | x, y_{1:i-1}) pθ′(yi∣x,y1:i−1) 插入标准的束搜索解码器中。
RAG-Sequence
对于 RAG-Sequence,由于 p ( y ∣ x ) p(y|x) p(y∣x) 的似然并没有分解为传统的逐 token 似然,无法通过单一的束搜索来解码。我们需要对每个文档 z z z 运行束搜索,对每个假设 y y y 进行打分,使用 p θ ( y i ∣ x , z , y 1 : i − 1 ) p_\theta(y_i | x, z, y_{1:i-1}) pθ(yi∣x,z,y1:i−1)。这会产生一组假设 Y Y Y,其中某些假设可能不会在所有文档的束搜索中出现。为估计假设 y y y 的概率,我们会对每个没有生成 y y y 的文档 z z z 运行额外的前向传播,将生成器概率与 p η ( z ∣ x ) p_\eta(z|x) pη(z∣x) 相乘,之后对所有束的边缘化概率求和。我们将这种解码过程称为“彻底解码(Thorough Decoding)”。
对于较长的输出序列,集合 Y Y Y 会变得很大,因此需要多次前向传播。为更高效的解码,可以进一步近似处理,假设 p θ ( y ∣ x , z i ) ≈ 0 p_\theta(y | x, z_i) \approx 0 pθ(y∣x,zi)≈0,如果 y y y 在束搜索时没有从 z i z_i zi 中生成。通过这种方式,一旦候选集 Y Y Y 生成,就无需为 y y y 运行额外的前向传播。我们称这种解码过程为“快速解码(Fast Decoding)”。
下面为通俗易懂的例子解释
两种模型通俗易懂的例子解释:
想象你在玩一个问答游戏。你输入了一个问题,模型要根据从多个书籍中找到的内容来生成一个答案。
-
RAG-Token 模型 就像是一个助手,每次生成一个字或单词时,它会参考多本书,找到最适合的一本书来决定下一个字或者单词。这就像是在每一步重新选择最合适的参考资料。
-
RAG-Sequence 模型 更像是这样:它首先选择了一本最有可能包含答案的书,然后将所有注意力集中在这本书上来生成整个答案。这需要逐步检查每一个句子,因此更耗时,但可以确保生成的答案上下文一致。
在解码过程中,RAG-Token 模型 更灵活,因为它可以从不同的书中获取信息;而 RAG-Sequence 模型 则在生成每个答案时使用单一文档,通过更加详细的解码过程来生成答案。
两种解码方式的区别
彻底解码 和 快速解码 的区别
彻底解码(Thorough Decoding) 和 快速解码(Fast Decoding) 的区别可以通过一个简单的例子来说明。想象你在做一个选择题考试,而你的目标是找到最正确的答案。你有两种策略可以选择:彻底检查每一个选项(对应彻底解码)和 快速缩小选项范围(对应快速解码)。
1. 彻底解码(Thorough Decoding):
假设你有 10 本参考书,你需要检查每一本书中的内容来回答问题。每次你得到了一个潜在的答案时,你会去每一本书中查找是否有相关内容,然后再根据所有书籍中的信息给出最终答案。这个过程就像是“彻底解码”:它需要你从所有文档中一一验证每一个潜在的答案,再将这些信息结合起来,最后得出最准确的答案。
在模型中,彻底解码 的过程如下:你生成了一个候选答案 ( y ),接着你对每一个检索到的文档 ( z ) 进行前向传播,计算 p θ ( y ∣ x , z ) p_\theta(y|x, z) pθ(y∣x,z) 的值。然后你对这些概率进行加权求和,得出最终的答案。这种方法比较慢,因为需要多次前向传播,但可以保证信息的完整性。
2. 快速解码(Fast Decoding):
而快速解码 就像是你一开始检查了部分选项,然后认为某些参考书不可能提供答案,直接忽略它们。你只会查看那些最可能有用的参考书,而不再去查阅所有书籍。这样虽然不是 100% 确定,但可以更快地缩小范围,得到一个合理的答案。
在模型中,快速解码 的过程是:如果某个候选答案 ( y ) 没有在某个文档 ( z ) 中生成,你可以近似认为 p θ ( y ∣ x , z i ) ≈ 0 p_\theta(y | x, z_i) \approx 0 pθ(y∣x,zi)≈0。这样一来,你就不需要对每个文档都做前向传播,节省了时间。这种方法更高效,适合生成长答案时使用,但相对于彻底解码,它可能会略微降低答案的准确性。
总结:
- 彻底解码:像是你每次遇到问题时,都认真检查每一个可能的文档或者书籍,确保答案无误。这种方法较慢但更精确。
- 快速解码:你根据一部分信息快速做出决定,只检查最可能的来源,而跳过那些不太相关的文档。这种方法更快,但有时可能略微牺牲准确性。
六、实验
实验说明
-
数据来源:所有实验都使用了 维基百科 作为模型的知识来源。具体来说,使用了 2018年12月 的维基百科快照,这些数据被分割成了较小的“文档块”,每块包含 100 个单词。这样总共形成了大约 2100万份文档。
-
检索过程:实验中使用了 MIPS(最大内积搜索)技术来进行快速的文档检索,并且使用了 FAISS 作为实现工具,这是一个常用的高效相似性搜索库。同时使用了一种叫做“分层可导航小世界网络”的算法来加速文档的查找。
-
训练与测试:在训练过程中,每次查询时,模型会从文档库中检索出最相关的前 k 个文档(k 的取值为 5、10 等),然后模型基于这些文档进行答案生成。在测试时,同样也使用这些检索到的文档来生成答案。
6.1 开放领域问答(Open-domain Question Answering, QA)
开放领域问答是指系统需要回答范围广泛的问题,并且不能依赖于特定领域的知识。在这里,RAG 模型通过结合检索的外部知识和生成能力来回答这些问题。
-
训练方法:通过最小化答案生成的错误率来训练模型,即使用了一种叫做“负对数似然”的技术。这种方法帮助模型提高生成正确答案的概率。
-
对比实验:将 RAG 模型与两类方法进行了比较:
- 抽取式 QA:这类方法直接从检索到的文档中提取出答案片段。
- 闭卷 QA:这类方法生成答案时不依赖外部文档,只依赖模型内部学习到的知识。
-
数据集:研究使用了四个开放领域的问答数据集(NQ、TQA、WQ、CT),这些数据集为研究提供了不同类型的问题和测试平台。
四个开放领域问答数据集的简要介绍:
-
NQ (Natural Questions):
- Natural Questions 是由谷歌推出的一个大规模开放领域问答数据集。它包含了从 Google 搜索中获取的真实问题,并且每个问题都对应了一个来自 Wikipedia 的长文档。任务要求模型找到文档中的片段并生成正确的答案。这个数据集特别适合训练模型处理复杂问题和长文档中的答案定位。
-
TQA (TriviaQA):
- TriviaQA 是一个包含了真实问答比赛(trivia)中的问题的数据集。这些问题通常较为复杂,并且答案可能出现在多个文档或网页中。TriviaQA 提供了多种格式的答案,包括提取式答案和文档片段,因此模型不仅要定位正确答案,还需要理解上下文。
-
WQ (WebQuestions):
- WebQuestions 是一个基于实际用户通过 Google 搜索提出的问题数据集。问题的答案通常可以在 Freebase 知识图谱中找到。这个数据集挑战模型从结构化知识中找到答案,适合于基于知识图谱的问答系统。
-
CT (CuratedTrec):
- CuratedTrec 是从 TREC(Text REtrieval Conference)的问答任务中挑选的一个数据集。它包含了一组精心挑选的问题和文档,主要用来评估模型在从非结构化文档中提取答案时的表现。
这些数据集共同为开放领域问答提供了多样性挑战,测试模型在各种情况下生成正确答案的能力。
6.2 抽象问题问答(Abstractive Question Answering)
-
MSMARCO 数据集:这是一个用来测试生成模型能力的任务。它提供了一些问题和多个高质量的参考段落,帮助模型生成答案。实验中,研究者并不使用这些参考段落,而仅依赖模型的生成能力,这使得任务更加困难。
-
抽象问答 vs. 抽取问答:抽象问答是指模型生成完整的句子答案,而不仅仅是从文档中抽取现有的句子。这使得回答更自然、更流畅,但也更加依赖模型的语言生成能力。
-
挑战:一些问题(例如“加利福尼亚火山镇的天气如何?”)很难只依靠普通文档生成匹配的答案,因为这些问题可能需要访问最新的或者具体的数据库来获取答案。因此,如果模型不能使用预定义的段落或参考资料,表现会下降。
-
参数化知识的使用:RAG 模型可以通过其预训练中学到的知识来回答一些问题,这被称为“参数化知识”。这意味着即使没有具体的文档,模型也可以依赖预先学习的知识生成合理的答案。
6.3 生成危险边缘(Jeopardy) 风格的问题
使用 RAG 模型 生成 Jeopardy 风格的问题,并与 BART 模型 进行对比。Jeopardy 问题与传统的开放领域问答任务不同,因为它要求基于已知的答案生成精确的问题,而不是直接从文档中提取答案。
-
数据集:实验使用了 SearchQA 数据集进行训练和测试,包含大量的训练、验证和测试样本。
-
评估方法:研究人员使用了 Q-BLEU-1 作为评估指标,这个指标在匹配实体时更为有效。除此之外,还通过人工评估模型生成问题的准确性(是否符合事实)和具体性(问题与答案是否密切相关)。
-
模型对比:RAG 模型和 BART 模型都被用来生成 Jeopardy 风格的问题,评估人员会比较两个模型生成的问题,看看哪个问题更好。
这一实验用于测试 RAG 模型的生成能力,尤其是在生成复杂问题时的表现。
6.4 事实校验(Fact Verification)
该任务要求模型从维基百科中检索证据,以判断给定声明是否正确。
-
FEVER 任务:FEVER 是一个经典的事实校验任务,要求模型基于外部证据(如维基百科)来验证声明的真假或确定是否缺少信息。这是一个复杂的推理问题,因为模型需要不仅找到相关信息,还要做出合理的推断。
-
RAG 模型的应用:研究人员使用 RAG 模型进行分类,而不是生成答案。模型在这项任务中的作用是找到与声明相关的证据,然后根据这些证据判断声明的正确性。这与问答任务不同,因为它更强调推理和分类,而不是文本生成。
-
与其他方法的不同:与其他方法不同,研究人员并未使用额外的监督信号来告诉模型哪些证据是最好的。这使得 RAG 模型在没有明确指导的情况下,也能够处理更广泛的任务。这种方法更接近实际应用场景,因为在现实世界中,可能没有足够的监督信号来帮助模型识别最相关的证据。
通过这个任务,作者展示了 RAG 模型在处理复杂的事实校验问题时的能力,尤其是在不依赖外部监督信号的情况下。
七、结果
7.1 表1的解读-开放领域问答任务
表1展示了三种模型(Closed Book 模型、 Open Book 模型 和 RAG 模型)在四个开放领域问答数据集上的测试结果。

-
Closed Book 模型:
- T5-11B:该模型的设计是通过预训练获得参数化内部知识,而不依赖于外部文档进行检索。
- T5-11B + SSM:是 T5-11B 模型的增强版本,通过结合特殊的预训练任务(如 salient span masking),提升了在某些任务上的表现。
-
Open Book 模型:
- REALM:通过结合外部文档检索,由于其使用了外部知识,它在回答复杂问题时更有优势。
- DPR:通过 Dense Passage Retrieval 检索外部文档,在 TQA 数据集上表现最佳,在 NQ、WQ 和 CT 数据集上的表现也有提升。
-
RAG 模型:
- RAG-Token:使用外部文档的检索增强生成。
- RAG-Sequence:同样使用外部文档检索,但在生成答案时使用整个文档。
总结:
- Closed Book 模型的表现依赖于其内置的知识库,因此在较大、复杂的任务(如 NQ)上表现略差。
- Open Book 模型通过检索外部知识库,提升了其在所有数据集上的表现,尤其是 DPR 在 TQA 数据集上表现优异。
- RAG 模型结合了生成和检索,表现出更为平衡且优秀的性能,尤其是 RAG-Sequence 在多个数据集上都达到了更高的得分。
7.2 表2的解读-生成和分类任务
表 2 展示了几种模型在生成和分类任务中的测试得分,包含:抽象问题问答、生成危险边缘风格的问题和事实校验。

术语和符号解释:
- gold context/evidence:金标准上下文/证据,这个术语指的是经过人工筛选或精心标注的,与问题或任务高度相关的上下文或证据。这些内容通常被认为是最可靠的信息来源,用于模型训练或验证。在大规模 NLP 任务中,它被视为最理想的输入形式。
- 带星号的数据:表示使用了金标准上下文/证据来训练的模型的得分。
- 带下划线的数据:表示未使用金标准上下文/证据来训练的最优模型的得分。
测试任务种类:
- Jeopardy B-1 和 QB-1:这是关于问答生成任务的两个评分指标,通常用于评估模型生成的准确性和多样性。
- MS-MARCO R-L 和 B-1:分别代表 Rouge-L 和 BLEU-1 分数,用于评估模型在生成任务中的表现。Rouge-L 衡量生成答案与参考答案之间的重叠率,BLEU-1 衡量生成答案的准确性。
- FEVER3 和 FEVER2:这是事实验证任务,Label Accuracy 用于评估模型的标签准确率,即模型预测的正确性。
总的对比:
-
SotA(State of the Art):
- SotA :指的是在特定任务或领域中表现最好的技术或模型。在机器学习和自然语言处理等领域中,SotA 模型是指当前已知的最先进的模型,通常在某些基准测试(例如,开放领域问答、文本生成或图像识别任务)上取得了最优性能。随着研究的推进,新的模型和方法不断被提出,SotA 模型也会不断更新。
- MS-MARCO、FEVER3 和 FEVER2 任务中,这是当前最优的模型,但它使用了金标准的上下文训练,因此带有更高的先验信息。
-
BART 模型:
- 在生成任务(Jeopardy 和 MS-MARCO)中,BART 得分相对较低
- 在分类任务 FEVER3 和 FEVER2 中,BART 的表现也不如最优模型。
-
RAG-Token 和 RAG-Sequence 模型:
- RAG-Tok:在生成任务中表现优于 BART。
- RAG-Seq:在生成任务中的表现也不错,比 BART 的得分高。
- 分类任务:RAG 模型在 FEVER 任务中表现优异,接近最优模型。
生成 Jeopardy 问题的任务对比
RAG-Token 在生成 Jeopardy 问题的任务中表现优于 RAG-Sequence。Jeopardy 问题通常包含两个信息片段,RAG-Token 可能表现更好,因为它能够结合多个文档中的内容来生成答案。
事实校验任务对比(FEVER)
-
三分类任务 FVR3(真假和无法判断):RAG模型的性能与最先进的、专门为这一任务设计的复杂流水线模型相比,差距仅为4.3%。这些最先进的模型依赖于复杂的架构和大量的工程开发,并且使用了中间的检索监督(即模型训练过程中通过给定的证据进行监督)。相比之下,RAG并不依赖这些复杂的训练方法,而是直接基于检索到的文档来完成任务,表现非常接近。
-
二分类任务 FVR2(真或假):RAG与Thorne和Vlachos的RoBERTa模型进行了比较,后者是基于提供的“黄金证据”句子来判断声明真假。尽管RAG并没有被提供黄金证据句子,而是自己检索相关文档,其性能仍然非常接近RoBERTa模型,差距仅为2.7%。
-
文档检索分析:研究还分析了RAG检索到的文档是否与FEVER标注的黄金证据文档一致。在71%的案例中,RAG检索到的首个文档是黄金证据文档的一部分。在90%的案例中,RAG检索到的前10个文档中至少有一个是黄金证据文档。
RAG即便没有依赖外部监督信号,只通过自行检索证据来做判断,依然表现出了非常接近于最先进模型的水平,这展示了RAG模型在无需复杂监督的情况下也能够高效地完成任务。
总结:
- SotA 模型 使用了金标准上下文训练,因此在生成和分类任务中表现最优。
- RAG 模型 在不使用金标准上下文训练的情况下表现也非常出色,尤其是在生成任务中,RAG 的多样性和准确性都超过了 BART。
- BART 在这些任务中的表现相对较弱,尤其是在更复杂的生成任务中。
7.3 表3的解读-生成任务回答的准确性和具体性
表3提供了不同模型在生成任务中的具体输出示例,旨在比较它们生成的回答的准确性和具体性。

表格结构:
- 任务 (Task):代表输入问题所属的任务,如 MS-MARCO 问答任务或 Jeopardy 问题生成任务。
- 输入 (Input):为每个任务中模型收到的输入问题。
- 模型 (Model):指使用的模型类型(BART、RAG-T 或 RAG-S)。
- 生成 (Generation):代表模型生成的答案。表中通过问号(“?”)标示事实错误的回答,星号(“*”)标示部分正确的回答。
任务解释:
-
MS-MARCO 任务:
- 输入问题如“定义中耳”和“苏格兰使用的货币是什么”。
- 对于问题“定义中耳”,BART 模型给出了错误的回答(“中耳是介于中耳和鼻子之间的部分”),而 RAG-T 和 RAG-S 都生成了更正确且具体的回答。
- 对于问题“苏格兰使用的货币是什么”,BART 和 RAG 模型都给出了正确的答案。
-
Jeopardy 问题生成任务:
- 对于问题“Washington”,BART 生成了错误答案(“这个州在美国有最多的县”),而 RAG-T 和 RAG-S 提供了更准确的描述。
- 对于问题“神曲”,BART 生成的答案部分正确,而 RAG 模型给出了更精确的答案。
总结:
- BART:在部分问题上表现欠佳,生成的回答中有一些事实错误或部分正确。
- RAG-T 和 RAG-S:RAG 模型 比 BART 更少产生幻觉(即生成不符合事实的内容),通常能生成更具体和更准确的答案。
该表清楚地展示了 RAG 模型在处理复杂生成任务时比 BART 模型更具优势,特别是在生成更加准确和具体的回答方面。
7.4 图2的解读

这张图展示了在生成 “Jeopardy” 风格的问题时,RAG-Token 模型对于特定输入 “Hemingway” 的后验分布(posterior probability),其中生成了两个标志性的海明威作品:“A Farewell to Arms” 和 “The Sun Also Rises”。这张图中列出了5个被检索到的文档(Document 1 到 Document 5),其中:
- Document 1 涉及海明威的作品《永别了,武器》(A Farewell to Arms)。
- Document 2 讨论了海明威的另一本作品《太阳照常升起》(The Sun Also Rises)。
图中的热图展示了对于每个生成的词(token),RAG-Token 模型是如何在这些文档之间分配后验概率的。我们可以看到:
- 当生成 “A Farewell to Arms” 时,模型的后验分布在 Document 1 上具有较高的概率,这意味着它的生成依赖于 Document 1 的信息。
- 同样,当生成 “The Sun Also Rises” 时,后验概率在 Document 2 上有明显的集中,说明该文档在生成该标题时起到了重要作用。
总结
这种后验分布的变化反映了 RAG-Token 模型如何使用多个检索到的文档来生成更准确的答案。在开始生成每个词时,模型会根据不同的文档调整其注意力,并从最相关的文档中提取信息以生成正确的答案。
7.5 表4的解读-Jeopardy 问题生成任务的事实性和具体性
表 4 展示了人类评估 Jeopardy 问题生成任务的结果,评估了 BART 和 RAG 在两个维度上的表现:事实性(Factuality) 和 具体性(Specificity)。

-
在事实性方面,42.7% 的评估认为 RAG 比 BART 更好,而只有 7.1% 认为 BART 更好。
-
在具体性方面,37.4% 的评估认为 RAG 更具体,而 16.8% 认为 BART 更好。
这表明在人类评估中,RAG 在这两项任务上普遍表现优于 BART,尤其是在事实性方面。
7.6 表5的解读-生成内容的多样性
表 5 比较了在两个生成任务(MSMARCO 和 Jeopardy 问题生成)中,几个模型生成内容的多样性

根据最近关于多样性解码的研究,可以通过计算不同模型生成的总n元组(n-grams)中独特n元组的比例(文中用的是三元组 tri-grams),来探讨生成的多样性。从表中可以看出,RAG-Sequence生成的内容比RAG-Token更具多样性,且二者生成的内容都明显比BART更具多样性,而无需使用任何促进多样性的解码方法。
7.7 表6的解读-消融实验评估检索机制的有效性
表6展示了对RAG模型在开发集上的消融实验结果。

消融实验(Ablation Study)是一种用于评估模型或系统各个组件贡献的实验方法。通过逐一去除或冻结模型中的某些组件或特性,观察性能的变化,可以帮助研究人员理解哪些组件对最终的模型性能起到了关键作用。
RAG的一个关键特性是学习如何检索任务所需的相关信息。为评估检索机制的有效性,作者进行了消融实验,冻结了训练中的检索器,并做了下面几种比较:
-
BM25与RAG的向量稠密检索器的对比:BM25是一种基于词频的传统检索器,用于与RAG模型中的向量稠密检索器进行对比。在此实验中,用固定的BM25检索器替代RAG的检索器,并在计算 p ( z ∣ x ) p(z|x) p(z∣x)时使用BM25的检索得分作为logits。表6显示BM25在某些任务(如FEVER任务)表现出色,但在开放域问答任务(如NQ和TQA)中,RAG的稠密检索器表现更好。
-
冻结检索器的影响:在“Frozen”行列中,冻结了检索器的参数,使其在训练过程中保持不变。结果显示,冻结检索器的性能显著下降,说明允许检索器的参数在训练过程中更新有助于提高模型的整体性能。
-
不冻结检索器的性能:RAG-Token和RAG-Sequence模型在不冻结检索器的情况下表现出色,尤其是在开放域问答任务中,它们的精确匹配分数高于其他实验设置。
通过这些消融实验,可以得出结论,RAG的稠密检索器在开放域任务中贡献了较大的性能提升,且允许检索器在训练中更新是确保其高效工作的关键,
为什么对于FEVER任务,BM25表现更好?
可能的原因是FEVER中的声明(claims)通常与实体密切相关,而基于词语重叠的检索方法(如BM25)非常适合处理这种类型的任务。
-
实体驱动的声明:FEVER任务的目标是验证自然语言声明的真实性,而这些声明往往与具体的实体有关,比如人物、地点、事件等。例如:“乔治·华盛顿是美国的第一任总统”就是一个与“乔治·华盛顿”这个实体相关的声明。因此,检索器需要找到包含这些实体信息的证据文档。
-
词语重叠检索:BM25是一种基于词频和文档频率的检索算法,强调查询中的关键词与文档中词汇的重叠。由于FEVER的声明通常包含了非常明确的实体(如人名、地名等),这些实体也很可能出现在相关文档中,因此基于词汇匹配的BM25算法能很好地找到包含这些实体的文档。
-
适用场景:相较于其他需要更复杂语义理解的任务,FEVER的实体中心化特点使得像BM25这样简单、直接的词语匹配方法在这个任务中表现优越。
总结来说,BM25的强项在于它能快速、有效地找到与查询中实体词汇相匹配的文档,而FEVER任务的实体驱动特性使得BM25在这个特定场景下尤其适合。
7.8 图3的解读-检索更多文档的效果
图3展示了RAG模型在训练时检索更多的文档对在两个任务(NQ和MS-MARCO)上性能表现的影响。

-
左图: 描绘了在NQ任务中,随着检索文档数量(K)的增加,NQ准确匹配率的变化情况。RAG-Sequence在测试时检索更多文档会单调地提高开放域问答的结果,随着检索文档数量从0增加到5,性能快速提升,但之后增长放缓。在K接近30时,准确率趋于平稳,继续检索更多文档对性能的提升有限。而RAG-Token的性能在检索10个文档时达到峰值。
-
中图: 描绘了在NQ任务中的检索召回率(Answer Recall @ K)随着文档数量增加的表现。可以看出,RAG模型(RAG-Tok和RAG-Seq)和固定DPR的召回率较高,并随着K值的增加而逐渐提高,而基于词汇匹配的BM25系统表现显著差于其他模型。
-
右图: 描绘了在MS-MARCO任务中,随着文档数量增加,RAG模型在Bleu-1和Rouge-L分数上的表现。可以看到,检索更多文档会提高RAG-Token的Rouge-L分数,但以牺牲Bleu-1分数为代价,而这一效果对RAG-Sequence的影响较小。
通过这三幅图,RAG模型展示了在NQ任务中,通过检索更多文档,能有效提升答案召回率。而在MS-MARCO任务中,Rouge-L分数随着文档检索数量的增加而改善,但以牺牲Bleu-1分数为代价。
检索召回率(Answer Recall)
检索召回率(Answer Recall) 是信息检索系统或生成模型中的一个重要指标,用于评估在给定查询时,系统能否从大量文档中找到正确答案。具体来说,它衡量的是在模型检索出的文档列表中,正确文档的比例。这个指标的理想值为1,表示所有正确答案都被检索到了;而0表示没有一个正确的答案被找到。
7.9 索引热交换(Index hot-swapping)-轻松更新知识库
非参数记忆模型(如 RAG) 的一个优势是:随着世界变化,它可以在测试时轻松更新知识库,而不需要像参数模型(如 T5 或 BART)那样通过重新训练才能更新其行为。
背景
在自然语言处理模型中,知识的更新是一个挑战。参数模型(如 T5 和 BART)将知识“嵌入”到模型的参数中,当外界信息变化时,必须通过重新训练来更新它们的知识。而 非参数记忆模型(如 RAG)通过将外部知识(例如 Wikipedia)存储在一个独立的索引(index)中,并在生成答案时根据需要检索这些文档。这样,当世界上的知识发生变化时,只需要更新或替换索引,而不需要重新训练模型。
测试方法
为了证明这个优势,作者创建了两个索引,一个基于 2016 年的 Wikipedia 数据集,另一个基于 2018 年的数据集。他们设计了一个测试来询问世界领导人的问题(例如,“谁是秘鲁总统?”),并使用 RAG 模型分别通过这两个索引来回答这些问题。
- 2016年索引 对应 2016 年世界领导人的问题,模型的回答正确率为 70%。
- 2018年索引 对应 2018 年世界领导人的问题,模型的回答正确率为 68%。
当索引与问题不匹配时(比如用 2016 年的数据回答 2018 年的问题),正确率明显下降,表明索引的时间相关性。
结论
这一实验表明,通过简单地更换非参数记忆(即索引),可以轻松更新模型的世界知识,而不需要像参数模型那样耗时地重新训练。这种“索引热交换”(Index hot-swapping)方法为更新知识库提供了一种更为灵活和高效的方案。
八、相关工作-前人的工作和本文的创新点
单任务检索
单任务检索是指在特定的NLP任务中通过使用信息检索技术来提升模型的表现,这是之前的做法。已经用这种技术做过的任务包括开放领域问答、事实核查、事实补全、长篇问答、维基百科文章生成、对话、翻译以及语言建模。
本研究的创新之处在于展示了如何使用一个单一的检索架构来提升不同NLP任务中的表现,而不需要为每个任务设计专门的架构。这意味着,通过引入统一的基于检索的方法,模型可以在多个任务中有效地学习和使用外部信息,显著提高整体性能。
NLP的通用架构
先前的研究表明,在NLP任务中,使用通用架构(不依赖检索)取得了巨大的成功。一个单一的预训练语言模型在GLUE基准测试的各种分类任务中,通过微调后展现了出色的表现。早期的模型,如GPT-2,主要通过单向生成(从左到右)取得了在多个任务上的成功。GPT-2证明了一个统一的语言模型能够同时胜任生成式和判别式任务。
之后的BART和T5进一步改进了这些模型,它们利用双向注意力机制,能够在处理文本生成和分类任务时取得更好的结果。BART和T5是编码器-解码器模型,它们不仅在生成任务中表现出色,也能够处理分类任务。
本研究的创新之处在于通过学习一个检索模块来增强这些通用的生成模型,并实现一个统一的架构来扩展任务范围。
学习式检索
在信息检索领域中,学习如何检索文档是一个重要的研究方向,最近的工作中,越来越多地结合了预训练的神经语言模型来提升检索性能。有些工作通过优化检索模块来辅助具体的下游任务,例如使用搜索、强化学习或潜变量方法来解决问题回答任务。这些成功的研究利用了不同的基于检索的架构和优化技术,通常在单一任务上实现了出色的表现。
本研究的创新之处在于展示了单一的基于检索的架构可以通过微调,在多个任务上实现强大的表现。
基于记忆的架构
文本的文档索引可以被视为神经网络所关注的一个大型外部记忆,类似于记忆网络。传统的记忆网络关注的是如何在任务中使用预训练的嵌入。本研究的创新之处在于它使用的是原始文本作为记忆,而不是通常的向量嵌入。这带来了两个关键优势:
-
人类可读性:因为使用的是原始文本,模型的记忆内容是人类可以直接阅读和理解的,这为模型的输出提供了一定的解释性。例如,用户可以查看模型为什么会产生某个答案,这是模型可解释性的重要一环。
-
人类可写性:这种架构允许我们动态更新模型的知识库,只需要编辑文档索引即可。这意味着在新的知识出现时,无需重新训练整个模型,只需更新相关的文档就可以实现对新信息的学习。
这种方法在知识密集型对话系统中表现出色,尤其是当生成器需要根据检索到的事实文本生成回答时。通过直接使用文本,而不是以往的嵌入或向量表示,模型可以在更复杂和动态的场景下保持高效的生成和准确性。
检索与编辑方法
RAG与检索与编辑风格的方法有一定的相似性,但也有不少区别:
-
检索与编辑方法的基本流程:先根据输入检索一个与输入相似的训练对(即输入-输出对),然后通过轻微的编辑生成最终的输出。这种方法已经在多个领域得到了成功应用,尤其是在机器翻译和语义解析领域。
-
RAG与传统检索与编辑的不同:
- 更少依赖轻微编辑:传统方法依赖的是对检索到的项目进行小范围的调整,而RAG技术的侧重点在于将多个检索到的内容进行汇总,从中提取出最相关的信息。
- 学习潜在检索:RAG不仅仅是检索相似的训练对,还在检索阶段通过潜在变量学习更有效的文档检索。
- 检索证据文档:传统方法主要检索的是与输入相关的训练对,而RAG更关注检索支持输入的证据文档。
-
未来研究方向的展望:尽管RAG技术与检索与编辑方法存在差异,但RAG技术可能适用于这些场景,并为未来的研究提供了有前途的方向。
总结来看,RAG不仅增强了检索,还整合了生成和编辑的能力,能够更好地处理复杂的语言生成任务。
九、讨论
本文的贡献
- 混合生成模型:本文提出了同时利用参数化记忆和非参数化记忆的RAG模型。
- 开放领域问答中的表现:展示了RAG模型在开放领域问答中取得了最先进的结果。
- 用户偏好:相比于纯参数化的BART,人们更偏爱RAG的生成,认为RAG生成的内容更加真实和具体。
- 检索组件的有效性:对学习到的检索组件进行了详细的调查,验证了它的有效性,并说明了如何通过替换检索索引来更新模型,而不需要任何再训练。
未来研究方向
未来的研究可以探索是否可以从零开始联合预训练参数化和非参数化记忆模块,这样可以进一步提升模型的性能。联合预训练的目标可能包括类似于BART的去噪任务或其他合适的目标函数。
广泛应用的潜力
RAG技术展示了它在各种自然语言处理任务中的潜力。参数化和非参数化记忆的结合为模型提供了强大的生成能力,并开辟了新的研究方向,特别是在处理需要动态外部知识的任务中具有应用前景。
十、更广泛的影响
讨论了RAG模型的社会影响,既包括它带来的好处,也提到了潜在的负面影响。
积极影响
- 基于事实的知识生成:RAG模型通过引用维基百科等真实的知识源,能够减少生成中出现的虚假内容或“幻觉”。这使得生成的文本更符合事实,尤其在处理需要可靠数据的场景(如医疗、科学领域)时,能够提供更高的准确性和可信度。
- 控制与可解释性:由于模型依赖外部知识,生成的内容可以被追溯至具体的来源(如维基百科的某一篇文章),这提高了内容的可解释性,使用户对生成的知识更有信心。
- 应用场景广泛:RAG模型可以应用于多个领域,如医学问题的回答、提升工作效率等,帮助人们在多个实际场景中解决问题。
潜在风险
- 外部知识的局限性:尽管RAG依赖于外部知识,但这些知识库(如维基百科)并不是完全真实或没有偏见的。因此,模型生成的内容可能受到知识库的偏见或错误信息的影响。
- 滥用风险:和其他高级语言模型(如GPT-2)类似,RAG也可能被用来生成有害或误导性内容,比如在社交媒体上发布虚假新闻、冒充他人身份,甚至生成垃圾邮件或网络钓鱼内容。
- 自动化带来的失业风险:随着语言模型的进一步发展,它们可能在未来几十年内自动化许多当前的工作,这也引发了潜在的社会问题。
为了应对这些风险,文中建议使用AI系统来对抗虚假内容和自动化的垃圾邮件生成,以减少RAG模型的负面影响。
相关文章:
【AI论文精读1】针对知识密集型NLP任务的检索增强生成(RAG原始论文)
目录 一、简介一句话简介作者、引用数、时间论文地址开源代码地址 二、摘要三、引言四、整体架构(用一个例子来阐明)场景例子:核心点: 五、方法 (架构各部分详解)5.1 模型1. RAG-Sequence Model2. RAG-Toke…...
踩坑spring cloud gateway /actuator/gateway/refresh不生效
版本 java version: 17 spring boot: 3.2.x spring cloud: 2023.0.3 现象 参考Spring Cloud Gateway -> Actuator API -> Refreshing the Route Cache 说明,先修改routes配置再调用/actuator/gateway/refresh,接口返回200 status,但…...
【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程
目录 1 KEIL(MDK-ARM) 5 Project工程设置 2 MCU和嵌入式软件包的选择 3 Code Generator 3.1 STM32Cube Firmware Library Package 3.2 Generated files 3.3 HAL Settings 3.4 Template Settings 4 Advanced Settings 5 自动生成的KEIL(MDK-ARM) 5 Project工程目录 结…...
计算机毕业设计 Java酷听音乐系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
Java的学习(语法相关)
字符串存储的问题 char 和字符串都是字符的集合,它们之间的确有相似性,但在 Java 中它们有着不同的存储机制和处理方式。让我从 char 和 String 的本质区别入手来解释。 1. char 和 String 的区别 char 是基本类型:char 是 Java 中的基本数据…...
简单的springboot 编写Socket服务接口
简单的springboot 编写Socket服务接口 1.需求 我们项目中有部分老接口为票据接口,其中实现为java socket形式进行实现,但是其中大部分信息都是原始公司封装的包进行实现的,想要修改非常费劲,所以此处简单了解了一下socket&#…...
【Android 源码分析】Activity短暂的一生 -- 目录篇 (持续更新)
1. 前言 忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 …...
VS Code使用Git Bash终端
Git Bash可以运行linux命令,在VS Code的终端界面,找到号旁边的箭头,就能直接切换了 当然,前提是安装了Git Bash,并且在资源管理器里,能鼠标右键出"Git Bash Here"...
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.mapset(模拟实现)
1.对红黑树进行改造 1.1treenode模板参数改变 之前构建treenode模板参数传的是class k,class v(set为k,k;map是k,v),现在直接用T代替 template<class T> //这里直接传了T作为模板参数,T可能是pai…...
【C++】多态(下)
个人主页~ 多态(上)~ 多态 四、多态的原理1、虚表的存储位置2、多态的原理3、动态绑定和静态绑定 五、单继承和多继承关系的虚函数表1、单继承中的虚函数表2、多继承中的虚函数表 六、多态中的一些小tips 四、多态的原理 1、虚表的存储位置 class A {…...
基于四种网络结构的WISDM数据集仿真及对比:Resnet、LSTM、Shufflenet及CNN
在上节中,我们已经详细介绍了WISDM数据集及如何使用CNN网络训练,得到了六个维度的模型仿真指标及五个维度的可视化分析,那么现在我们将训练模型推广到其他网路结构中去,通过仿真实验来对比一下不同网络之间对于WISDM数据集的训练效…...
【蚂蚁HR-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
【分布式微服务云原生】详解Redis的主从模式,主服务器挂了如何从多个从服务器选出新的主服务器
深入探索Redis主从模式:架构、故障转移与最佳实践 摘要: 本文深入探讨了Redis的主从复制模式,包括其工作原理、故障转移机制以及如何配置和管理这一模式。文章通过清晰的结构和实例代码,帮助读者理解如何在实际项目中应用Redis主…...
Android Context是什么?有很多的context他们之间有什么区别?什么时候该使用哪个?
目录 一、Context是什么? 在Android中,Context是一个抽象类 ,它代表了应用程序的当前状态,包括资源和类加载器等,它提供了一个应用运行所需的信息,比如我们要获取资源 ,那么需要她,…...
数字解调同步技术
一些概念 载波同步 载波同步是一个过程,通过该过程,接收机使其本地载波振荡器的频率和相位与接收信号的频率和相位相适应。 载波相位同步 Carrier Phase Synchronization载波频率同步 Carrier Frequency Synchronization 帧同步 待更新 位同步 待…...
k8s搭建一主三从的mysql8集群---无坑
一,环境准备 1.1 k8s集群服务器 ip角色系统主机名cpumem192.168.40.129mastercentos7.9k8smaster48192.168.40.130node1centos7.9k8snode148192.168.40.131node2centos7.9k8snode248192.168.40.132node3centos7.9k8snode348 k8s集群操作请参考《K8s安装部署&…...
Oracle架构之物理存储中各种文件详解
文章目录 1 物理存储1.1 简介1.2 数据文件(data files)1.2.1 定义1.2.2 分类1.2.2.1 系统数据文件1.2.2.2 撤销数据文件1.2.2.3 用户数据文件1.2.2.4 临时数据文件 1.3 控制文件(Control files)1.3.1 定义1.3.2 查看控制文件1.3.3…...
AR 领域的突破——微型化显示屏为主流 AR 眼镜铺平道路
概述 多年来,增强现实 (AR) 技术一直吸引着人们的想象力,有望将数字信息与我们的物理世界无缝融合。通过将计算机生成的图像叠加到现实世界的视图上,AR 有可能彻底改变我们与环境的互动方式。从增强游戏体验到协助手术室的外科医生ÿ…...
Web安全 - 构建全面的业务安全保护防御体系
文章目录 业务安全概述业务安全 vs. 基础安全业务安全的防护业务安全的防护策略1. 用户资源对抗的技术实现与优化2. IP资源对抗的技术实现与优化3. 设备资源对抗的技术实现与优化4. 操作资源对抗的技术实现与优化实际应用场景中的策略 典型场景业务场景 1:新用户注册…...
机器学习(2):机器学习的相关术语
场景示例: 你周日约了小李、老王打牌,小李先来了,老王没来。你想打电话叫老王过来。小李说:“你别打电话啦,昨天老王喜欢的球队皇马输球了,他的项目在上个礼拜也没成功上线,再加上他儿子期末考…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
数据挖掘是什么?数据挖掘技术有哪些?
目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
【前端实战】如何让用户回到上次阅读的位置?
目录 【前端实战】如何让用户回到上次阅读的位置? 一、总体思路 1、核心目标 2、涉及到的技术 二、实现方案详解 1、基础方法:监听滚动,记录 scrollTop(不推荐) 2、Intersection Observer 插入探针元素 3、基…...
短视频时长预估算法调研
weighted LR o d d s T p 1 − p ( 1 − p ) o d d s T p ( T p o d d s ∗ p ) o d d s p o d d s T o d d s odds \frac{Tp}{1-p} \newline (1-p)odds Tp \newline (Tp odds * p) odds \newline p \frac{odds}{T odds} \newline odds1−pTp(1−p)oddsTp(Tpodds…...
