多模态嵌入与RAG:实用指南
多模态嵌入使AI系统能够直接搜索和推理文本、图像、音频和视频,无需先转换为文本。本文介绍了其工作原理,并通过Weaviate和Gemini展示了三种实际实现。
当我们试图用语言描述一段音乐时,常常会陷入“有点像Billie Eilish,但更柔和,有钢琴线……算了,你直接听吧”的困境。这并非语言的失败,而是提醒我们语言本质上是经验的压缩表示,如同任何压缩都会丢失音调、质感、空间布局等细节。在AI历史中,我们曾不得不接受这种压缩:搜索和检索几乎只处理文本,若非写成文字,便视为不存在。播客需转录,扫描PDF需OCR,白板照片则几乎无法利用。每次转换都带来信息损失。
多模态嵌入改变了这一局面。它能够将文本、图像、音频和视频映射到同一嵌入空间,使一种模态的查询可以检索所有其他模态的结果。本文介绍其工作原理、最新模型如何使其更实用,并通过三个实际系统展示如何构建多模态应用。
嵌入简介
嵌入是输入(文本/图像/音频等)的高维数学空间表示。像text-embedding-3-large或nomic-embed-text这样的模型将句子编码为向量。语义相近的输入在嵌入空间中相互靠近(如“狗”和“小狗”的向量近,“Jira工单”和“派对策划”的远)。这就是现代检索系统的核心——通过向量比较实现语义搜索,而非关键词匹配。但文本嵌入仅理解文本,若数据为其他格式,则需先转换或放弃。
共享嵌入空间
假设支持工程师搜索包含客户通话录音、扫描手册、产品演示视频的知识库。他搜索“压力下阀门密封失效的部分”,答案在40分钟教学视频的第22分钟。纯文本嵌入无法处理:转录只捕获对话,OCR丢失图表,字幕只描述台词。信息存在,但格式使其不可访问。解决方案是将每种模态编码到共享嵌入空间。关键在于训练一个能跨模态一致工作的模型。
模态对齐的学习方法
对比学习是实现此目标的技术:构建配对数据(照片与说明、音频片段与文本描述),同时训练两个编码器。配对输入在嵌入空间中靠近,非配对远离。每批次中,正确配对排名最高,错误配对受罚。经过数亿对训练,编码器收敛到语义主导格式的几何空间。
CLIP(OpenAI,2021)首次大规模验证了图像-文本对齐(4亿对)。ImageBind(Meta,2023)扩展到六种模态(图像/视频、文本、音频、深度、热成像、IMU),通过图像作为锚点,无需所有模态配对数据。然而,“Mind the Gap”(NeurIPS 2022)指出问题:每个编码器的表示在高维空间中自然聚集于狭窄的锥体,且两个锥体不完全重叠。对比训练无法缩小这一差距,因为它只关心相对距离,导致模态间隙影响准确性和下游任务偏差。
下一代模型需要从根本上解决:从零开始联合训练所有模态,采用统一架构。现代原生多模态嵌入模型正是如此,使下文示例从理论变为现实。
塑造多模态检索的决策
设计决策对实际准确性的影响大于模型选择:
- 原生 vs. 桥接嵌入:常见方法是将所有内容转为文本后使用文本嵌入模型,但这会承受转换成本。替代方案是使用从开始就联合训练的模型(如Gemini Embedding 2)对每种模态进行原生嵌入,保留音频音调、PDF布局、视频视觉动作。
- 非文本数据的分块策略:文本有自然分块单元(句子、段落),音频和视频没有。标准方法是固定时间窗口加重叠,避免有意义内容被分割。太短丢失上下文,太长检索块难以传递给生成模型。对于文档,转换为图像并按页面索引效果良好,布局保持不变。
- 维度大小与存储:多模态工作负载会快速生成向量。若索引100万个15秒视频片段(3072维),向量索引可达数GB。使用Matryoshka表示学习(MRL)训练的模型允许在无需破坏嵌入的情况下降低维度(例如3072维向量的前768维仍是可用表示)。建议从小维度开始,根据数据基准测试,必要时再扩展。
- 检索-生成,原生媒体:标准RAG循环(嵌入语料库、嵌入查询、检索最近邻、传递给LLM)在这里同样有效。若生成模型能直接推理音频、图像或视频,则传递原始媒体而非文本摘要,使生成步骤像嵌入步骤一样受益于原始内容。
构建多模态系统(三个示例)
Weaviate最近增加了对Gemini Embedding 2(Google首个原生多模态嵌入模型)的支持,可直接在数据库接入管道中处理。只需声明哪些字段是文本、图像、音频或视频,导入数据后嵌入自动生成和索引。
我们使用的技术栈:Weaviate(带multi2vec-google模块)、Gemini Embedding 2(支持MRL的多模态嵌入模型)、Gemini 3 Flash(多模态LLM用于生成步骤)。
1. 无需转录的音频搜索 问题:有长音频文件(播客、访谈、讲座),希望基于语义而非转录进行RAG。 方法:将音频分割为短重叠块并原生嵌入。可用文本或音频查询,检索匹配的音频片段。示例中使用Robert Frost的诗《Birches》的录音。 检索到的音频字节直接传递给Gemini 3 Flash进行生成。模型基于听到的内容回答,这与基于文本转录的体验截然不同——诗歌不仅是文字,还包括行间的呼吸、重音和沉默。
2. 将PDF作为复杂视觉文档阅读 问题:PDF文本提取不仅偶尔出错,且图表、注释、复杂表格和多列格式在纯文本中无法清晰表示。 方法:将PDF视为视觉页面序列,每页转换为图像后以image_fields配置索引。嵌入模型接收包含布局、排版、图表和表格的页面。文本查询按视觉相似性检索最相关页面,这些页面作为图像传递给LLM,LLM像人类一样阅读它们。预处理管道也因此更简单。
3. 在视频中找到正确时刻 视频是最难搜索的媒介,因为视频中最易检索的对话往往不是最重要的视觉信息。例如,教程视频中配置面板的操作是视觉答案,而旁白可能只含糊带过。基于字幕的搜索找到说了正确词语的视频,而视觉搜索找到发生了正确动作的片段。 方法:将MP4文件用ffmpeg分割为15秒重叠段,保留每块的视频和音频流。将每块编入索引,查询按语义内容检索最近块。生成模型基于原始视频内容推理给出最佳答案。也可用视频片段查询实现视频到视频搜索。
何时使用多模态嵌入(以及何时不用)
多模态嵌入并非万能升级。关键判断:数据中是否存在文本无法承载的信号?使用时满足以下条件:
- 音频包含重要的情感或语调内容。
- PDF有布局相关信息(表格、注释、图表)且OCR易出错。
- 视频搜索需要找到视觉动作/线索,而非仅口语。
- 用户可能通过示例搜索:“给我看一些像这样的东西……”。
若实际数据是纯文本,仍应使用文本嵌入,它们在文本检索任务上性能良好且更便宜、更快。若语料库是1000万篇文章,无视觉或音频成分,添加多模态会增加成本和复杂性而不提高准确性。同时注意存储成本,建议从较小向量维度(768通常足够)开始,在扩展前进行基准测试。
总结
三个示例共享相同结构:以数据实际到达的形式处理它。无需转录步骤丢失音调,无需OCR破坏布局,无需字幕生成将视觉场景压扁成单句。这就是“多模态”的实际含义——不仅可跨格式查询,而且表示本身基于完整信号,而非仅适合文本形状的信息。构建此类系统的工程难度已降至历史低点。本文附带的笔记本是真实起点,选择最接近自己数据的一个(或组合几个)开始构建吧!