TellWorldAI 世界档案
问档案English

首页›论文

论文arXiv

《面向知识密集型 NLP 任务的检索增强生成》(RAG)

2020 年的一篇论文,把预训练的序列到序列模型与一个由神经检索器查询的维基百科稠密向量索引结合起来,在三个开放域问答任务上取得当时最好成绩。

arXiv 编号 2005.11401 时代 大模型

要解决的问题

大型预训练语言模型把学到的东西存在参数里,知识也只有这一个存放处。论文《面向知识密集型 NLP 任务的检索增强生成》(Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,简称 RAG)由 Patrick Lewis、Ethan Perez、Aleksandra Piktus 等 12 位作者于 2020 年 5 月 22 日提交到 arXiv,出发点正是这种「参数记忆」的局限[1]。作者列出三条:模型对自身内部知识的访问和精确操作能力有限;在知识密集型任务上——也就是答得好不好取决于能否准确想起具体事实的任务——这类模型的表现不如为任务专门设计的架构;此外还有两个悬而未决的问题,一是给出的知识出自何处,二是训练之后如何更新模型对世界的认识[1]。

两种记忆

论文的办法是把参数记忆和非参数记忆配在一起。参数那一半是一个序列到序列(seq2seq)模型,编码器读入问题、解码器写出答案,权重里装着预训练留下的东西;非参数那一半放在权重之外,是维基百科的稠密向量索引,由一个预训练的神经检索器去查[1]。

稠密检索器按向量而不是按关键词工作:问题先被映射成一个向量,索引返回向量距离最近的那些段落,这些段落连同问题一起交给生成器,生成器在两者条件下写出答案。因为索引与权重分开存放,模型能触及的知识不是训练时就钉死的,而是存在于一份可以单独维护的物件里。

具体到这篇论文,检索器是稠密段落检索器(Dense Passage Retriever),生成器是 BART,两者端到端地合成一个概率模型[1]。被检索到的文档被当作隐变量处理:模型不预先认定某一篇文档,而是对所有可能性求和,并用只保留前 K 个候选的方式来近似[1]。

检索一次还是多次

检索可以在生成答案之前做一次,也可以在写答案的过程中反复做。作者比较了两种形式:一种在整个生成序列上使用同一批检索到的段落,另一种允许每个词元(token)使用不同的段落[1]。前者让整段答案共享一套固定的证据,后者让证据逐词变化,因此一句话里可以同时用上几篇不同的段落。

结果

论文报告在三个开放域问答任务上取得当时的最好成绩。在生成任务上,它写出的语言比一个只依赖参数记忆、同样处于当时最好水平的序列到序列基线更具体、更多样,也更符合事实[1]。

为什么重要

这套设计有两点值得注意。第一,把一部分知识从权重里挪到索引里,改变了系统「知道」这件事的含义:模型能说出什么事实,不只取决于预训练时压进参数里的内容,也取决于检索器能找回来、送进去的内容。第二,检索发生在生成答案的过程之中,输出因此可以追溯到真正被取回的那些段落,而知识出处恰恰是论文针对纯参数模型提出的问题[1]。两种形式的对比还说明这不是一个无关紧要的细节:一条证据在生成过程中能起作用多久,本身就可以由模型的结构来决定。

注释与来源

  1. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (RAG)https://arxiv.org/abs/2005.11401

引用本页: 《面向知识密集型 NLP 任务的检索增强生成》(RAG). TellWorld, https://www.tellworld.net/zh/papers/rag-2020. 更新于 2026-11-08