RAG: Retrieval-Augmented Generation for Knowledge-Intensive NLP

RAG模型的概述:RAG模型是一种结合了预训练的seq2seq模型和基于Wikipedia的密集向量索引的生成模型,可以用于各种知识密集的NLP任务。RAG模型通过将检索到的文档作为隐变量,进行概率建模和边缘化,实现了检索和生成的端到端联合学习。
RAG模型的两种形式:RAG-Sequence和RAG-Token。前者假设生成整个序列时使用相同的文档,后者假设生成每个单词时可以使用不同的文档(举个例子,如果我们要生成“我想吃一碗牛肉面”,对于RAG-Sequence,我们会使用相同的文档来生成整个句子;对于RAG-Token,我们会使用不同的文档来生成“我”、“想”、“吃”、“一碗”和“牛肉面”这五个单词。)。两种形式都使用最大内积搜索(MIPS)来检索文档,并使用近似方法来计算边缘化概率(边缘化概率是指在概率论中,对一个变量的可能值求和,以确定另一个变量的边缘贡献)。
RAG模型的组成部分:检索器和生成器。检索器是基于DPR [26]的双编码器架构,使用BERT [8]作为查询编码器和文档编码器。生成器是基于BART [32]的预训练seq2seq模型,可以根据输入、前缀和检索到的文档生成输出。
RAG模型的训练和解码方法:训练时,使用负对数似然作为损失函数,只更新查询编码器和生成器的参数,保持文档编码器和索引不变。解码时,对于RAG-Token,使用标准的束搜索;对于RAG-Sequence,使用一种基于每个文档进行束搜索并汇总候选集的方法。
RAG模型的评估方法:使用四个开放域问答数据集(Natural Questions, TriviaQA, WebQuestions和CuratedTrec)和两个生成式任务(MS-MARCO和Jeopardy)来评估RAG模型的性能。使用精确匹配(EM)和F1分数作为问答任务的指标,使用BLEU和ROUGE作为生成式任务的指标。
RAG模型的实验结果:RAG模型在所有任务上都显著优于BART基线,证明了检索增强生成的有效性。RAG-Token在问答任务上表现更好,RAG-Sequence在生成式任务上表现更好。RAG模型也优于其他基于检索的方法,如REALM [20]和Fusion-in-Decoder [14]。
RAG模型的分析和讨论:通过对比不同的检索方法、不同的文档数量、不同的解码策略等,分析了RAG模型的各个组成部分对性能的影响。通过可视化检索到的文档和生成的输出,展示了RAG模型如何利用外部知识来提高生成质量。通过人工评估,比较了RAG模型和BART模型在事实性、流畅性、多样性等方面的差异。
RAG模型的内部知识可以轻松地随时更改或补充,从而控制RAG知识的取舍,而无需浪费时间或算力重新训练整个模型。这是因为RAG使用了两种知识来源:以参数形式存储于seq2seq模型的知识(参数记忆)和用检索系统召回的语料库中的知识(非参数记忆)。这两种知识来源相互补充,使用非参数记忆让RAG擅长知识密集型任务的自然语言生成。
(1) NeurIPS 2020|RAG:为知识密集型任务而生 - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/264485658.
(2) 检索增强生成 (RAG) | Prompt Engineering Guide. https://www.promptingguide.ai/zh/techniques/rag.
(3) Retrieval-Augmented Generation for Open-Domain QA - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/339942960.