Patrick LewisEthan PerezAleksandra PiktusFabio PetroniVladimir KarpukhinNaman GoyalHeinrich KüttlerMike LewisWen-tau YihTim RocktäschelSebastian RiedelDouwe Kiela

摘要
大规模预训练语言模型已被证明能够将事实性知识存储在其参数中,并在微调至下游自然语言处理任务时取得当前最优性能。然而,这些模型在访问和精确操控知识方面的能力仍然有限,因此在知识密集型任务上,其表现仍落后于专门设计的任务架构。此外,为其决策提供可追溯性(provenance)以及更新其世界知识,仍是开放的研究难题。通过引入可微分访问机制来连接显式非参数化记忆,预训练模型有望克服上述问题,但迄今为止,这类方法仅在抽取式下游任务中得到探索。本文提出一种通用的微调策略,用于检索增强生成(Retrieval-Augmented Generation, RAG)模型——这类模型结合了预训练的参数化记忆与非参数化记忆,以实现语言生成。我们构建的RAG模型中,参数化记忆采用预训练的序列到序列(seq2seq)模型,而非参数化记忆则是一个基于维基百科的密集向量索引,由一个预训练的神经检索器进行访问。我们比较了两种RAG架构:一种在生成整个序列时依赖相同的检索片段,另一种则允许每个生成词元(token)使用不同的检索片段。我们在多种知识密集型自然语言处理任务上对模型进行微调与评估,在三个开放域问答(open-domain QA)任务上取得了当前最优性能,显著优于仅依赖参数化seq2seq模型以及任务特定的“检索-抽取”架构。在语言生成任务中,我们发现RAG模型生成的语言比当前最先进的纯参数化seq2seq基线模型更具针对性、多样性与事实准确性。
代码仓库
Zefty/rag-end2end-retriever
pytorch
GitHub 中提及
robotics-4-all/ISSEL-Announcements
GitHub 中提及
thu-keg/korc
pytorch
GitHub 中提及
lyqcom/mindspore_nlp_tutorial
mindspore
huggingface/transformers
pytorch
GitHub 中提及
deepset-ai/haystack
pytorch
docarray/docarray
jax
GitHub 中提及
amaiya/onprem
pytorch
GitHub 中提及
assafelovic/gpt-researcher
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| fact-verification-on-fever | RAG | Accuracy: 72.5 |
| question-answering-on-natural-questions | RAG | EM: 44.5 |
| question-answering-on-triviaqa | RAG | EM: 56.1 |
| question-answering-on-webquestions | RAG | EM: 45.2 |