游乐游手机版
首页/AI热点日报/热点详情

检索增强语言模型方法深度解析

类型:热点整理2026-07-19
检索增强语言模型通过挂载外部知识库,解决了大规模语言模型在长尾知识、知识更新、可解释性、隐私保护和成本方面的局限。其架构涉及检索内容、利用方式和检索时机,训练方式包括独立、顺序和联合更新索引等,并适用于知识密集型、生成和分类等多种任务,可扩展至多语言和多模态场景。

检索增强语言模型(Retrieval-based LMs)入门教程

本教程基于ACL‘23会议上陈丹琦团队带来的Tutorial内容整理而成,旨在从问题设置、架构、应用、挑战等角度全面了解检索增强的语言模型。无论你是初学者还是希望系统梳理该领域的研究者,本教程都将帮助你快速入门并掌握核心概念。

1 简介:Retrieval-based LMs = 检索 + 语言模型

首先,我们需要理解常规语言模型(自回归LM)的工作方式:它通过计算并采样来预测下一个token,从而生成完整句子。掩码语言模型或编码器-解码器模型的概率计算方式不同,但核心思想一致。

检索增强的语言模型则进一步挂载了一个外部知识库。在生成过程中,模型不仅依靠自身参数,还会从知识库中检索相关文档,辅助生成。下图展示了这一概念:

那么,既然现有的大规模语言模型(LLMs)已经很强大了,为什么还需要检索增强?它解决了哪些关键问题?

1.1 LLMs无法记忆全部长尾知识

所谓长尾知识,即不热门、不常用的知识(例如“河北省2020年总人口数”)。研究表明,仅通过扩大模型规模(scaling law),对长尾知识的性能提升非常有限。检索外部知识库可以有效“回忆”这类信息。下图显示,面对冷门问题(蓝色线),性能并不会随规模提升而改善。

1.2 参数记忆的知识容易过时且难以更新

互联网信息飞速更新,而LLMs训练一次后知识就固定了。虽然“知识编辑”方法有所缓解,但可扩展性差。而检索增强模型只需更新外部知识库即可,成本极低,且可以轻松扩展规模。示意图如下:

1.3 LLMs输出难以解释和验证

我们通常无法知道模型“为什么”给出某个答案(黑箱)。检索增强模型通过返回检索到的文档来源,让我们可以追溯信息依据,从而验证其正确性。例如,NewBing会列出文档来源:

1.4 LLMs容易泄露隐私训练数据

如果隐私数据(如用户地址、联系方式)被包含在预训练语料中,所有使用者都可能接触到。检索增强模型将隐私数据存储在外部知识库中,模型本身不直接保存,从而保护隐私并支持个性化服务。下图显示,部分隐私数据已混入预训练语料:

1.5 LLMs规模极大,训练和运行昂贵

部署大模型推理成本高昂。检索增强模型可以用较小的语言模型达到与大型模型媲美的性能(例如某工作以25倍参数缩减实现了与GPT-3匹配的性能)。这更经济,对学术界和小公司更友好。

检索增强语言模型已成为当前关键研究问题,值得深入探索。

小提示: 许多人误以为检索增强模型只适用于知识密集型任务,实际上它在生成、分类、多模态等场景也有广泛应用。

常见问题:

Q:检索增强模型是否只能用于开放域问答?
A:不。它可以用于多种任务,包括文本生成(如摘要、翻译)、分类(如情感分析)、多语言/多模态任务等。详见后续“应用”章节。

2 问题定义:一个在测试阶段使用外部知识存储的语言模型

该定义分为两部分:

  • 语言模型:包括Decoder-only、Encoder-only、Encoder-Decoder等架构。
  • 在测试阶段使用外部知识存储:推理时从外部库中检索信息。

不同解码方式/架构的语言模型示意图:

目前常用的训练范式是“预训练 + Prompting”,使模型适配多种下游任务,常见任务示例(不完整):

评估模型性能的两种常用指标:困惑度(Perplexity)下游任务准确度(Downstream Accuracy)。Perplexity计算方式为:,实际常用log-perplexity,即计算。

2.1 测试阶段使用外部知识存储的具体形式

下图展示了检索增强LMs的推理阶段:

  • Datastore:通常由原始文本语料组成(至少1-10B token,无标签、非结构化),也可能是向量存储形式。
  • Query:用于检索的查询,与输入x不一定相同。
  • Index:在知识库D中找到与q最相似的Top-k个元素子集。

相似度计算方式包括传统方法(如TF-IDF)和向量点乘等。检索方式有精确检索和近似检索,这是检索开销与精度的权衡。两种文本间相似度计算示例:

2.2 需要解答的三大核心问题

后续章节将围绕这三个问题展开:

  • (When)检索查询是怎样的?何时执行检索?
  • (What)检索何种形式的内容?
  • (How)如何利用检索得到的内容?

小提示: 注意Query和输入x可以不同,这在需要将输入转换为另一种形式进行检索时很有用(例如输入是中文,但知识库是英文)。

常见问题:

Q:为什么有时Query不等同于输入x?
A:例如,输入是一段长文本,但检索需要提取核心实体作为查询;或者输入是图像,检索时需用文本描述作为查询。这种设计可以提升检索精度。

3 架构:What & How & When

下图是对三个问题的回答总结:

对应的表格更清晰地对比了不同选择:

3.1 What to retrieve?(检索什么内容)

  • Chunks(文本块):直接检索大段文本,降低检索难度,空间友好。适合大多数场景。
  • Tokens(词元):检索更细粒度的token,能更好利用罕见模式(如“torch”表示深度学习包而非火把)和领域外知识,检索高效(kNN搜索很快),但存储开销大(Wikipedia chunks约13M vs tokens约4B),且缺少交叉注意力计算,可能损失部分性能。
  • Entity mention(实体提及):即“One vector per entity mention”,在实体为中心的任务中更有效,存储开销介于两者之间,但需要额外实体检测步骤。

3.2 How to use retrieval?(如何利用检索结果)

  • 在input layer加入:简单直观,但面对大量频繁检索时效率低。
  • 在intermediate layer加入:可利用更多模型块,支持更频繁检索,计算更高效,但需要额外训练,不能直接使用。
  • 在output layer应用:如kNN-LM,对语言模型预测token概率与检索token概率加权聚合,无需训练即可使用,但存储token上下文的空间开销大。

3.3 When to retrieve?(何时检索)

  • 通常固定频率检索。当前也有自适应检索频率的工作:当模型对答案置信度高时降低检索频率,反之增加。也可以在output layer将权重视为输入的函数动态调整。自适应能提高效率,但结果可能不是最优。

各工作所采取的不同架构总结图:

各工作所采取的不同架构总结表:

上表最后一行还提到一类特殊的检索增强模型:从自身生成的历史信息中“自检索”,而非外部知识库,用于处理超长文本或实现长期记忆。

小提示: “What”和“How”的选择往往相互影响。例如,若选择在output layer聚合,则检索内容通常用token更合适。

常见问题:

Q:自适应检索频率在实际中容易实现吗?
A:有一定难度,因为需要模型具备“不确定性估计”能力。目前相关研究仍在发展,但已有一些有效方法(例如基于注意力机制或输出概率的置信度判断)。

4 训练:(To train and how to train) or not to train

训练检索增强语言模型的关键挑战是:同时训练语言模型和更新索引计算开销巨大。目前被证实的有效训练方式有以下四类:

  • Independent training:语言模型和检索器独立训练。优点:可使用现成模型,无需额外训练,各部分独立改进。缺点:语言模型未学习如何利用检索,检索器也未针对LM任务优化。
  • Sequential training:先训练一个组件并固定,再训练另一个。优点:可借用现成组件,训练LM更有效利用检索结果,或训练检索器提供更好结果。缺点:总有一个组件是固定的。
  • Joint training w/ asynchronous index update:联合训练,但每隔T步才重新更新索引(允许索引“过时”)。优点:性能更好。难点:索引更新频率的选取(频率高开销大,频率低性能下降)。
  • Joint training w/ in-batch approximation:只在批内进行重新索引计算,近似整体索引效果,以节省计算开销。

四种方式优缺点总结表:

示意图如下:
Independent training:
Sequential training:
Joint training w/ asynchronous index update:
Joint training w/ in-batch approximation:(注:原图同前,但此处表示批内近似方式)

整体来看,训练方式的选择是计算开销与模型性能之间的权衡。后续研究也应围绕寻找最佳平衡点展开。

小提示: 如果你的资源有限,可以优先尝试Independent training或Sequential training,因为它们不需要频繁更新索引。

常见问题:

Q:Joint training w/ in-batch approximation 真的能近似全局索引吗?
A:能提供一定近似,但存在训练-测试差异(因为训练时只看到批内文档,而测试时面对整个知识库)。不过实践中在很多任务上效果已足够好。

5 应用:What & How & When

5.1 What are the tasks?(适用于哪些任务)

检索增强语言模型可应用于多种下游任务,如下图所示:

  • 第一行:知识密集型任务(knowledge-intensive)
  • 第二行:更多生成类任务(More generations)
  • 第三行:更多分类类任务(More classifications)

5.2 How to adapt?(如何适配下游任务)

主要求解范式有三种,可组合使用:

  • Fine-tuning:微调模型。
  • Reinforcement learning(RLHF):强化学习与人类偏好对齐。
  • Prompting:通过提示语操作输入/输出层(合并检索上下文或插值token概率)。

下图展示了适配方法:

注意:若无法训练(如缺乏计算资源或使用专有模型),则应使用Prompting。Fine-tuning+RL需要额外数据和训练,但结果方差小;Prompting简单但方差大。在下游任务上训练检索器会很有帮助。

5.3 When to use?(何时使用检索增强)

总结如下图:

各模型在What & How & When维度上的分类总结:

知识库类型多样,包括:Wikipedia、训练数据、代码文档等。但在OOD(领域外)检索上仍具挑战

特别注意:多数工作证实检索增强模型在MMLU数据集(Multiple-choice NLU任务)上表现不佳。这可能与向量相似度无法很好完成多标签召回有关,该部分仍有很大提升空间。

小提示: 若你的任务需要高度可解释性(如医疗诊断、法律咨询),强烈建议使用检索增强模型,因为可以返回来源文档供验证。

常见问题:

Q:为什么在MMLU等多选题上表现不佳?
A:可能是由于检索到的文档与选项之间的语义匹配不够精确,或者模型难以融合多个检索结果中的矛盾信息。目前已有改进方案如使用更细粒度的检索或训练专门的融合模型。

6 扩展:Multilingual & Multimodal

检索增强语言模型可以扩展到更多样的知识库形式,使模型从多种存储中获取知识。下图展示了不限形式的检索增强模型:

6.1 多语言检索增强

通过跨语言检索和生成,可以克服许多世界语言中数据存储的稀缺性(例如中文互联网缺少的知识可以从英文互联网补充)。代表性工作[3]之外,现有工作总结如下:

6.2 多模态检索增强

使输入/输出适配更多模态(图像、音频、视频等),让模型更灵活通用。Meta的最新工作[4]之外,现有工作总结如下:

总结: 扩展到多语言检索,可以克服数据稀缺;扩展到多模态检索,可以适配更多应用场景,实现更灵活通用的部署。

小提示: 多模态检索时,需要注意不同模态之间的对齐问题(例如图像特征与文本特征如何映射到同一空间)。

常见问题:

Q:多语言检索增强是否要求知识库中必须有对应语言的内容?
A:不一定。例如,可以利用英文知识库回答中文问题(跨语言检索),但需要好的跨语言编码器和对齐策略。

审核编辑:彭菁

来源:https://m.elecfans.com/article/2218283.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。