在企业应用中,大量的数据以复杂的多模形态而存在,所以构建一个企业级的 AI 搜索或者 RAG(检索增强生成)应用时,多模态数据特别是图像数据的索引与检索就是一个无法回避也是较复杂的问题,而借助嵌入向量的语义检索是常见方法。本文将探讨在广为所知的文本嵌入基础上,如何借助更强大的多模态嵌入,更简洁的组合多形态的企业信息,实现跨模态的检索应用。
文本嵌入的问题与不足
当前有一些针对 RAG 应用中多模态内容的处理方法,即:组合使用文本嵌入模型与多模态视觉大模型(VLM)。借助视觉大模型将图片做'文本化',生成图片的描述、摘要甚至关联的上下文,再借助文本嵌入模型实现这些信息的语义检索。大致的处理流程如下:
[图示:文档解析工具与视觉大模型将图片提取并理解成文本]
- 借助文档解析工具与视觉大模型将图片提取并理解成文本
- 采用与文本处理相同的方式对其进行嵌入并存入向量空间
- 在生成阶段通过文本进行语义检索,获得关联上下文并输入 LLM
- 也可以更进一步的关联检索出原始图片并输入多模态 LLM 进行生成
这里的解决方案本质上仍然是文本到文本的语义检索,其问题是:
索引过程较为繁琐,性能较差,成本较高
由于需要借助 VLM 实现多模态内容的理解与'文本化',如识别图片文字、生成内容摘要、甚至生成图片相关的上下文等,导致索引过程性能较低,且 VLM 的使用成本一般较高。
容易产生语义损失与偏离,检索精度不足
尽管多模态视觉大模型得到了长足的进步,但在将图片做'文本化'的过程中,仍可能存在一定的语义损失与偏离(受到图片质量、类型、甚至提示词的影响),导致后续的检索精度降低。
无法支持文本到图像、图像到图像的混合检索
这种方案在检索阶段是一种文本到文本的语义检索,而非直接将输入文本与图像连接(当然你可以借助元数据关联出原始图像),所以更无法支持图像到图像的检索。但在实际企业应用中往往存在这样的应用场景:
- 上传自己喜欢的商品照片,检索外观相似的产品及其详细信息
- 上传报错的截屏图片,在知识库中检索类似的错误及其解决方法
- 用文字描述产品特征而非产品名称,以搜索产品并给出介绍
这些场景在现有的方案中无法得到有效的支持。
多模态嵌入模型
文本嵌入已经被普遍应用于大量的 AI 应用中,但它们的问题是无法处理图像数据。一种可行的解决方案是借助于逐渐成熟的多模态嵌入模型(Multimodal Embedding Model),能够直接对文字与图像生成嵌入,并在单一的向量库/向量空间中保存生成的嵌入向量数据:
[图示:多模态嵌入模型统一处理文本与图像]
这里的主要收益包括:
**更简单且直接的将多模态内容中的信息向量化,有更高的性能与更低的成本。**这有助于提取企业内部保存在图像中的大量信息的价值,可用来快速准确的检索多模态资产,如分析图表、产品图片、设计文档等,对于构建企业智能搜索或者 RAG 应用有重要意义。
在单一向量空间保存多种模态的嵌入,你无需在不同的库中保存不同模态的数据,简化了集成的复杂性。而在检索时,也无需考虑特定的模态,直接考虑数据背后的语义即可。
在 RAG 应用中,对知识库中图片信息的处理流程更简洁,有助于提高后续语义检索的精度与相关度。通过提供更相关的上下文(包括检索出的文本或图片内容)给 LLM,可以提高响应质量。
**支持更强大的混合模态搜索,而不再局限在文本到文本的搜索,更可以实现文本到图像或图像到图像的检索。**现在你可以更方便的允许客户使用产品特征或照片作为输入,以获得产品的全面信息。
基于多模态嵌入的 RAG 实例
现在,我们将尝试创建一个实际用例:**借助于多模态的嵌入模型,实现一个基于多模态知识的 RAG 应用。**总体流程如下:
[图示:多模态 RAG 应用总体流程]
用例将要展示的步骤包括:
**1. 解析输入文档并借助多模态嵌入模型做嵌入与索引。**核心方法与工具:
- 使用LlamaIndex 的 Llama-parse解析输入的文档
- 使用Cohere 的 embed-multilingual-v3.0模型做多模态嵌入
- 使用Qdrant作为存放文本与图形统一嵌入的向量数据库
2. 进行多模态的检索测试:
- 文本到图片的检索
- 图像到图像的检索


