Facebook开源人工智能模型RAG:可检索文档以回答问题

教会计算机理解人类如何写作、说话,即所谓的自然语言处理(Natural Language Processing,NLP),这是人工智能研究领域最古老的挑战之一。然而,过去两年,方法出现了明显的变化。过去,研究主要集中在为特定任务开发特定框架,而今天强大的通用语言模型已经可以针对各种各样的不同任务进行微调。虽然前景看好,但这方面的努力都已经将这些通用模型应用于人类无需额外补充背景知识就能产生解决方案的任务(如情感分析)。

构建一个研究和情境化的模型更具挑战性,但它对未来的进步至关重要。最近,我们在这个领域取得了实质性的进展,我们的RAG(RetrievalAugmentedGeneration,检索增强生成)架构是一个端到端的可差异化模型,它结合了信息检索组件(Facebook AI的基于稠密段落检索系统(dense-passage retrieval system)和seq2seq生成器(Facebook的BART模型(Bidirectional and Auto-Regressive Transformers,双向和自回归Transformer))。与最大的预训练seq2seq语言模型相比,RAG可以在知识密集型下游任务上进行微调,达到最优结果。而且与这些预训练模型不同,RAG的内部知识可以轻松地随时更改或补充,从而使研究人员和工程师控制RAG所知道的内容,而不会浪费时间或算力来重新训练整个模型。

Building a research and situational model is more challenging, but it is crucial for future progress. Recently, we have made substantial progress in this field. Our Rag (retrieval enhanced generation) architecture is an end-to-end differentiable model, It combines information retrieval components (Facebook AI's dense passage retrieval system) and seq2seq generator (Facebook's binary and auto regressive transformers). Compared with the largest pre training seq2seq language model, rag can fine tune on knowledge intensive downstream tasks to achieve the optimal results. Moreover, unlike these pre training models, rag's internal knowledge can be easily changed or supplemented at any time, so that researchers and engineers can control what rag knows without wasting time or effort to retrain the whole model.

结合开卷和闭卷的优势

RAG的外观和行为类似于标准的seq2seg模型,这意味着它接受一个序列并输出相应的序列。然而,还有一个中间步骤,区分和改进RAG和普通的seq2seq方法。RAG不是直接向生成器传输输输入,而是使用输入来检索一组相关文档。在我们的例子中,它是从维基百科检索的。

例如,给出提示“地球上第一个哺乳动物是什么时候出现的?”,RAG可能会提供“哺乳动物”、“地球历史”和“哺乳动物进化”的文档。然后,将这些支持文档与原始输入作为上下文连接起来,并提供给生成实际输出的seq2seq模型。因此,RAG有两个知识来源:seq2seq模型在其参数中存储的知识(参数记忆)和存储在RAG段落检索语料库中的知识(非参数记忆)。

这两个来源相辅相成。我们发现,RAG使用其非参数记忆来“提示”seq2seq模型产生正确的响应,本质上结合了“闭卷”或纯参数方法的灵活性与“开卷”或基于检索的方法性能。RAG使用一种后期融合的形式集成所有检索到的文档知识,这意味着它对文档-问题进行单独的答案预测,然后聚合最终的预测分数。最关键的是,使用后期融合允许我们将输出中的错误信号反向传播到检索机制,这可以实质性地显著提高端到端系统的性能。

将基于检索的组件与生成组件相结合,即使在纯粹的提取任务(如开放域NaturalQuestions任务)中也具有优势。当RAG可以访问包含正确答案线索的文档,但答案从未逐字说明时,性能也会提高,并且RAG甚至可以在某些情况下生成正确答案,而正确答案在任何文档都检索不到。我们用RAG在NaturalQuestions、CuratedTrec和WebQuestions上获得了非常好的结果,证明了最先进的机器阅读性能可以用生成式阅读器而不是提取式阅读器来实现。

RAG确实擅长生成知识密集的自然语言。我们通过生成Jeopardy!问题进行了探索。RAG生成的Jeopardy!问题比类似最先进的seq2seq模型更具体、更多样、更符合事实。我们认为这是因为RAG有能力使用从多个来源获得的不同信息来合成响应。

RAG的真正优势在于其灵活性。要改变预训练的语言模型所知道的内容,需要用新的文档对整个模型进行再训练。通过RAG,我们可以通过交换知识检索所用的文档来控制它所知道的内容。我们将维基百科的原始数据集换成一个旧的数据集,然后问一些问题,比如,“谁是冰岛的总理?”,对这种行为进行测试。结果表明,尽管参数知识保持静态,但RAG还是利用交换语料库中的知识来调整其答案。在事实(或我们对事实的理解)随时间演变的情况下,这种自适应方法是非常有价值的。

消除研究中的训练开销

如果人工智能助手要在日常生活中扮演更有用的角色,它们不仅需要能够访问大量的信息,更重要的是,能够访问正确的信息。考虑到世界的发展速度,事实证明,这对于预训练的模型具有挑战性,即使是很小的变化,也需要不断的计算密集型再训练。RAG允许自然语言处理模型绕过再训练步骤,访问并提取最新的信息,然后使用最先进的seq2seq生成器输出结果。这种融合应该会使未来的自然语言处理模型更具适应性,而且我们确实已经从Facebook的人工智能相关研究项目Fusion-in-Decoder中看到了成果。

我们认为RAG具有广阔的潜力,这就是我们今天发布它作为Hugging Face Transformer库的一个组件的原因。Hugging Face的Transformer已经成为开源自然语言处理中事实上的标准,这要归功于它较低的进入门槛和对最新模型的覆盖,并且它与新的Datasets库集成,以提供RAG所依赖的索引知识源。现在,随着RAG的加入,我们相信社区将能够基于检索的生成应用于我们已经探索过的知识密集型任务和一些我们甚至还没有想到的任务。

d8f9d72a6059252d5bf103741edf6e3c5ab5b9a3.jpeg

810a19d8bc3eb1351d8565388a5ac5d4fc1f44ba (1).jpeg

RAG解放了研究人员和工程师,使他们能够快速开发和部署解决方案,以完成自己的知识密集型任务,而这些任务只需五行代码即可完成。我们可以预见未来对知识密集型任务的研究潜力,这些任务就像今天的情绪分析这样的轻量级知识任务一样简单易懂。

Rag frees researchers and engineers to quickly develop and deploy solutions to accomplish their knowledge intensive tasks, which can be accomplished in five lines of code. We can foresee the future research potential of knowledge intensive tasks, which are as easy to understand as today's lightweight knowledge tasks such as emotion analysis.