多模态 RAG 与跨模态检索
视觉原生文档 RAG 只是一个切片。生产级多模态 RAG 走得更宽——跨文本、图像、音频、视频检索,服务于行程规划("给我找一家安静、有自然光的纯素早午餐")、医疗分诊("什么伤情符合这张照片 + 这些笔记")、电商("和这张自拍相似、我的尺码的搭配")、现场服务("诊断这个引擎声加上这张零件照片")这类工作流。2025 年的三篇综述——Abootorabi 等人、Mei 等人、Zhao 等人——把子问题编纂成体系:跨模态检索、检索融合、生成 grounding、多模态评测。本节课通读这些综述并设计一条生产流水线。
类型: Build 语言: Python(标准库,带融合的跨模态检索器 + grounding 生成器) 前置要求: Phase 12 · 23(ColPali)、Phase 11(RAG 基础) 预计时间: ~180 分钟
学习目标
- 设计跨模态检索:文本 → 图像、图像 → 文本、音频 → 视频等。
- 比较三种融合策略:分数融合、基于注意力的融合、MoE 融合。
- 解释生成 grounding:当来源是多种模态的混合时,"引用你的来源"长什么样。
- 说出 2025 年三篇典范的多模态 RAG 综述及其子问题分类法。
问题背景
单模态 RAG 是个已解决的模式:嵌入查询、嵌入块、检索、塞进 LLM。多模态 RAG 需要:
- 多个检索头(每种模态都需要在一个兼容空间里的嵌入)。
- 跨模态融合检索结果。
- 跨模态引用来源的生成 grounding。
- 覆盖跨模态信号的评测指标。
2025 年的综述全都抵达同一个分类法。
核心概念
跨模态检索
给定模态 A 的查询,检索模态 B 的文档。三种模式:
共享嵌入空间。CLIP 和 CLAP 在共享空间里产出文本 + 图像 / 文本 + 音频嵌入。跨模态余弦相似度直接可用。受限于 CLIP 训练过的对。
每模态编码器 + 翻译。文本编码器 + 图像编码器 + 一个在空间之间映射的小翻译模块。Gupta 等人的 Sen2Sen 和其他 2024 年的设计。灵活但增加复杂度。
VLM 作编码器。用 VLM 的隐藏状态作为检索表示。VLM 支持的任何模态都能用。质量更高,更贵。
选择:文本+图像用 CLIP / SigLIP 2;文本+音频用 CLAP;前沿质量的跨模态用 VLM 隐藏状态。
融合策略
你检索到 10 个结果:5 张图、3 段文本、2 段音频片段。怎么合并?
分数融合(最便宜)。每种模态有自己的检索器,各返回分数。在模态内归一化分数再求和。简单,常常奏效。
基于注意力的融合。把所有检索项拼接,让一个小注意力网络给它们加权。需要训练。
MoE 融合。一个门控网络路由到模态专属专家。不同查询类型路由不同——一个视觉问题给图像更高权重。
生产默认:分数融合,对查询的主导模态略微偏置。如果 A/B 在你的领域显示明显胜出,就升级到 MoE。
生成 grounding
LLM 应该引用是哪个检索项驱动了每个论断。对多模态:
- 文本来源:标准引用
[1]。 - 图像来源:
[img 3]配一句简短 caption。 - 音频:
[audio 2 at 0:34]。
用 grounding 感知的数据训练生成器:训练目标里的每个论断都标上来源索引。推理时,模型自然吐出引用。
2025 年的综述
Abootorabi 等人(arXiv:2502.08826,"Ask in Any Modality"):多模态 RAG 的分类法。涵盖检索、融合、生成。覆盖最广。
Mei 等人(arXiv:2504.08748,"A Survey of Multimodal RAG"):聚焦子任务基准和失败模式。对评测设计有用。
Zhao 等人(arXiv:2503.18016):以视觉为焦点的综述。在 ColPali 家族工作上很强。
三篇都读,能给你截至 2025 年春的最先进水平。大多数子问题仍然开放。
MuRAG —— 奠基论文
MuRAG(Chen 等人,2022)是第一个多模态 RAG。从一个多模态知识库检索图像 + 文本,生成答案。在 VLM 浪潮之前就展示了可行性。现代系统(REACT、VisRAG、M3DocRAG)建立在它之上。
一个生产级行程规划器示例
查询:"给我找一家安静、有自然光的纯素早午餐。"
流水线:
- 分解查询。"安静" → 音频/评论关键词;"纯素早午餐" → 菜单项;"自然光" → 图像特征。
- 逐模态检索:
- 在评论上做文本检索:"纯素早午餐,安静氛围。"
- 在餐厅照片上做图像检索:"自然光,通透。"
- 在环境声片段上做音频检索:"低分贝,无音乐。"
- 融合分数。每家餐厅有一个综合分。
- top-k 餐厅 → VLM 生成器配上所有证据 → 带引用的答案。
这远超文本 RAG。每种模态都加入了光靠文本会错过的信号。
agent 式多模态 RAG
多跳:如果第一次检索没返回高置信度答案,LLM 重新表述并再次检索。Phase 14 的 agent 式 RAG 模式在这里适用。例子:
- 检索初始 top-10 → LLM 说"太吵了,筛 <40 dB" → 重新检索。
- 检索图像 → LLM 看到其中一张有菜单 → 检索菜单文本 → 回答。
增加复杂度,但能处理单次检索处理不了的查询。
评测
跨模态评测仍不成熟。常见替代指标:
- 每模态 Recall@k。
- 融合后的 top-k 准确率。
- 人工评判的端到端满意度。
- 任务专属(完成的预订、达成的购买)。
没有横跨所有模态的标准基准。大多数论文在领域专属任务上评测。
contrastive-matrix实际使用
code/main.py:
- 三个模拟检索器(文本、图像、音频),在一个共享的餐厅语料上运作。
- 分数融合,用可配置权重组合各模态分数。
- 一个生成器桩,吐出带引用的最终答案。
- 一个简单的 agent 式循环,置信度低时重新表述查询。
拿去用
本节课产出 outputs/skill-multimodal-rag-designer.md。给定一个带多模态查询流的产品规格,它设计检索器、融合、生成器和评测。
练习
提出一个医疗分诊多模态 RAG:查询 = 伤情照片 + 文本症状。哪些模态从哪个知识库检索?
分数融合是简单加权和。它有什么 MoE 融合能避免的失败模式?
读 Abootorabi 等人的分类法(第 3 节)。三个典范子问题是什么,它们怎么映射到你选的产品?
为一个行程规划器多模态 RAG 设计一份评测规格。什么指标覆盖图像召回、音频召回和综合正确性?
agent 式多跳 RAG 每次往返有延迟税。在什么查询难度下,准确率增益才证明这个延迟值得?
关键术语
| 术语 | 大家怎么说 | 它实际指什么 |
|---|---|---|
| 跨模态检索 | "查一种模态,检索另一种" | 文本查询检索图像;图像查询检索文本;需要共享空间或翻译器 |
| 分数融合 | "组合分数" | 各模态检索分数的加权和;最简单的融合 |
| MoE 融合 | "模态路由的专家" | 门控网络按查询挑信任哪种模态的分数 |
| grounding 生成 | "引用你的来源" | 答案里每个论断都标上来源索引 |
| MuRAG | "第一个多模态 RAG" | 确立了多模态 RAG 模式的 2022 年论文 |
| agent 式多跳 | "重新表述并重试" | 首轮置信度低时 LLM 重新查询检索器 |