当应用需要处理多样化的数据类型时,搜索系统的复杂性会增加。结合密集向量搜索与稀疏关键词检索解决了仅依赖语义相似性的诸多局限。现代LLM应用常与多种格式的信息交互,例如图像、音频片段、视频和结构化数据,以及传统文本文件。构建能有效查询并获取这些不同模态中相关信息的搜索系统,会带来独特的难题,并需要专门的混合策略。多模态的难题将多种数据类型整合到一个搜索系统中,这比简单的拼接更进一步。主要的难点在于:表示不匹配: 如何比较文本查询与图像,或音频片段与文本描述之间的“相似性”?不同模态天然存在于不同空间,并需要独特的嵌入模型。生成能进行有意义的跨模态比较的表示,是一个根本性障碍。相关性定义: 相关性本身变得多方面。图像与文本查询相关,是因为它视觉上描绘了该理念,还是因为其关联的标题匹配,抑或两者皆是?相关性标准可很大程度上取决于所涉具体模态和用户意图。索引复杂性: 高效存储和索引源自各种模态的嵌入可能很繁重。嵌入可能具有不同的维度、统计特性或更新频率。与每个项目关联的元数据也可能因模态而异,差异很大。融合与排序: 在结果融合过程中,结合来自不同模态的相关性信号,这是一个重要的设计难题。简单地平均分数或使用标准倒数排序融合(RRF)可能并非最佳。系统应如何权衡强文本匹配与中等图像匹配的贡献?多模态混合搜索的策略处理这些难题需要调整并扩展先前讨论的混合搜索理念。以下是一些常见策略:联合嵌入空间一种有效方法是使用专门训练的模型,将多种模态投影到一个单一、共享的嵌入空间中。在这样的空间中,不同模态中相关理念的嵌入被设计为彼此接近。示例模型: 诸如CLIP(对比语言-图像预训练)之类的架构,通过在图像-字幕对的丰富数据集上训练,学习图像和文本的共享空间。类似模型也存在于其他模态组合(例如,文本-音频,图像-音频)。优点: 如果成功,这会大大简化跨模态检索。文本嵌入$e_{文本}$可使用标准距离度量(例如,余弦相似度)直接与图像嵌入$e_{图像}$进行比较,$相似度(e_{文本}, e_{图像})$。搜索过程变得类似于在此统一空间内的单模态向量搜索。注意事项: 训练或微调这些大型联合嵌入模型需要大量数据和计算资源。对齐的质量很大程度上取决于训练数据和任务。带有映射或协调的独立空间或者,您可以为每种模态使用独立的专业嵌入模型,然后设计策略来连接这些不同的空间:学习到的投影: 训练一个转换函数(例如,神经网络层)将嵌入从一个空间映射到另一个空间,尝试在语义上对齐它们。典型相关分析(CCA): 统计方法如CCA可以找到线性投影,使来自两个不同空间的嵌入之间的相关性最大化。多阶段检索: 首先在每个相关模态的索引中执行搜索,然后使用技术根据跨模态信号或关联元数据组合或重新排序候选结果。例如,根据图像与查询图像的相似性检索候选图像,然后使用其描述与文本查询组件之间的文本相似性重新排序它们。高级融合技术简单的融合方法可能需要针对多模态结果进行改进。模态加权: 为来自不同模态的分数分配不同权重,可能基于查询类型、用户上下文或经验确定的重要性。对于像“给我看红苹果的图片”这样的查询,图像模态的权重可能高于文本描述模态。学习排序(LTR): 训练一个专门的机器学习模型来执行最终的重新排序。这个LTR模型可以接收来自所有模态的特征(例如,文本相似度分数、图像相似度分数、元数据匹配、来源可信度)作为输入,并预测最终的相关性分数。这提供了最大的灵活性,但需要标注的训练数据。基于图的融合: 在图中表示多模态项目及其关系。图像及其描述可以是节点,通过边连接。搜索可以涉及遍历此图,将模态内的向量相似性与跨模态的图结构信息相结合。系统架构考量一个典型的多模态混合搜索流程可能涉及多个阶段,如下所示:digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [fontname="sans-serif", color="#868e96", fontcolor="#868e96"]; subgraph cluster_query { label = "查询输入"; style=filled; color="#e9ecef"; Query [label="多模态查询\n(例如,文本 + 图像)", shape=ellipse, style=filled, color="#a5d8ff"]; } subgraph cluster_processing { label = "模态处理与搜索"; style=filled; color="#e9ecef"; TextEmbed [label="文本嵌入\n(模型 A)", style=filled, color="#b2f2bb"]; ImageEmbed [label="图像嵌入\n(模型 B / 联合)", style=filled, color="#ffc9c9"]; TextSearch [label="文本索引搜索\n(向量 + BM25)", style=filled, color="#c0eb75"]; ImageSearch [label="图像索引搜索\n(向量)", style=filled, color="#ffa8a8"]; } subgraph cluster_fusion { label = "融合与排序"; style=filled; color="#e9ecef"; Fusion [label="结果融合\n(例如,加权RRF, LTR)", style=filled, color="#bac8ff"]; Results [label="排序后的多模态结果", shape=ellipse, style=filled, color="#74c0fc"]; } Query -> TextEmbed; Query -> ImageEmbed; TextEmbed -> TextSearch; ImageEmbed -> ImageSearch; TextSearch -> Fusion; ImageSearch -> Fusion; Fusion -> Results; }一个多模态混合搜索的流程。查询由适当的嵌入模型处理,针对相应的索引进行搜索,结果在最终展示前进行融合。评估难题评估多模态搜索系统需要仔细考量指标和真实数据。指标: 标准检索指标如Recall@K、Precision@K和NDCG需要调整。当涉及多种模态时,如何定义一个“相关”项目?相关性是否要求匹配查询中指定的所有模态?真实数据: 创建能捕捉跨模态相关性的高质量真实数据集通常很费力且特定于领域。这可能涉及人工标注员判断例如图像-文本对与多模态查询的相关性。实际实施要点向量数据库: 选择能处理异构集合的向量数据库或搜索库,允许存储具有潜在不同维度的嵌入,以及对应于每个模态的丰富、可过滤的元数据。元数据: 丰富的元数据对于连接模态通常很重要。确保图像元数据(标题、标签、EXIF数据)、音频转录或视频片段描述与各自的向量嵌入一同索引,以方便过滤和混合检索逻辑。可扩展性: 与多模态嵌入(特别是视频或高分辨率图像)相关的存储和计算成本可能很高。运用量化和高效索引等优化技术,如前几章所述,同时考量每种模态嵌入的特定特性。整合多模态能力明显扩大了LLM应用中搜索系统的范围和效用。尽管它在嵌入、索引、融合和评估方面增加了复杂性,但采用联合嵌入空间和高级排序模型等技术,能实现跨多种数据类型的有效信息检索。随着应用日益处理更丰富的媒体,掌握这些多模态考量对于构建先进的搜索体验变得非常重要。