像 GPT-4 这样的大语言模型 (LLM) 非常强大。它们能够编写代码、创作诗歌、总结文章,并以惊人的流畅度解释复杂的主题。这种能力源于 参数化记忆——它们在训练过程中吸收的海量知识,存储在数十亿个神经参数当中。

但这种参数化记忆也存在一些众所周知的限制:

  • 静态知识: 一旦模型训练完成,其世界知识就被冻结了。一个 2022 年的 LLM 无法告诉你谁赢得了 2023 年的世界职业棒球大赛。
  • 幻觉: 它可能会生成自信却错误的陈述——听起来合理但实际上是捏造的事实。
  • 不透明性: 很难了解模型是如何或为何得出某个答案的,也无法在不重新训练的情况下纠正单个错误事实。

那么,如果我们能给 LLM 一张“小抄”呢?让它们参加一场开卷考试——在生成答案时查阅可信、最新的资料。

于是,Facebook AI Research (现为 Meta AI) 在 2020 年发表了一篇开创性的论文: “为知识密集型 NLP 任务进行检索增强生成”

这项工作提出了 RAG (Retrieval-Augmented Generation,检索增强生成) 框架,这是一种混合方法,将大型语言模型的生成能力与外部知识源 (例如维基百科) 的事实精确性相融合。

在本文中,我们将深入探讨 RAG 如何融合 参数化非参数化 记忆,研究其背后的工程逻辑,并展示为什么这种方法至今仍是事实型语言建模的基石。


理解参数化记忆与非参数化记忆

在探索 RAG 的架构之前,了解它结合的两类“记忆”会更有帮助:

  1. 参数化记忆 – 在预训练后固化在模型参数中的知识。
  • 示例: BART、T5、GPT 类模型。
  • 优点: 快速流畅,模型能够在不同主题间很好泛化。
  • 缺点: 难以更新、不透明,且容易出现幻觉。
  1. 非参数化记忆 – 模型可以查询的动态外部文本数据库,如维基百科。
  • 优点: 易于更新 (替换数据文件即可) 、透明 (我们可以看到所用的段落) ,且基于事实。
  • 缺点: 速度较慢,因为检索需要在庞大的语料库中搜索。

以往的混合系统通常专注于狭窄的抽取式任务——例如选择包含答案的确切句子。而 RAG 则提出了革命性的方案: 一种通用架构 , 其中检索增强的是文本生成本身,而不只是信息抽取。


RAG 的工作原理: 双模块架构

RAG 由两个关键组件构成: 一个 检索器 (Retriever) 和一个 生成器 (Generator)

RAG 架构概览。查询通过检索器从索引中找到相关文档;这些文档连同查询一起流入生成器,产生最终输出。

图 1: RAG 将预训练的检索器 (查询编码器 + 文档索引) 与预训练的 seq2seq 生成器相结合。模型从维基百科中检索 Top-K 个文档,并在生成最终输出时对它们进行边缘化处理。

系统运行过程如下:

  1. 检索器处理输入查询 (例如: “谁写了《神曲》?”) ,并在一个密集的维基百科段落索引中搜索。
  2. 它检索出 排名前 K 的最相关文本块。
  3. 生成器随后将查询与检索到的文本结合,生成最终输出 (例如: “《神曲》是由但丁·阿利吉耶里创作的。”) 。

这两个部分共同构成一个端到端可微的系统,检索与生成可联合训练。


检索器: 定位相关知识

检索器负责找到可能包含有用信息的文本片段。作者使用了 密集段落检索器 (Dense Passage Retriever, DPR) , 这是一个采用双 BERT 架构的 双编码器 (bi-encoder) :

  1. 查询编码器 – 将输入问题 \(x\) 转换为一个密集的嵌入向量。
  2. 文档编码器 – 将每个 100 词的维基百科片段编码为另一个向量。

查询与文档的相关性通过它们嵌入向量的内积来衡量:

DPR 检索器公式: 给定查询 x,文档 z 的概率与它们嵌入向量内积的指数成正比。

DPR 评分公式。检索器找到查询与文档嵌入内积最高的 Top-K 文档。

这种 *最大内积搜索 (Maximum Inner Product Search, MIPS) * 使用 FAISS 高效执行,从而在 2100 万个索引文档中实现近实时检索。


生成器: 将检索到的知识转化为流畅文本

当检索器找到相关段落后,生成器会把它们转化为格式良好的答案。RAG 使用 BART-large , 这是一种以强大生成性能闻名的序列到序列 Transformer。

输入的组合方式很简单: 将问题 \(x\) 与检索段落 \(z\) 拼接,输入到 BART 中。生成器逐步生成词元 (token) ,其生成过程同时依赖原始输入与检索到的证据。


潜变量技巧: 端到端联合训练

一个问题出现了——模型如何确定 Top-K 文档中哪一个是“最佳”的? RAG 的设计巧妙地解决了这一问题: 它将检索到的文档视作潜变量

在训练过程中:

  1. 模型为每个检索到的文档 \(z_1, z_2, \dots, z_k\) 生成输出;
  2. 计算每篇文档导致正确目标 \(y\) 的可能性;
  3. 对这些可能性进行边缘化——即加权组合它们的概率。

这种 无监督 方法使检索器与生成器能够共同学习: 检索器发现有用的来源,生成器学习如何利用它们。


RAG 的两种形式: Sequence vs. Token

RAG 提出了两种不同的概率公式,它们在对检索文档进行边缘化的粒度上有所差异。

1. RAG-Sequence

该模型假设单个文档为整个生成序列提供全部必要上下文。

RAG-Sequence 模型公式: 给定 x,y 的概率是 top-k 文档上 p(y|x,z) 的总和。

RAG-Sequence 模型: 使用同一检索段落生成完整输出序列。

这种方法适用于只有一个相关来源的问题,但可能会遗漏分散在多个文本中的信息。


2. RAG-Token

在这种模型中,每个输出词元都可以依赖不同的文档。它在生成的每一步都对排名前 K 的文档进行边缘化,从而能融合多个来源的信息。

RAG-Token 模型公式: 给定 x,y 的概率是各词元概率的乘积,每个词元都在 top-k 文档上进行边缘化。

RAG-Token 模型: 允许逐词元检索,使生成过程能整合多源信息。

这种形式在需要整合不同文献细节的复杂任务中表现出色,例如长篇问答或事实丰富的摘要生成。


对 RAG 的测试

作者在包含 2100 万篇文档的维基百科索引上,对 RAG 在各种知识密集型任务 (从开放域问答到事实核查) 进行了评估。

开放域问答

经典的问答任务要求模型从开放文本中生成简短的事实性答案。 RAG 与如下系统进行了对比:

  • 闭卷模型 (例如 T5) ,仅依赖参数化记忆。
  • 开卷抽取式系统 (例如 DPR) ,直接定位答案片段。

RAG 与先前系统在四个开放域问答数据集上的性能对比。

RAG 在 Natural Questions (NQ)、WebQuestions (WQ) 和 CuratedTrec (CT) 上取得了当前最佳结果,超越了仅使用参数化记忆的模型与抽取式系统。

结果: RAG-Sequence 的准确率超过了拥有 110 亿参数的 T5,尽管其可训练参数少于 7 亿。它通过 生成 而非 抽取 答案,使模型更具灵活性。 在 NQ 数据集中,即使答案未在任何检索到的文档中逐字出现,RAG 仍能正确回答 11.8% 的问题。


摘要式问答与 Jeopardy 问题生成

RAG 在创意生成任务中也表现突出。

在 Jeopardy 问题生成、MSMARCO 和 FEVER 等生成与分类任务上的性能对比。

在 MSMARCO 和 Jeopardy 问题生成等任务中,RAG 的表现显著优于强大的 BART 基线。

例如,在 MSMARCO (答案是完整句子) 及自定义的 Jeopardy 问题生成 数据集中,两种 RAG 变体生成的文本均比仅使用 BART 的系统 更具事实性与特异性

生成示例展示了 RAG 的事实正确性与 BART 的幻觉对比。

表 3: RAG 输出内容有事实依据且连贯,而 BART 经常出现重复或虚构。

人工评估结果进一步证实了这一点: 评估者更倾向于认为 RAG 的输出更真实且更具体。

人工评估结果表明 RAG 在事实性与特异性方面的优越性。

在 450 多次人工对比中,RAG 生成的问题被评为更加事实准确与具体。


看见 RAG 的思考过程: 海明威示例

一个极具代表性的可视化例子来自为 “海明威” 生成 Jeopardy 问题时的分析。

热图展示了 RAG-Token 逐词元的文档注意力。文档 1 支持《永别了,武器》,文档 2 支持《太阳照常升起》。

图 2: 输入“海明威”的文档后验分布可视化。每个生成的词元都从不同检索文档获取信息。

注意 RAG-Token 在生成 “《太阳照常升起》” 时参考一个文档,而在生成 “《永别了,武器》” 时参考另一个文档。 这种行为展示了它能够流畅地整合多个事实来源——将检索得到的证据与模型的语言知识完美结合。


事实核查

FEVER 数据集中,任务是根据维基百科判断给定声明是否支持反驳信息不足。 RAG 直接将这些标签映射为单个输出词元,并在无监督条件下自行检索证据,却仍能达到与更复杂、手工设计管道相当的准确率。


实时更新知识

RAG 最令人兴奋的特性之一是 索引热插拔——可以在不重新训练的情况下更新世界知识。

作者构建了两个索引: 一个基于 2016 年 , 另一个基于 2018 年 , 然后提问有关领导人职位变动的问题。

结果显示:

  • 使用 2016 年索引回答 2016 年领导人问题: 70% 准确率
  • 使用 2018 年索引回答 2018 年领导人问题: 68% 准确率
  • 当索引与年份不匹配时,准确率锐减 (约 4%)

这种简单的“更换索引”机制展现了 RAG 在快速变化的信息领域保持最新性的能力——这是传统 LLM 所无法实现的。

图表显示测试时检索文档数量增加带来的性能变化趋势。

图 3: 性能随检索文档数量增加而提升。RAG-Sequence 受益于更大的 K 值,而 RAG-Token 在约 10 时达到峰值。


RAG 的重要性

RAG 框架提出了理解语言模型知识的新方式:

  • 事实性基础: 生成的答案依赖或引用真实文本。
  • 可解释性: 检索到的段落可以作为输出的溯源依据。
  • 可更新记忆: 只需更换索引即可刷新模型的世界知识。
  • 高效性: 小型参数化模型也能达到或超越庞大静态系统的表现。

这种将神经生成与动态检索相结合的理念,影响了整个行业。现代“检索增强型 LLM”,如带浏览功能的 ChatGPT、Bing Copilot,以及众多专业问答模型,都是建立在 RAG 的洞察之上。


结论

检索增强生成 (RAG) 框架标志着 NLP 研究的重大转折点。 通过结合大规模语言生成与实时检索:

  • 它在开放域问答与生成任务上实现了最先进的准确率 ;
  • 它通过引用可验证的来源减少了幻觉;
  • 允许持续更新 , 只需刷新文档索引即可实现。

RAG 将语言模型从“记忆机”转变为推理系统——这些模型不仅能够知道,还能够查找解释它们所知道的内容。

这种“开卷考试”式的理念,已成为现代能够引用来源、保持事实一致的 AI 助手的基础。 下次当你的聊天机器人说: “根据维基百科……”时——你看到的正是 RAG 的传承: 一个不仅会生成,更懂得如何备考的模型。