字体大小
第五编 注意力机制与大语言模型的形成 · 05_第五编_注意力机制与大语言模型的形成/第23章_检索增强与多模态扩展/chapter.md

第23章 检索增强与多模态扩展

本章核心问题

当模型参数不足以承载全部知识与能力时,如何通过外部资源与多模态输入扩展系统能力,使语言模型从封闭参数系统走向开放资源系统?

1. 问题背景

在前几章中,我们已经看到,大语言模型通过大规模预训练获得了强大的生成能力,又通过指令微调与对齐学习逐渐成为更可用的交互系统。但是,到了这一阶段,一个新的限制也越来越明显:即使模型已经很大,它的知识仍然主要被压缩在固定参数中,而这些参数一旦训练完成,就不会自动随着世界变化而更新。

这意味着,大语言模型在知识层面具有明显的静态性。它可能知道大量训练时期之前的事实、概念和语言模式,但对于新近发生的事件、企业内部文档、用户私有知识库或高度专业的实时数据,它往往无法仅靠参数记忆准确回答。换句话说,参数化记忆再大,也很难无损承载真实世界中不断变化的全部知识。

同时,单模态文本输入也逐渐暴露出边界。现实任务并不总是纯文本的。用户可能希望模型阅读图像、理解图表、听懂语音、结合文档和图片共同作答,甚至在多种模态之间相互转换。例如,一份财报既有文字也有表格,一张医学影像需要和病历说明共同分析,一个语音助手既要识别说话内容,也要生成自然语言回应。

因此,第23章所讨论的,正是大语言模型继续扩展能力边界的两个关键方向。第一条方向是检索增强,也就是把模型与外部知识库、文档库或搜索系统连接起来,让模型在回答前能够先访问相关信息。第二条方向是多模态扩展,也就是把文本之外的图像、语音等输入输出通道纳入统一建模框架中。

从全书主线看,这一章承接的是第22章的一个自然结论。第22章说明,仅靠内部参数优化,还不足以彻底解决知识正确性、事实更新和长期可用性问题。于是,系统开始向外部资源打开接口,并向更多输入输出模态扩展。这一步的历史意义在于:模型不再只是一个封闭的语言生成器,而开始成为一个能够调用外部知识、融合多种感知信号的开放系统。这也正是后续 Agent 化的重要前奏。

2. 数学原理

2.1 向量嵌入与相似性表示

检索增强的第一步,不是直接搜索原始文本,而是把文本或其他对象映射为向量表示。设一个文档片段记为 $d$,查询问题记为 $q$。我们引入一个嵌入函数

$$ e:\mathcal X\to\mathbb R^k, $$

其中 $\mathcal X$ 表示原始对象空间,可以是文本片段、句子、图像描述或其他可编码对象;$\mathbb R^k$ 表示 $k$ 维实向量空间;$e(x)$ 表示对象 $x$ 的嵌入向量。

于是,查询与文档都可以被映射为向量:

$$ z_q=e(q), \qquad z_d=e(d). $$

这里,$z_q$ 表示查询向量,$z_d$ 表示文档向量。这样一来,检索问题就被转化为向量空间中的相似性搜索问题。也就是说,我们不再直接比较字符串表面形式,而是比较它们在表示空间中的几何接近程度。

这种做法的意义很大。因为真实问题中,相关文档未必与查询共享完全相同的词面表达,但它们可能在语义上接近。只要嵌入空间构造得足够好,那么相似语义对象就会被映射到相近区域,检索系统就有机会找到表述不同但内容相关的知识片段。

2.2 相似性函数与向量检索

有了嵌入向量后,下一步是定义相似性函数。最常见的形式之一是点积相似度:

$$ s(q,d)=z_q^\top z_d. $$

这里,$s(q,d)$ 表示查询 $q$ 与文档 $d$ 之间的相似性得分;符号 $\top$ 表示向量转置,因此 $z_q^\top z_d$ 是两个向量的内积。

若向量已归一化,即满足 $\|z_q\|_2=1$ 且 $\|z_d\|_2=1$,其中 $\|\cdot\|_2$ 表示二范数,那么点积还可以写成余弦相似度:

$$ \cos(z_q,z_d)=\frac{z_q^\top z_d}{\|z_q\|_2\,\|z_d\|_2}. $$

这里,$\cos(z_q,z_d)$ 表示两个向量夹角的余弦值,它反映的是方向相似性而不是绝对长度。

于是,向量检索的任务就可以写成:在文档集合 $\mathcal D$ 中,找出使相似度最大的若干个文档,即

$$ \operatorname*{top\text{-}k}_{d\in\mathcal D}\ s(q,d). $$

这里,$\operatorname*{top\text{-}k}$ 表示选出得分最高的前 $k$ 个结果,$\mathcal D$ 表示文档库。这个公式的直观含义是:查询进入后,系统先在向量空间里找出语义上最接近的若干个候选知识片段,再把它们交给后续生成模块使用。

2.3 检索增强生成

检索增强生成通常被称为 RAG,即 retrieval-augmented generation。它的核心思想是:模型回答问题时,不再只依赖内部参数记忆,而是先从外部知识库检索相关内容,再把检索结果拼接进上下文中进行生成。

设查询为 $q$,检索得到的前 $k$ 个文档记为

$$ R(q)=\{d_1,d_2,\dots,d_k\}. $$

这里,$R(q)$ 表示对查询 $q$ 的检索结果集合。然后,把查询与检索结果共同作为生成条件,模型生成回答 $y$ 的条件概率可写为

$$ P_\theta(y\mid q,R(q)). $$

这条公式非常关键。因为它说明,生成模型的条件项已经不再只是用户原始问题,而是“问题 + 外部检索证据”的组合。于是,模型在回答时实际上是在估计:给定当前问题和相关文档后,什么样的输出最合理。

如果把回答进一步展开为自回归生成,那么可写成

$$ P_\theta(y\mid q,R(q))=\prod_{t=1}^{T_y} P_\theta(y_t\mid q,R(q),y_{<t}), $$

其中 $T_y$ 表示回答长度,$y_t$ 表示回答第 $t$ 个词元,$y_{<t}$ 表示已生成前缀。这个式子说明,外部检索结果并不是一次性起作用,而是在整个生成过程中持续影响每一步词元分布。

2.4 检索与生成的分工

从系统角度看,RAG 的本质是把“找到信息”和“组织答案”这两件事分开。检索模块负责从大规模文档库中找到相关证据,生成模块负责利用这些证据组织自然语言回答。

这种分工之所以重要,是因为参数化记忆与外部检索各有优缺点。参数化记忆适合吸收广泛的统计规律、语言模式与常识结构,但不适合频繁更新或精确回忆长尾事实;外部检索则适合访问最新知识、私有知识和可验证文档,但本身不擅长组织复杂语言输出。RAG 正是把二者结合起来,使模型既保留语言生成能力,又获得外部知识访问能力。

从数学上看,检索模块可以近似看作一个映射

$$ q\mapsto R(q), $$

而生成模块则是一个条件分布

$$ (q,R(q))\mapsto P_\theta(y\mid q,R(q)). $$

前者负责证据选择,后者负责答案生成。这种模块化结构为后面的工具使用和 Agent 系统奠定了非常重要的思想基础。

2.5 跨模态对齐

如果我们从文本走向图像、语音等模态,那么核心问题就变成了:不同模态的数据如何进入同一个表示空间,或者至少进入可相互映射的表示体系。

设文本输入为 $x^{\mathrm{text}}$,图像输入为 $x^{\mathrm{img}}$。我们分别定义文本编码器与图像编码器:

$$ z^{\mathrm{text}}=f_{\theta_t}(x^{\mathrm{text}}), \qquad z^{\mathrm{img}}=g_{\theta_v}(x^{\mathrm{img}}), $$

其中,$f_{\theta_t}$ 表示文本编码器,$g_{\theta_v}$ 表示视觉编码器;$\theta_t$ 与 $\theta_v$ 分别是对应参数;$z^{\mathrm{text}}$ 与 $z^{\mathrm{img}}$ 是两种模态的向量表示。

跨模态对齐的目标,是让语义上对应的文本和图像在表示空间中彼此接近,而不对应的样本彼此远离。这样,当用户给出一张图像时,系统就能在共享表示空间中找到与之相关的文本描述;反过来,当给出一句文本时,也可以在图像空间中找到匹配对象。

2.6 联合表示学习与对比目标

实现跨模态对齐的一种典型方法,是对比学习。设一批配对样本为

$$ \{(x_i^{\mathrm{text}},x_i^{\mathrm{img}})\}_{i=1}^{n}, $$

其中第 $i$ 个文本与第 $i$ 个图像语义对应。把它们编码成向量后,可以定义相似度

$$ s_{ij}=\big(z_i^{\mathrm{text}}\big)^\top z_j^{\mathrm{img}}. $$

这里,$s_{ij}$ 表示第 $i$ 个文本与第 $j$ 个图像之间的相似度分数。若 $i=j$,则表示真实配对;若 $i\neq j$,则通常表示负样本配对。

一种常见的对比损失可写为

$$ \mathcal L_{\mathrm{contrast}}=-\sum_{i=1}^{n}\log \frac{\exp(s_{ii}/\tau)}{\sum_{j=1}^{n}\exp(s_{ij}/\tau)}. $$

这里,$\mathcal L_{\mathrm{contrast}}$ 表示对比损失;$\tau>0$ 是温度参数,用来调节相似度分布的尖锐程度。这个损失鼓励真实配对 $(i,i)$ 的相似度高于非配对 $(i,j)$。

这条公式的意义在于:它把“不同模态之间的语义对应”转化为一个可以优化的几何目标。模型若想最小化这个损失,就必须学会把对应文本和图像映射到相近区域。于是,联合表示学习就建立起来了。

2.7 多模态生成

一旦不同模态的表示已经能够对齐,下一步就可以做多模态生成。最简单的情形是:给定图像表示和文本提示,让语言模型生成描述;或者给定语音输入,先编码为向量表示,再交给语言模型生成文字回应。

若把外部模态输入统一记为上下文 $c$,生成输出序列 $y$,则多模态生成的形式仍然可以写成

$$ P_\theta(y\mid c)=\prod_{t=1}^{T_y} P_\theta(y_t\mid c,y_{<t}). $$

这里的差别只在于,$c$ 不再局限于文本,它可以包含图像编码、语音特征、检索文档或它们的组合。也就是说,从概率形式上看,多模态扩展并没有推翻语言模型的基本框架,而是扩展了条件项的来源。

这非常重要。因为它表明,多模态模型的本质并不是放弃语言建模,而是在更丰富的条件信息上继续执行语言建模。文本仍然常常是最终的推理和输出接口,但输入证据来源已经变得更加多样。

3. 代表模型或算法

3.1 文本嵌入检索

文本嵌入检索是检索增强系统的基础模块。它首先用嵌入模型把查询和文档片段映射为向量,然后通过点积、余弦相似度或近似最近邻搜索找出最相关文档。

它的价值在于,相比传统基于关键词的搜索,向量检索更强调语义相似性。这使系统能够找到“表达方式不同但内容相关”的证据,从而为后续生成提供更合适的知识基础。

3.2 RAG

RAG 是现代知识增强语言系统中最有代表性的框架之一。它不要求把所有知识都压进模型参数,而是允许系统在回答时临时访问外部知识。

这种设计极大提高了知识可更新性和可验证性。因为一旦文档库更新,系统的知识边界也会随之更新,而不必重新训练整个大模型。对于企业知识库、法律法规、医学指南和实时资讯场景,这一点尤其关键。

3.3 视觉语言模型

视觉语言模型把图像编码器与语言模型结合起来,使系统既能接收图像输入,也能生成文字解释。其核心并不只是“让模型看图”,而是让视觉表示与语言表示在某种共享或可映射的空间中协同工作。

这一类模型使大语言模型从纯文本交互系统扩展成了图文联合理解系统,也为后续更复杂的多模态推理奠定了基础。

3.4 多模态预训练框架

更一般地说,多模态预训练框架试图在文本、图像、语音等多种数据上共同学习表示。它们有些强调对齐,有些强调生成,有些强调统一编码与解码,但共同目标都是:让系统能够在多个模态之间共享信息、传递语义并完成跨模态任务。

从历史角度看,这类框架的重要性在于,它们把大语言模型从“文本智能”进一步推进为“更广义的信息处理系统”。

4. 典型应用

4.1 文档问答

文档问答是 RAG 最典型的应用之一。用户提出问题 $q$,系统先在文档库 $\mathcal D$ 中检索相关片段 $R(q)$,再基于这些片段生成回答 $y$。

本章的数学内容在这里的具体对应关系非常明确。首先,用嵌入函数 $e(\cdot)$ 把问题和文档片段映射为向量;然后用相似度函数 $s(q,d)=z_q^\top z_d$ 进行排序;最后把检索结果带入生成模型

$$ P_\theta(y\mid q,R(q)). $$

因此,文档问答并不是简单“先搜一下再回答”,而是完整复用了本章的三层数学结构:向量表示、相似性检索、条件生成。

4.2 企业知识助手

企业知识助手面对的往往是内部文档、制度说明、技术手册和工单记录。这些知识既私有,又会持续变化,显然不适合完全依赖模型预训练参数记忆。

在这里,RAG 的意义尤其突出。外部文档库承担知识更新功能,语言模型承担表达组织功能。这样一来,系统既能访问最新内部信息,又能用自然语言把结果组织成面向用户的解释。

从数学上说,企业知识助手就是把“企业知识库”具体实现为第 2.3 节中的 $R(q)$,再通过条件分布 $P_\theta(y\mid q,R(q))$ 输出答案。这种结构直接解决了知识静态性问题。

4.3 图文理解

图文理解任务要求系统同时处理视觉输入与文本问题。例如,给一张图片,再问“这张图里的人在做什么”或“图中海报上写了什么”。这时,仅靠文本模型显然不够。

本章的跨模态对齐与联合表示学习就在这里发挥作用。图像先被编码为 $z^{\mathrm{img}}$,文本问题被编码为 $z^{\mathrm{text}}$,然后系统在某种共享表示或联合条件空间中整合信息,再生成最终回答。

也就是说,图文理解并不是“图像模块做完全部工作,语言模块只负责朗读结果”,而是多模态表示在条件生成框架中的联合运作。

4.4 语音助手

语音助手的核心是把语音输入、语言理解和文本或语音输出串联起来。若把语音信号编码成表示向量,再交给语言模型处理,那么从数学形式上看,它依然可以归入

$$ P_\theta(y\mid c) $$

这一条件生成框架,其中条件 $c$ 包含了语音模态提供的信息。

这说明,多模态扩展并不是每种模态都需要重新发明一套独立智能系统,而是通过表示对齐与统一条件建模,把更多感知信号接入已有的大语言模型框架中。

4.5 图像描述与多模态推理

图像描述任务要求模型把视觉内容转成自然语言说明,而更复杂的多模态推理任务则要求模型结合图像、文字、表格或其他输入进行综合判断。

这里,本章的关键不只是“输入通道变多了”,而是联合表示学习使不同模态的信息能够进入一个可比较、可融合的表示体系。只有这样,模型才可能在文本输出中合理引用视觉证据、空间关系和图像细节。

因此,多模态推理的数学基础并不神秘,它建立在本章已经讨论的两个核心上:一是跨模态对齐,二是统一条件生成。

5. 局限性与历史转折

检索增强和多模态扩展显著提高了大语言模型的知识可用性与感知范围,但它们仍然不是故事的终点。

首先,检索增强虽然能改善知识更新和事实支持,但检索质量本身会直接影响最终回答。如果检索结果不相关、不完整或排序错误,那么生成模型即使很强,也可能基于错误证据组织出看似合理的回答。

其次,多模态扩展虽然增加了输入输出通道,但“能看图”“能听语音”并不自动等于“能自主完成复杂任务”。多模态模型可以更全面地接收信息,却仍然未必具有长期规划、工具编排和行动闭环能力。

再次,不论是 RAG 还是多模态模型,本质上都主要解决了“信息从哪里来”和“信息如何融合”的问题,而不是“系统如何连续决策并对外部世界采取行动”的问题。它们让模型从封闭参数系统转向开放资源系统,却还没有真正进入行动系统阶段。

因此,第23章的历史转折点在于:当模型已经能够接入知识库、视觉和语音等外部资源后,下一步就不再只是扩大信息来源,而是让系统学会在环境中持续决策、调用工具、执行动作并利用反馈修正行为。也就是说,问题开始从“如何扩展信息输入”转向“如何形成行动闭环”。这正是后续强化学习与 Agent 系统章节要接力讨论的主题。

6. 本章小结

本章讨论了检索增强与多模态扩展的数学基础。核心结论是:当大语言模型内部参数不足以承载全部知识和能力时,系统可以通过向量嵌入、相似性检索、检索增强生成、跨模态对齐和联合表示学习,把外部知识和多种感知信号纳入统一建模框架。这样一来,模型不再只是一个封闭的参数记忆系统,而开始成为一个能够连接文档库、图像、语音等外部资源的开放系统。

从发展脉络看,这一步极其关键。它一方面缓解了知识静态和单模态输入的限制,另一方面也为后续 Agent 化提供了必要前提,因为只有当系统能够访问外部资源、融合多种信息时,它才有可能进一步进入工具调用、任务执行和行动闭环阶段。

关键公式

$$ z_q=e(q), \qquad z_d=e(d). $$
$$ s(q,d)=z_q^\top z_d. $$
$$ \operatorname*{top\text{-}k}_{d\in\mathcal D}\ s(q,d). $$
$$ P_\theta(y\mid q,R(q))=\prod_{t=1}^{T_y} P_\theta(y_t\mid q,R(q),y_{<t}). $$
$$ z^{\mathrm{text}}=f_{\theta_t}(x^{\mathrm{text}}), \qquad z^{\mathrm{img}}=g_{\theta_v}(x^{\mathrm{img}}). $$
$$ \mathcal L_{\mathrm{contrast}}=-\sum_{i=1}^{n}\log \frac{\exp(s_{ii}/\tau)}{\sum_{j=1}^{n}\exp(s_{ij}/\tau)}. $$

关键概念

  • RAG
  • 嵌入
  • 向量检索
  • 相似性搜索
  • 外部上下文
  • 多模态
  • 跨模态对齐
  • 联合表示学习
  • 视觉语言模型
  • 知识增强