来源:Advances in Neural Information Processing Systems 33 (NeurIPS 2020)
链接:http://arxiv.org/abs/2005.11401
题目翻译:用于知识密集型 NLP 任务的检索增强生成
阅读原因
RAG领域系列必读文章,读了这篇才知道RAG是干什么的,才有后续的研究。
内容
1.简介
这篇论文介绍了RAG的核心概念,提出了一种结合检索与生成的框架,用于知识密集型任务。该方法首先从外部知识库中检索相关文档,然后利用这些文档指导生成模型生成答案。论文还评估了RAG在开放域问答(Open-Domain QA)任务中的性能。
2.研究背景
传统的生成式模型在知识密集型任务中首先于模型参数中编码的静态知识,在需要复杂知识或者需要及时更新的场景中效果比较差,经常会出现“幻觉问题”(也就是受限于训练的数据集,无法生成数据集之外的知识,所谓的幻觉就是胡言乱语,这点在早期使用GPT3的时候深有体会)。为了解决该问题,文章提出了检索增强生成RAG模型,这个模型把外部的知识库和生成式模型相结合,使得生成式模型可以动态地从外部资源中获取最新的信息,以生成准确的答案,避免幻觉的产生。
RAG 被设计用于知识密集型任务,特别是开放域问答(Open-Domain QA)等需要丰富知识和灵活生成的任务。
3.思想概述
核心思想介绍:对于输入序列x,使用x来检索文档z中的知识,并使用检索出来的结果作为生成目标y的额外参考。
4.模型架构介绍
RAG的核心是由检索器(Retriever)和生成器(Generator)组成。前者用于从知识库中检索和查询相关的文档信息;后者则基于前者检索到的信息来生成对应的答案。
4.1检索器工作原理:
(i) a retriever pη(z|x) with parameters η that returns (top-K truncated) distributions over text passages given a query x
对于给定的输出查询,返回前k个概率最高的结果
检索器使用DPR(Dense Passage Retriever)方法,这种方法将文档和查询嵌入到相同的向量空间中,并通过计算向量的相似度来确定最相关的文档。DPR 的核心优势在于它能够通过双塔(dual-tower)架构高效地处理大规模文档库的检索任务。
DPR论文阅读:[论文精读]Dense Passage Retrieval for Open-Domain Question Answering-CSDN博客
4.2两种检索框架变体
1.RAG-Sequence:生成器以序列化方式使用每个检索到的文档来生成答案,最后基于所有文档的生成结果进行聚合。
2.RAG-Token:生成器逐个 token 生成答案,在每个 token 的生成过程中都可以动态地利用不同的检索到的文档。
二者的区别:现以有根据输入x得到的检索出的文档集合z,假设总共有k个文档。前者生成k个答案,每个答案依据对应的文档信息得到(一对一),最后将所有的答案进行聚合处理;后者则是在每个token生成过程中都可以动态参考所有检索出来的文档语料(多对一)。
4.3生成器工作原理:
and (ii) a generator pθ(yi|x, z, y1:i−1) parametrized by θ that generates a current token based on a context of the previous i − 1 tokens y1:i−1, the original input x and a retrieved passage z.
基于初始输入和检索结果生成文本。
文章采用 BART(Bidirectional and Auto-Regressive Transformer)作为生成模型,它是一种强大的Seq2seq生成模型,能够处理语言建模和生成任务。检索到的多个文档被拼接成输入,以生成自然语言答案。
4.4解码
5.训练
RAG的训练是端到端模式的,两个训练步骤:
- 检索模块训练:通过 DPR 预训练检索模型,使其能够从大规模文档库中找到与输入查询相关的文档。
- 生成模块训练:使用生成式模型(BART)根据检索到的文档生成回答。生成器的输出与实际答案进行比较,并通过反向传播更新生成模型的参数。
在推理过程中,RAG 首先对用户查询进行检索,然后基于检索到的相关文档生成答案。
通过将生成任务与检索任务结合,RAG 模型能够动态地从外部知识库中获取信息,从而生成更加准确和信息丰富的回答。
6.实验结果
在以下几个方面上进行了测试评估:
- Open-domain Question Answering开放域问答ODQA:有监督训练,把QA视为输入输出对来训练RAG模型
- Abstractive Question Answering抽象化问答AQA:系统使用自己的语言生成答案,从一个或多个文档中总结或者提取信息,对信息进行总和与抽象,而不是简单地提取信息。
- Jeopardy Question Generation危险边缘问题生成:逆向方式,先给出答案再让模型以问题的形式作答。
- Fact Verification事实验证:对指定预料进行正误判断,错误的信息进行纠正
实验结果表明,RAG 相比于只使用生成式模型或只使用检索模型的基线方法有显著的性能提升。特别是在开放域问答任务中,RAG 能够通过检索到的外部文档生成更准确的回答。
总结
1.优点
- 知识覆盖广泛:通过检索外部知识库,RAG 能够获取大量的信息来弥补生成模型知识的不足。
- 生成结果更加自然:相比纯检索模型,RAG 可以生成更加自然的语言回答,而不是简单地从检索结果中提取答案。
- 知识库动态更新:外部知识库可以随时更新,确保 RAG 能够适应新信息。
2.局限性
- 计算成本高:RAG 在推理过程中需要同时执行检索和生成任务,计算资源需求较高,尤其是在大规模知识库下的检索步骤。
- 信息聚合难:在 RAG-Sequence 变体中,不同文档可能提供互相冲突的信息,如何有效地聚合这些信息是一个挑战。
3.sum up
RAG 的提出为处理知识密集型 NLP 任务提供了一种有效的解决方案,结合了生成式模型和检索模型的优势。通过动态地从外部文档库中检索信息,RAG 能够生成更准确、连贯且知识丰富的回答。
对 NLP 领域具有重要的影响。