论文阅读:NLP-Retrieval-Augmented Generation forKnowledge-Intensive NLP Tasks

论文地址:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks-

 知识密集型NLP任务的检索增强生成


摘要

大型预训练语言模型已被证明可以在其参数中存储事实知识,并在对下游NLP任务进行微调时获得最先进的结果。然而,它们访问和精确操作知识的能力仍然有限,因此在知识密集型任务上,它们的性能落后于特定于任务的架构。此外,为他们的决定提供来源和更新他们的世界知识仍然是开放的研究问题。到目前为止,具有显式非参数记忆的可微分访问机制的预训练模型仅用于提取下游任务。我们探索了检索增强生成(RAG)模型的通用微调配方,该模型结合了预训练的参数和非参数记忆用于语言生成。我们引入RAG模型,其中参数内存是预训练的seq2seq模型,非参数内存是维基百科的密集向量索引,通过预训练的神经检索器访问。我们比较了两种RAG公式,其中一种在整个生成序列中对相同的检索通道进行条件处理,另一种可以对每个令牌使用不同的通道。我们在广泛的知识密集型NLP任务上微调和评估我们的模型,并在三个开放域QA任务上设置了最先进的技术,优于参数化seq2seq模型和任务特定的检索和提取架构。对于语言生成任务,我们发现RAG模型比最先进的仅参数化的seq2seq基线生成更具体、更多样化和更真实的语言

介绍

预训练的神经语言模型已被证明可以从数据中学习大量的深度知识[47]。它们可以在不访问外部存储器(作为参数化的隐式知识库)的情况下这样做[51,52]。虽然这一发展令人兴奋,但这样的模型确实有缺点:它们不能轻易地扩展或修改记忆,不能直接提供预测的洞察力,并且可能产生“幻觉”[38]。将参数记忆与非参数(即基于检索的)记忆结合起来的混合模型[20,26,48]可以解决其中的一些问题,因为知识可以直接修改和扩展,并且访问的知识可以被检查和解释。REALM[20]和ORQA[31]是最近引入的两个将屏蔽语言模型[8]与可微检索器相结合的模型,已经显示出很好的结果,

我们通过一种通用的微调方法赋予预训练的参数化记忆生成模型非参数化记忆,我们称之为检索增强生成(RAG)。

我们建立了RAG模型,其中参数内存是预训练的seq2seq转换器,非参数内存是维基百科的密集向量索引,通过预训练的神经检索器访问。我们将这些组件组合在一个端到端训练的概率模型中(图1)。检索器(Dense Passage retriever[26],以下简称DPR)提供以输入为条件的潜在文档,然后seq2seq模型(BART[32])将这些潜在文档与输入一起条件化以生成输出。我们使用top-K近似值将潜在文档边缘化,或者以每个输出为基础(假设相同的文档负责所有标记),或者以每个标记为基础(不同的文档负责不同的标记)。与T5[51]或BART一样,RAG可以对任何seq2seq任务进行微调,从而共同学习生成器和检索器。

之前已经有大量的工作提出了用非参数内存来丰富系统的架构,这些非参数内存是为特定任务从零开始训练的,例如内存网络[64,55],堆栈增强网络[25]和内存层[30]。相比之下,我们探索了一种设置,其中参数和非参数内存组件都是预先训练并预先加载了广泛的知识。至关重要的是,通过使用预先训练的获取机制,无需额外培训就可以获得知识。

我们的研究结果强调了将参数化和非参数化记忆与知识密集型任务的生成相结合的好处,这些任务是人类在没有外部知识来源的情况下无法合理地完成的。我们的RAG模型在open Natural Questions[29]、WebQuestions[3]和CuratedTrec[2]上取得了最先进的结果,并且远远优于最近在TriviaQA[24]上使用专门预训练目标的方法。尽管这些都是提取任务,我们发现无约束生成优于以前的提取方法。

对于知识密集型生成,我们对MS-MARCO[1]和Jeopardy问题生成进行了实验,我们发现我们的模型生成的回答比BART基线更真实、更具体、更多样化。对于FEVER[56]事实验证,我们在使用强检索监督的最先进管道模型的4.3%内获得了结果。最后,我们证明了随着世界的变化,非参数记忆可以被替换来更新模型的知识

方法

我们探索了RAG模型,该模型使用输入序列x检索文本文档z,并在生成目标序列y时将其用作附加上下文。如图1所示,我们的模型利用两个组件:

  • 检索器pη(z|x),其参数η返回给定查询x的文本段落(top-K截断)分布
  • 一个由\theta作为参数的生成器生成一个token基于前i-1个y,原始的输入x和一个检索的文章z

为了端到端训练检索器和生成器,我们将检索到的文档视为一个潜在变量。

我们提出了两种模型,它们以不同的方式对潜在文档进行边缘化,从而在生成的文本上产生分布。在一种方法(RAG-Sequence)中,模型使用相同的文档来预测每个目标标记。第二种方法是RAG-Token,它可以根据不同的文档预测每个目标令牌。下面,我们正式介绍了这两个模型,然后描述了pη和pθ分量,以及训练和解码过程。

模型

RAG-Sequence Model RAG-Sequence模型使用相同的检索文档来生成完整的序列。从技术上讲,它将检索到的文档视为一个被边缘化的潜在变量,通过top-K近似获得seq2seq概率p(yjx)。具体来说,使用检索器检索前K个文档,生成器生成每个文档的输出序列概率,然后将其边缘化

RAG-Token Model 

在RAG-Token模型中,我们可以为每个目标token绘制不同的潜在文档并相应地边缘化。这允许生成器在生成答案时从多个文档中选择内容。具体来说,使用检索器检索前K个文档,然后生成器为每个文档生成下一个输出令牌的分布,然后将其边缘化,并使用以下输出令牌重复此过程

最后,我们注意到RAG可以通过将目标类视为长度为1的目标序列来用于序列分类任务,在这种情况下,RAG- sequence和RAG- token是等效的。 

检索器:DPR

检索分量pη(z|x)基于DPR[26]。DPR遵循双编码器架构:

其中d(z)是由BERTBASE文档编码器[8]生成的文档的密集表示,q(x)是由同样基于BERTBASE的查询编码器生成的查询表示。计算具有最高先验概率pη(z|x)的k个文档z的列表top-k(pη(·jx))是一个最大内积搜索(MIPS)问题,可以在次线性时间内近似求解[23]。我们使用来自DPR的预训练双编码器来初始化我们的检索器并构建文档索引。该检索器被训练来检索包含TriviaQA[24]问题和Natural questions[29]答案的文档。我们把文档索引称为非参数存储器。

 Generator: BART

组件pθ(yi |x;z;Y1:i−1)可以使用任何编码器-解码器建模。我们使用BART-large[32],一种预训练的seq2seq变压器[58],具有400M参数。为了在从BART生成时将输入x与检索到的内容z结合起来,我们只需将它们连接起来。BART使用去噪目标和各种不同的去噪函数进行预训练。它在多种生成任务上获得了最先进的结果,并且优于同等规模的T5模型[32]。我们将BART发生器参数θ作为参数存储器。

训练

我们联合训练检索器和生成器组件,而不直接监督应该检索哪些文档。给定输入/输出对的微调训练语料库(xj;Yj),我们在训练期间更新文档编码器BERTd的成本很高,因为它需要定期更新文档索引,就像REALM在预训练期间所做的那样[20]。

我们不认为这个步骤对于提高性能是必要的,并且保持文档编码器(和索引)的固定,只对查询编码器BERTq和BART生成器进行微调。

解码

在测试时,RAG-Sequence和RAG-Token需要不同的方法来近似arg max p(yjx)。

RAG-Sequence 

在测试时,RAG-Sequence和RAG-Token需要不同的方法来近似arg max p(y|x)。

对于RAG-Token模型,我们可以将其视为标准的自回归seq2seq生成器。在该模型中,我们使用转移概率来计算后验概率:p0θ(yi|jx; y1:i−1) = Pz2top-k(p(·|jx)) pη(zi|jx)pθ(yi|jx; zi; y1:i−1)。为了进行解码,我们可以将p0θ(yi|jx; y1:i−1)插入标准的beam search解码器中。

对于RAG-Sequence模型,后验概率p(y|x)不能被打破成传统的基于token的概率形式,因此我们无法使用单个beam search来解决它。相反,我们为每个文档z运行beam search,并使用pθ(yi|jx; z; y1:i−1)为每个假设打分。这产生了一组假设Y,其中一些可能没有出现在所有文档的beam中。为了评估一个假设y的概率,我们为未出现在beam中的每个文档z运行另外的前向传递,并将生成概率乘以pη(z|jx),然后对边缘概率在beam上求和。我们将这种解码过程称为“Thorough Decoding”。对于更长的输出序列,|Y|可能变得很大,需要运行许多前向传递。为了更有效地进行解码,我们可以做进一步的近似,即假设pθ(y|jx;zi)≈0,其中y未在来自x;zi的beam search中生成。这避免了在生成候选集Y之后运行额外的前向传递的需要。我们将这种解码过程称为“Fast Decoding”。

实验

我们在广泛的知识密集型任务中试验了RAG。对于所有的实验,我们使用一个单一的维基百科转储作为我们的非参数知识来源。继Lee等人[31]和Karpukhin等人[26]之后,我们使用了2018年12月的转储。维基百科的每一篇文章都被分割成100个单词的块,总共有2100万个文档。我们使用文档编码器为每个文档计算嵌入,并使用FAISS[23]构建单个MIPS索引,并使用分层可导航的小世界近似来快速检索[37]。在训练期间,我们为每个查询检索前k个文档。我们考虑k:5-10用于训练,k用于使用开发数据的测试时间。现在我们讨论每个任务的实验细节。

开放域问答

开放域问答(open domain question answer, QA)是一种重要的现实应用,也是知识密集型任务的通用测试平台[20]。我们将问题和答案视为输入-输出文本对(x;y)并通过直接最小化答案的负对数似然来训练RAG。我们将RAG与流行的抽取性QA范例[5,7,31,26]进行比较,后者的答案是从检索的文档中抽取的,主要依赖于非参数知识。我们还比较了“闭卷QA”方法[52],该方法与RAG一样生成答案,但不利用检索,而是纯粹依赖参数化知识。我们考虑了四种流行的开放域QA数据集:自然问题(NQ) [29], TriviaQA (TQA)[24]。WebQuestions (WQ)[3]和CuratedTrec (CT)[2]。由于CT和WQ都很小,我们遵循DPR[26],用我们的NQ RAG模型初始化CT和WQ模型。我们使用与之前工作相同的训练/开发/测试分割[31,26],并报告精确匹配(EM)分数。对于TQA,为了与T5[52]进行比较,我们还在TQA Wiki测试集上进行了评估。

抽象问题的回答

RAG模型可以超越简单的抽取性QA,并使用自由形式的抽象文本生成来回答问题。为了在知识密集型环境下测试RAG的自然语言生成(NLG),我们使用了MSMARCO NLG任务v2.1[43]。该任务由问题组成,每个问题从搜索引擎中检索到10个黄金段落,以及从检索到的段落中注释的完整句子答案。我们不使用提供的文章,只有问题和答案,来处理

MSMARCO作为一个开放域的抽象QA任务。MSMARCO有一些问题,如果没有访问黄金段落,就无法以与参考答案匹配的方式回答,例如“加利福尼亚州火山的天气如何?”所以如果不使用黄金段落,性能会降低。

我们还注意到,一些MSMARCO问题不能单独使用维基百科来回答。在这里,RAG可以依靠参数化知识来生成合理的响应。

问答环节

为了评估RAG在非qa环境下的生成能力,我们研究了开放域问题生成。而不是使用标准的开放领域QA任务中的问题,这些问题通常由简短的问题组成,我们提出了更苛刻的任务,即生成危险问题。

危险是一种不同寻常的形式,它包括尝试从一个实体的事实中猜测一个实体。

例如,“The World Cup”是问题“1986年墨西哥作为第一个两次举办这项国际体育比赛的国家得分”的答案。由于危险问题是精确的、事实性的陈述,根据答案实体生成危险问题构成了一项具有挑战性的知识密集型生成任务。

我们使用来自SearchQA[10]的拆分,包含100K训练、14K开发和27K测试示例。由于这是一个新任务,我们训练了一个BART模型进行比较。接下来[67],我们使用squad调整的Q-BLEU-1指标进行评估[42]。Q-BLEU是BLEU的一种变体,对于匹配实体具有更高的权重,并且与标准度量相比,在问题生成方面与人类判断具有更高的相关性。我们还进行了两项人类评估,一项评估生成事实,另一项评估特异性。我们将事实性定义为一个陈述是否可以被可信的外部来源证实,而特异性定义为输入和输出之间的高度相互依赖[33]。我们遵循最佳实践,采用两两比较评估[34]。评价者将看到一个答案和两个生成的问题,一个来自BART,一个来自RAG。然后他们被要求从四个选项中选择一个——问题A更好,问题B更好,两个都好,或者两个都不好。

事实验证

FEVER[56]要求对一种自然语言主张是否得到维基百科的支持或驳斥进行分类,或者是否没有足够的信息来决定。这项任务需要从维基百科中检索与该声明相关的证据,然后对这些证据进行推理,以区分该声明是真的、假的,还是仅从维基百科中无法验证的。FEVER是一个检索问题,与一个具有挑战性的蕴涵推理任务相结合。它还提供了一个适当的测试平台,用于探索RAG模型处理分类而不是生成的能力。我们将FEVER类标签(支持、驳斥或不够的信息)映射到单个输出令牌,并直接使用claim-class对进行训练。关键的是,与大多数其他治疗FEVER的方法不同,我们不对检索到的证据进行监督。在许多现实世界的应用程序中,检索监督信号是不可用的,不需要这种监督的模型将适用于更广泛的任务。我们探索了两种变体:标准的3-way分类任务(支持/反驳/信息不足)和Thorne和Vlachos[57]研究的2-way(支持/反驳)任务。在这两种情况下,我们报告标签准确性。

结果

开放域问答

表1显示了RAG的结果以及最先进的模型。在所有四个开放域QA任务上,RAG设置了一个新的技术状态(仅在TQA的t5可比较的分割上)。RAG结合了“闭卷”(仅参数)方法的生成灵活性和“开卷”基于检索方法的性能。与REALM和T5+SSM不同,RAG不需要昂贵的、专门的“显著广度掩蔽”预训练就能获得很好的结果[20]。值得注意的是,RAG的检索器是用DPR的检索器初始化的,DPR的检索器对Natural Questions和TriviaQA使用检索监督。RAG优于DPR QA系统,后者使用基于bert的“交叉编码器”来重新排列文档,并使用提取阅读器。RAG表明,对于最先进的性能来说,重新排序器和提取读取器都不是必需的。

即使有可能提取答案,生成答案也有几个优点。包含答案线索但不包含答案的文档仍然有助于生成正确答案,这是标准提取方法无法实现的

抽象的问题回答

如表2所示,RAG-Sequence在Open MS-MARCO NLG上的表现比BART高出2.6个Bleu分和2.6个Rouge-L分。RAG接近最先进的模型性能,这令人印象深刻,因为(i)这些模型访问带有生成参考答案所需的特定信息的黄金段落,(ii)没有黄金段落,许多问题无法回答,(iii)并非所有问题都可以从维基百科中得到答案。表3显示了从我们的模型生成的一些答案。定性地,我们发现RAG模型比BART更少产生幻觉,并且更经常地生成事实正确的文本。后来,我们还表明RAG代比BART代更多样化

问答环节

表2显示,RAG-Token在Jeopardy问题生成上的表现优于RAG-Sequence,两个模型在Q-BLEU-1上的表现都优于BART。4显示了BART和RAG-Token超过452对代的人类评估结果。评估者指出,BART在7.1%的情况下比RAG更真实,而RAG在42.7%的情况下更真实,RAG和BART在另外17%的情况下都是真实的,这清楚地证明了RAG在最先进的生成模型上的有效性。评估人员还发现RAG代在很大程度上更加具体。表3显示了每个模型的典型代。

危险问题通常包含两个独立的信息片段,而RAG-Token可能表现最好,因为它可以生成结合多个文档内容的回答。图2显示了一个示例。当生成“Sun”时,文献2中提到的“the Sun Also Rises”的后验高。同样,当《永别了,武器》生成时,文件1占据了后端。有趣的是,在生成每本书的第一个标记后,文档后向变平。

这一观察结果表明,生成器可以在不依赖于特定文档的情况下完成标题。换句话说,模型的参数化知识足以完成标题。我们通过将部分解码的“the Sun”输入BART-only基线,为这一假设找到了证据。《太阳照常升起》是《太阳照常升起》作者的小说,说明标题《太阳照常升起》存储在BART的参数中。同样,BART将完成部分解码《太阳照常升起》是《a》作者的小说《太阳照常升起》是《永别了,武器》作者的小说。这个例子展示了参数化和非参数化内存是如何协同工作的——非参数化组件帮助指导生成,提取存储在参数化内存中的特定知识。

事实验证

表2显示了我们关于FEVER的结果。对于3-way分类,RAG得分在最先进模型的4.3%以内,这些模型是具有特定领域架构和大量工程的复杂管道系统,使用中间检索监督进行训练,这是RAG不需要的。

 

对于双向分类,我们与Thorne和Vlachos[57]进行了比较,他们训练RoBERTa[35]在给定金证据句子的情况下将主张分类为真或假。尽管RAG只提供了索赔并检索了自己的证据,但其准确性仍在该模型的2.7%以内。

我们还分析了RAG检索到的文件是否与FEVER中标注为金证据的文件相对应。我们计算了由RAG和金证据注释检索到的前k个文档在文章标题上的重叠。我们发现,在71%的情况下,排名靠前的检索文档来自一篇黄金文章,在90%的情况下,排名前10的检索文章中出现了一篇黄金文章。

额外的结果

Generation Diversity :Section 4.3显示RAG模型在Jeopardy问题生成方面比BART更真实和具体。在最近关于促进多样性解码的工作之后[33,59,39],我们还通过计算不同模型生成的不同ngram与总ngram的比率来研究代多样性。表5显示,RAG-Sequence的代比RAG-Token的代更多样化,并且在不需要任何促进多样性的解码的情况下,两者都明显比BART的代更多样化。

索引消融:

RAG的一个关键特性是学习为任务检索相关信息。

为了评估检索机制的有效性,我们在训练期间冻结检索犬进行消融。如表6所示,学习检索改善了所有任务的结果。

我们将RAG的密集寻回犬与基于单词重叠的BM25寻回犬进行比较[53]。在这里,我们用固定的BM25系统代替RAG的检索器,并在计算p(zjx)时使用BM25检索分数作为logits。表6显示了结果。对于FEVER, BM25表现最好,也许是因为FEVER声明是高度以实体为中心的,因此非常适合基于单词重叠的检索。可微分检索改善了所有其他任务的结果,特别是对于开放域QA,这是至关重要的。

索引热切换 :非参数内存模型(如RAG)的一个优点是,可以在测试时轻松地更新知识。像T5或BART这样的纯参数模型需要进一步的训练,以便随着世界的变化而更新它们的行为。为了证明这一点,我们使用2016年12月的DrQA[5]维基百科转储构建了一个索引,并将使用该索引的RAG输出与我们主要结果(2018年12月)的新索引进行比较。我们准备了一份82位改变了世界的领导人的名单

在这些日期之间使用一个模板“谁是{position}?”(例如,“秘鲁总统是谁?”),用每个索引查询我们的NQ RAG模型。RAG使用2016年世界领导人指数回答了70%的正确率,使用2018年世界领导人指数回答了68%的正确率。不匹配指数的准确性很低(2018年指数和2016年领先指数为12%,2016年指数和2018年领先指数为4%)。

这表明我们可以通过简单地替换RAG的非参数内存来更新RAG的世界知识。

 

Generation diversity(生成多样性)是指在自然语言生成任务中,生成模型在输出结果中展现出多样化和丰富性的能力。生成多样性是评估生成模型质量的一个重要指标,它衡量了模型生成的多个候选结果之间的差异程度和多样性。

当生成模型过于倾向于生成重复或相似的结果时,会导致生成结果的单一性,缺乏创新和变化。相反,生成多样性强的模型能够产生多样且有趣的输出结果,以满足用户的个性化需求和提供更好的用户体验。

提高生成多样性的方法有多种,以下是一些常见的策略:

  1. 温度调节(Temperature Scaling):通过调节Softmax函数的温度参数来控制生成模型的输出分布。较高的温度值可以增加不确定性,从而促使模型产生更多样化的结果。

  2. 采样策略(Sampling Strategy):除了常规的贪婪(greedy)采样外,还可以使用不同的采样策略,如随机采样、Top-k采样或Nucleus采样等,以增加输出结果的多样性。

  3. 多模态输入(Multimodal Input):通过引入多模态输入,如图像、音频或其他非文本信息,可以丰富生成模型的输入信息,从而帮助产生更多样化的文本输出。

  4. 条件设置(Conditioning):通过在生成模型中引入一些条件,如种子文本、上下文信息或特定任务的约束等,可以引导模型根据不同条件生成多样化的结果。

  5. 多模型集成(Ensemble Methods):将多个生成模型结合起来,例如使用集成学习方法,通过对多个模型生成结果进行投票或融合,以扩展生成空间并提高生成多样性。

在设计和评估生成模型时,除了关注生成多样性,还应平衡生成结果的质量和一致性。因为太高的生成多样性可能会导致生成的结果过于随机或低质量。因此,在实际应用中,需要根据具体任务和需求来平衡生成的多样性和质量。

Retrieval ablations(检索消融实验)是一种方法,用于系统地评估信息检索系统中的各种组件、技术或策略对检索性能的影响。通过逐步去除或修改系统的某些部分,可以观察到这些变化对检索结果的影响,从而帮助理解系统的复杂性和优化关键组件。

在检索消融实验中,通常会进行以下步骤:

  1. 定义基准系统:首先,构建一个基准信息检索系统,包括索引结构、查询处理、评分函数等。该系统将作为比较的基准。

  2. 设计消融条件:确定要进行的消融实验,即要去除或修改的系统组件、技术或策略。可以选择多个条件进行比较,以便观察它们的单独和组合效果。

  3. 实施消融实验:按照定义的消融条件,逐步去除或修改系统的相应部分,并记录每个实验条件下的评估结果。例如,可以分别去除查询扩展、停用词过滤器、语言模型等来评估它们对检索性能的影响。

  4. 评估和比较结果:通过使用评估指标(如准确率、召回率、平均精度均值等)来比较各个消融实验的检索性能。这样可以确定消融条件对系统性能的影响大小和重要性。

通过检索消融实验,我们可以更好地理解信息检索系统的各个组件对整体性能的贡献,并有针对性地进行优化和改进。同时,这些实验也可以帮助指导不同的研究方向,如查询优化、索引结构改进、评分函数设计等。

​​​​​​​

 

Index hot-swapping(索引热切换)是指在信息检索系统中,在不中断服务的情况下,动态地将旧的索引(index)与新的索引进行替换或切换的过程。

在一个信息检索系统中,索引是对文档内容进行组织和存储的结构,用于支持快速的文本搜索和检索。然而,当需要更新或优化索引时,传统的方式通常需要停止服务,并重新构建及加载整个新的索引,这可能导致系统的停机时间和性能下降。

索引热切换通过一种无缝切换的方式,使得在不中断服务的前提下,可以将旧的索引逐步替换或与新的索引进行切换。这样可以实现索引的即时更新,同时保持系统的连续可用性和性能稳定。

具体而言,索引热切换通常包括以下步骤:

  1. 在后台构建新的索引:针对需要更新的文档集合,构建一个新的索引,并对其进行优化、验证和测试。

  2. 增量索引更新:将新的索引与旧的索引并行使用,并将新添加或修改的文档同时更新到两个索引中。

  3. 渐进式迁移:在后台逐步将查询请求从旧的索引转移到新的索引上。可以通过一些策略,如请求的负载均衡、路由规则等,来决定何时将查询请求从旧的索引转移到新的索引。

  4. 停止旧索引的使用:当新的索引被完全更新并验证通过后,停止对旧索引的查询和更新操作,并最终将旧的索引彻底移除。

索引热切换技术可以最小化服务中断时间,使得信息检索系统能够快速响应变化的数据和用户需求。它在大规模的文本检索系统中特别有用,因为这些系统通常需要处理海量的数据,并且需要保持高可用性和实时性。

模型分别使用5个或10个检索到的潜在文档进行训练,我们观察到它们之间的性能没有显著差异。我们可以灵活地在测试时调整检索文档的数量,这可能会影响性能和运行时。图3(左)显示,在测试时检索更多的文档单调地提高了RAG-Sequence的开放域QA结果,但是在检索10个文档时,RAG-Token的性能达到峰值。图3(右)显示,检索更多的文档会导致RAG-Token的Rouge-L更高,而blue -1则会降低,但对RAG-Sequence的影响则不那么明显。

 

相关工作

  • 单任务检索:先前的工作表明,在孤立考虑时,检索可以提高各种NLP任务的性能。这些任务包括开放域问答[5,29]、事实检查[56]、事实补全[48]、长篇问答[12]、维基百科文章生成[36]、对话[41,65,9,13]、翻译[17]和语言建模[19,27]。我们的工作将以前在将检索合并到单个任务中的成功结合起来,表明单个基于检索的体系结构能够跨多个任务实现强大的性能 
  • 之前关于NLP任务的通用架构的工作在不使用检索的情况下取得了巨大的成功。经过微调[49,8],单一的预训练语言模型在GLUE基准测试[60,61]中可以在各种分类任务上获得较强的性能。GPT-2[50]后来表明,一个单一的,从左到右的,预训练的语言模型可以在判别和生成任务中获得很强的性能。
  • 为了进一步改进,BART[32]和T5[51,52]提出了一种单一的预训练编码器-解码器模型,该模型利用双向注意在判别和生成任务上获得更强的性能。我们的工作旨在通过学习检索模块来增强预训练的生成语言模型,从而扩大具有单一统一架构的可能任务的空间。
  • 在信息检索中,学习检索文档的工作非常重要,最近使用了与我们类似的预训练神经语言模型[44,26]。一些工作优化检索模块,以帮助特定的下游任务,如问答,使用搜索[46],强化学习[6,63,62],或潜在变量方法[31,20],如在我们的工作中。这些成功利用了不同的基于检索的体系结构和优化技术,以在单个任务上实现强大的性能,同时我们展示了可以对单个基于检索的体系结构进行微调,以在各种任务上实现强大的性能。
  • 我们的文档索引可以看作是神经网络需要处理的大型外部存储器,类似于记忆网络[64,55]。并发工作[14]学习为输入中的每个实体检索经过训练的嵌入,而不是像我们的工作那样检索原始文本。其他工作通过参与事实嵌入来提高对话模型生成事实文本的能力[15,13]。我们的内存的一个关键特征是它由原始文本而不是分布式表示组成,这使得内存既(i)人类可读,为我们的模型提供一种可解释性,又(ii)人类可写,使我们能够通过编辑文档索引来动态更新模型的内存。这种方法也被用于知识密集型对话,其中生成器直接以检索文本为条件,尽管是通过TF-IDF而不是端到端学习检索获得的[9]
  • 我们的方法与检索-编辑风格的方法有一些相似之处,其中为给定的输入检索类似的训练输入-输出对,然后编辑以提供最终输出。这些方法已经在许多领域被证明是成功的,包括机器翻译[18,22]和语义解析[21]。我们的方法确实有几个不同之处,包括不太强调对检索到的条目进行简单的编辑,而是强调从检索到的几个内容片段中聚合内容,以及学习潜在检索,检索证据文档而不是相关的训练对。这就是说,RAG技术可能在这些环境中工作得很好,并且可能代表有希望的未来工作。

讨论 

在这项工作中,我们提出了可访问参数和非参数存储器的混合生成模型。我们展示了我们的RAG模型在开放领域QA上获得了最先进的结果。我们发现人们更喜欢RAG的生成而不是纯粹参数化的BART,发现RAG更真实和具体。我们对学习检索组件进行了彻底的调查,验证了它的有效性,并说明了如何通过热交换检索索引来更新模型,而不需要任何再训练。在未来的工作中,研究这两个部分是否可以从零开始进行联合预训练,无论是使用类似于BART的去噪目标还是其他目标,都可能会取得丰硕成果。我们的工作为参数和非参数记忆如何相互作用以及如何最有效地结合它们开辟了新的研究方向,显示了应用于各种NLP任务的希望。

广泛的影响

与以前的工作相比,这项工作提供了几个积极的社会效益:事实上,它更牢固地建立在真实的事实知识基础上(在这个例子中是维基百科),这使得它对更真实的几代人的“幻觉”更少,并且提供了更多的控制和可解释性。RAG可以在各种各样的场景中使用,对社会有直接的好处,例如,通过赋予它一个医学索引,并向它询问有关该主题的开放领域问题,或者通过帮助人们更有效地工作。

这些优势也带来了潜在的缺点:维基百科,或任何潜在的外部知识来源,可能永远不会完全真实,完全没有偏见。由于RAG可以作为一种语言模型,因此与GPT-2[50]类似的担忧在这里是有效的,尽管争议程度较轻,包括它可能被用来在新闻或社交媒体上产生滥用、伪造或误导性的内容;冒充:冒充他人;或者自动生产垃圾邮件/网络钓鱼内容[54]。在未来几十年,先进的语言模型也可能导致各种工作的自动化[16]。为了减轻这些风险,可以使用人工智能系统来对抗误导性内容和自动垃圾邮件/网络钓鱼。

### Retrieval-Augmented Generation (RAG) in NLP #### Definition of RAG Retrieval-Augmented Generation combines the strengths of retrieval-based models with generative models to improve conversational systems' performance. Traditional retrieval methods excel at finding relevant information but lack flexibility when generating responses that require synthesis or creativity. Generative models can produce novel text but may suffer from hallucinations—generating content not grounded in factual knowledge. By integrating both approaches, RAG leverages external databases or corpora as a source of evidence during generation, ensuring outputs are more accurate and contextually appropriate while maintaining natural language fluency[^1]. #### Implementation Details The architecture typically consists of two main components: - **Retriever**: Responsible for fetching documents most pertinent to user queries using techniques like dense passage retrieval. ```python class Retriever: def __init__(self): pass def retrieve(self, query): # Implement document search logic here pass ``` - **Generator**: Utilizes retrieved contexts alongside input prompts to craft coherent replies via transformer architectures such as BART or T5. ```python from transformers import AutoModelForSeq2SeqLM, AutoTokenizer class Generator: def __init__(self): self.tokenizer = AutoTokenizer.from_pretrained("facebook/bart-large") self.model = AutoModelForSeq2SeqLM.from_pretrained("facebook/bart-large") def generate(self, prompt, context): inputs = self.tokenizer(prompt + " " + context, return_tensors="pt", max_length=512, truncation=True) output_ids = self.model.generate(inputs["input_ids"]) response = self.tokenizer.decode(output_ids[0], skip_special_tokens=True) return response ``` To enhance traditional RAG further, Graph RAG introduces graph structures into the mix, allowing better representation of relationships between entities within stored knowledge bases compared to vector representations alone[^3]. This approach facilitates richer contextual understanding across diverse domains including healthcare, finance, etc., where interconnected data points play crucial roles. #### Use Cases One prominent application area lies in customer service automation through virtual assistants capable of providing precise answers based on vast amounts of structured/unstructured textual resources without losing personal touch[^4]. Another potential field is legal research assistance; lawyers could benefit greatly by having access to case law summaries generated dynamically according to specific needs rather than manually sifting through countless precedents. --related questions-- 1. How does Cross-Attention mechanism contribute to improving RAG's effectiveness? 2. What challenges might one encounter when implementing custom retrievers tailored towards specialized industries? 3. Can you provide examples illustrating how Graph RAG outperforms conventional RAG implementations regarding entity relationship handling? 4. In what ways has pre-training large-scale language models impacted advancements made within this domain over recent years?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值