跳到主要内容

生产环境中的多模态 RAG:如何同时搜索图像、音频和文本

· 阅读需 14 分钟
Tian Pan
Software Engineer

大多数团队在意识到他们的语料库中很大一部分内容——产品截图、演示录制、架构图、客服通话录音——对于纯文本检索系统是不可见的之后,会将多模态 RAG 加入到他们的路线图中。在生产环境中令他们感到惊讶的并不是嵌入模型的选择或向量数据库的选择,而是模态之间的差距:同一个语义概念,当被编码为图像和句子时,会落在向量空间中完全不同的区域,而搜索引擎根本不知道它们是相关的。

这篇文章涵盖了多模态嵌入对齐的技术原理、在大规模场景下真正有效的跨模态重排序策略、相对于纯文本 RAG 的成本和延迟状况,以及多模态检索特有的失效模式。

多模态嵌入对齐的工作原理

基础挑战在于,文本嵌入和图像嵌入是由针对不同目标训练的不同编码器架构生成的。文本编码器被优化为将语义相似的句子放在一起。图像编码器被优化为将视觉相似的图像放在一起。两者都没有任何内在理由将句子“在公园里奔跑的狗”放在该场景的照片附近——除非你显式地训练这种关系。

CLIP (Contrastive Language-Image Pretraining) 是这方面的突破。它使用对比损失(contrastive loss)在 4 亿对图像-标题对上同时训练两个编码器——一个用于文本,一个用于图像。训练信号是:将成对的图像和标题的表示推在一起,将不成对的推开。训练后,你会得到一个共享的嵌入空间,其中文本“在公园里奔跑的狗”和对应的照片在几何上是接近的。

Meta 的 ImageBind 将这一想法扩展到了六种模态:图像和视频、文本、音频、深度、热感和 IMU 数据。核心架构见解是,图像充当了“绑定”模态。ImageBind 不需要为每种可能的模态组合(音频-深度、文本-热感等)提供配对示例,而只需要每种模态与图像配对的数据。因为图像已经通过类似 CLIP 的预训练与文本对齐,所以所有六种模态最终都会进入一个共享空间——即使是那些从未直接在一起训练过的模态对。

绑定架构的实际局限性在 2024–2025 年的基准测试中显现出来:像 Gemini Embedding 2 和 Qwen3-VL-2B 这样在单一统一架构中联合训练所有模态的模型,表现始终优于绑定架构。联合优化允许模型学习跨模态的交互,而不仅仅是通过图像进行介导的成对对齐。

模态差距(Modality Gap)问题

一篇名为《Mind the Gap》的 2022 年 NeurIPS 论文记录了对比式多模态模型中一个持久的结构缺陷。每个编码器的表示自然地聚集在高维空间中一个狭窄的几何锥体内,而这两个锥体并不完全重叠。对比损失只关心成对内的相对距离,它不会全局性地将分布推在一起。结果是,即使是对齐良好的模型,在模态集群之间也存在系统性差距,这会不可预测地影响检索准确性,并可能在下游应用中编码偏差。

缓解措施是从一开始就在单一架构中联合训练模态,这就是为什么像 Gemini Embedding 2(原生多模态,3,072 维输出)这样的新模型优于桥接独立预训练编码器的架构。对于仍在生产中使用 CLIP 或基于桥接方法的团队,实际的解决方法是在你的特定数据分布上验证跨模态检索的准确性,并为每个模态对调整余弦相似度阈值,而不是使用单一的全局阈值。

2026 年生产级嵌入模型的现状

生产级多模态嵌入已经出现了三个梯队:

统一基础模型 (Gemini Embedding 2,2026 年 3 月发布):将文本、图像、视频、音频和 PDF 映射到单个 3,072 维向量空间中。在 MTEB 英语测试中得分为 68.32——领先下一个竞争对手 5 分。在视频检索基准(Vatex、MSR-VTT、YouCook2)上,它达到了 68.8,而 Amazon Nova 2 为 60.3,Voyage Multimodal 3.5 为 55.2。价格:0.20 美元/百万 token,Batch API 为 0.10 美元/百万 token。硬件限制适用:每个视频剪辑 120 秒,每个音频剪辑 80 秒,每个 PDF 6 页。

托管多模态 API (Voyage Multimodal 3.5):在维度压缩方面表现最佳——通过 Matryoshka 表征学习将维度从 3,072 截断到 256 时,准确度损失小于 1%。当存储成本是核心约束时非常有用。

开源模型 (Qwen3-VL-2B):实现了 0.945 的跨模态检索得分,在该特定任务上击败了 Gemini (0.928) 和 Voyage (0.900)。量化后可在单个消费级 GPU 上运行。这个 20 亿参数的模型在跨模态检索上优于闭源 API,因为使用最新技术训练的模型能更好地处理模态差距。

使用 CLIP 进行生产检索的旧方法对于具有中小规模语料库的图像-文本工作负载仍然可行,但自 2023 年以来它没有收到过有意义的更新,并且越来越多地被这些新替代方案所超越。

跨模态重排序策略

两阶段检索是多模态 RAG 的生产标准,借鉴了在纯文本稠密检索中行之有效的模式:

阶段 1 — 初筛检索:使用快速嵌入模型在所有模态中检索候选集(前 100 或前 200 个结果)。在这个阶段,你倾向于召回率而非准确率 —— 只要不遗漏相关结果,检索到一些无关结果是可以接受的。

阶段 2 — 重排序:应用更重型的交叉编码器(Cross-encoder)或后期交互模型(Late-interaction model)对候选集进行评分,并返回最终的 top-K 结果。

这里的一个重要进展是像 ColPali 和 ColQwen 这样的后期交互模型。这些模型不再将文档压缩为单个向量,而是将其表示为一组 Token 级别的 Patch 嵌入。在查询时,MaxSim 算子将每个查询 Token 与所有文档 Patch 嵌入进行匹配并聚合分数。这实现了单向量方法无法达到的细粒度 Token 到区域的匹配。

特别是 ColPali,它直接将 PDF 页面作为图像处理 —— 无需 OCR,无需分块流水线。系统将布局、图表、表格和文本视为统一的视觉内容。一个生产环境中的顾虑是:ColPali 每页输出约 1,024 个 Token,每个 Token 为 128 维,因此索引一百万页的文档库会产生大约 500 GB 的多向量索引数据,这需要能够处理张量式索引而非简单 ANN 查找的基础设施。

对于需要更轻量化方案的团队,拥有约 1.74 亿参数的 ColFlor 在检索质量上接近 ColPali,但运行速度明显更快 —— 对于预算有限的企业级部署来说,这是一个务实的权衡。

基于 MLLM 的零样本重排序是新兴的第三种选择:将查询和检索到的候选结果同时传递给多模态 LLM,并要求它对相关性进行评分。零样本 MLLM 重排序器在组合图像检索任务中将检索准确率提高了 7 个百分点以上。显而易见的权衡是成本 —— 你在重排序器上运行完整的推理过程 —— 但对于高价值查询或安全至上的应用,准确率的提升证明了其合理性。

延迟与成本概况

坦诚地说,多模态 RAG 比纯文本 RAG 昂贵得多,而且这种差距在你进行生产环境压力测试之前往往并不明显。

在一个使用 ColQwen2 + MonoQwen2-VL 重排序器 + Qwen2-VL 生成,并运行在单个 L4 GPU 上的生产流水线中,其端到端延迟如下:

  • 检索:100–200ms
  • 重排序:500ms–2s
  • 生成:2–5s
  • 总计:每次查询 3–7 秒

质量相当的纯文本 RAG 端到端运行时间通常为 500ms–1.5s。在进入生成阶段之前,你就要面临 3–5 倍的延迟增加。

存储是一个令人意外的成本。1,536 维的纯文本嵌入每个文档大约占用 6KB。而一个 PDF 页面的 ColPali 表示为 1,024 tokens × 128 dims × 4 bytes = 每页约 512KB。索引一百万页,你将拥有 500GB 的向量数据 —— 这是一个巨大的基础设施需求。

推测性流水线(重叠检索和生成)可以将首 Token 延迟降低 20–30%,这对于交互式应用至关重要。通过 Matryoshka 嵌入进行维度削减(例如截断至 768 维)可以将存储空间削减至全维度的 25% 左右,而准确率损失不到 1%。这些优化在规模化之前非常值得实施。

VLM 描述作为原生嵌入的替代方案:一个真实的生产案例发现,使用视觉 LLM 生成视频分块的文本描述,然后用文本嵌入对这些描述进行索引,比原生多模态嵌入便宜 6 倍,且检索质量更好 —— 权衡之处在于预处理速度慢了 2 倍。当你的查询模式以文本为主,且视觉内容具有自然语言结构时,这种模式(在索引时将视觉内容转换为丰富的文本描述,然后在查询时使用快速文本检索)是非常实用的。

多模态检索特有的失败模式

跨模态幻觉是操作风险最高的失败模式。语言模型描述了检索上下文中并不存在的图表或图像 —— 生成了听起来合理但完全虚构的视觉内容。当生成模型产生的输出没有基于检索到的资源(Grounded)时,就会发生这种情况。缓解措施包括使用要求模型引用特定资源 URI 的结构化 Grounding 提示词,以及使用验证器模型检查响应与资源的一致性。

分辨率敏感度对图像检索的影响超出了从业者的预期。嵌入模型是在特定的分辨率范围内训练的;显著高于或低于该范围的图像嵌入会表现出不一致性。即使信息完全相同,以 72 DPI 渲染的技术图表的嵌入方式可能与 300 DPI 的相同图表截然不同。请在索引时对图像分辨率进行标准化。

ASR 错误传播是音频特有的失败模式。传统方法 —— 将音频转录为文本,然后运行文本 RAG —— 会将转录错误传播到检索和生成中。在特定领域的词汇上,5–10% 的词错率会显著降低技术内容的检索精度。直接音频嵌入(跳过 ASR 的语音到嵌入)仍在成熟中,但截至 2025 年,跳过转录步骤的 WavRAG 式方法已显示出生产可行性。

嵌入空间不兼容性在模型版本升级时会导致隐蔽的生产故障。当你升级嵌入模型时,旧向量和新向量不能共存于同一个索引中 —— 混合嵌入空间会产生毫无意义的余弦相似度分数。安全的迁移模式是使用新模型构建影子索引,运行 A/B 测试以重新校准相似度阈值,并在确认质量后才进行切换。

检索偏移在多模态系统中发生在存储于不同向量命名空间的文本和图像嵌入中,当其中一个更新而另一个未更新时,它们会逐渐失去语义一致性。解决方法是在共享的文档标识符下维护同一文档的各模态嵌入,并原子化地更新所有模态。

知识投毒是一个被低估的安全问题。研究表明,在多模态知识库中注入仅五个对抗性图像-文本对,就能以 98% 的攻击成功率操纵系统输出。对于接受用户贡献内容的生产系统,多模态 RAG 需要比纯文本系统更仔细的输入验证。

多模态 RAG 何时物有所值

一旦你确定了语料库和查询模式的特征,决策逻辑就变得清晰了:

在以下情况下使用多模态 RAG:

  • 你的知识库中超过 30% 是非文本内容(图表、架构图、图像、视频、音频)
  • 查询需要无法仅凭文本恢复的视觉或空间推理
  • 转换为文本会丢失关键信息(布局、视觉关系、音频中的语气)
  • 你所在的领域以视觉上下文为主要信息媒介(医学影像、CAD、产品目录、媒体库)

在以下情况下坚持使用纯文本:

  • 你的语料库主要是散文体文档
  • 端到端延迟要求在 500 毫秒以下
  • 计算预算受限,且视觉内容的准确性并非业务关键需求
  • 混合模式(索引时使用 VLM 描述,查询时使用文本检索)能以更低成本实现足够的准确性

针对混合语料库,一种已经成型的生产模式是三模态混合架构:

  1. 使用标准的稠密文本嵌入对文本内容进行索引
  2. 在索引时,使用视觉大模型(Vision LLM)将视觉内容(图表、架构图、图像)转换为丰富的文本描述
  3. 仅对视觉表现形式不可替代的内容(如需要考虑时间/视觉上下文的照片、视频)使用原生多模态嵌入

这样可以在保留真正多模态能力并发挥其价值的同时,确保高频检索路径快速且廉价。

适用于大规模场景的架构原则

以下是几个能将生产系统与原型系统区分开来的模式:

在索引期间保留文档结构。 表格与说明文字分离、插图失去引用——这些都会破坏检索的忠实度。应使用结构化提取(包含层级元数据),以便检索器在查询时能够重建空间关系。

将原始资产与向量索引并列存储。 当初始嵌入无法满足复杂查询的需求时,你需要具备回退能力,即通过更高分辨率的裁剪或重新执行 OCR 进行即时重新处理。如果你只有向量,你就没有修复路径。

对索引、模型和提示词进行统一的版本管理。 未版本化的组件会导致无法回滚,并阻碍可复现的调试。在向量数据库中使用语义版本标签、使用 Git 追踪提示词模板以及设置 MODEL_VERSION 环境变量应成为标准做法。

激进地缓存编码器输出。 在每次查询时重新编码大图和视频帧是耗尽 GPU 预算最快的方式。在 Redis 或类似系统中基于内容哈希(Content-hash)进行缓存可以捕获大部分重复工作;一项分析估计,在典型的生产工作负载下,每个部署周期的嵌入成本约为 134 美元。

多模态 RAG 在生产规模上并非开箱即用。对齐问题是真实存在的,基础设施需求也有所不同,且其失效模式不像纯文本 RAG 那样为人所熟知。但对于那些大量知识以非文本格式编码的组织来说,纯文本检索并不是一种保守的选择——而是一个系统性的盲点。

References:Let's stay in touch and Follow me for more thoughts and updates