🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI
  • Home
  • Blog
  • 利用图像和文本进行多模态语义搜索

利用图像和文本进行多模态语义搜索

  • Engineering
February 03, 2025
Stefan Webb

作为人类,我们通过感官来解读世界。我们听到声音,看到图像、视频和文字,而且往往是层层叠加。我们通过这些多重模式以及它们之间的关系来理解世界。人工智能要想真正达到或超过人类的能力,就必须发展出这种同时通过多种视角理解世界的能力。

在这篇文章和随附的视频(上图)和笔记本中,我们将展示能够同时处理文本和图像的模型的最新突破。我们将通过构建一个语义搜索应用程序来展示这一点,该应用程序不仅仅是简单的关键词匹配,它还能理解用户的需求与他们正在搜索的可视化内容之间的关系。

让这个项目特别令人兴奋的是,它完全由开源工具构建:Milvus 向量数据库、HuggingFace 的机器学习库和亚马逊客户评论数据集。想想看,仅仅在十年前,构建这样一个项目还需要大量的专有资源。如今,这些功能强大的组件都是免费提供的,任何有好奇心的人都可以用创新的方式将它们结合起来。

我们的多模式搜索应用程序属于检索和 Rerankers 类型。如果您熟悉检索增强生成(RAG),那么它与之非常相似,只是最终输出的是由大型语言视觉模型(LLVM)重新排序的图像列表。用户的搜索查询包含文本和图像,目标是一组索引在向量数据库中的图像。该架构有三个步骤--索引检索Rerankers(类似于 "生成")--我们将依次进行总结。

编制索引

我们的搜索应用程序必须有要搜索的内容。在我们的案例中,我们使用的是 "亚马逊评论 2023 "数据集的一个小子集,该数据集包含来自亚马逊所有类型产品的客户评论的文本和图片。可以想象,我们正在构建的语义搜索将成为电子商务网站的有益补充。我们使用了 900 张图片,舍弃了文本,但我们注意到,只要有合适的数据库和推理部署,这本笔记本就能扩展到生产规模。

我们管道中的第一个 "魔法 "是嵌入模型的选择。我们使用的是最近开发的一种名为Visualized BGE的多模态模型,该模型能够将文本和图像联合嵌入同一空间,也可以将其中任何一个单独嵌入同一空间,在该空间中,相近的点在语义上是相似的。最近还开发了其他此类模型,例如MagicLens

上图说明:[狮子侧面的图像]加上文字 "此物的正面图 "的嵌入与不带文字的[狮子正面的图像]的嵌入很接近。文本加图像输入和纯图像输入(以及纯文本输入)都使用相同的模型。这样,模型就能理解用户的意图,即查询文本与查询图片之间的关系。

我们嵌入了 900 张没有相应文本的产品图片,并使用Milvus 将嵌入的图片存储到向量数据库中。

检索

数据库建立后,我们就可以为用户提供查询服务了。想象一下,一个用户带着这样的查询来了:"有这个的手机壳 "加上[一张豹子的图片]。也就是说,他们正在搜索带有豹纹图案的手机壳。

请注意,用户的查询文本说的是 "这个",而不是 "豹皮"。我们的 Embeddings 模型必须能够将 "this "与它所指的内容联系起来,鉴于之前的迭代模型无法处理这种开放式指令,这是一项了不起的成就。MagicLens论文给出了更多的例子。

我们将查询文本和图片联合嵌入,并对向量数据库进行相似性搜索,返回前九个点击。结果如上图所示,同时显示的还有豹子的查询图像。从图中可以看出,点击率最高的结果并不是与查询最相关的结果。第七个结果似乎是最相关的--它是一个印有豹皮图案的手机套。

生成

我们的搜索似乎失败了,因为最前面的结果不是最相关的。不过,我们可以通过 Rerankers 步骤来解决这个问题。您可能对检索项的重新排序并不陌生,这是许多 Rerankers 流程中的一个重要步骤。我们使用Phi-3 Vision作为重排模型。

我们首先要求 LLVM 生成查询图片的标题。LLVM 输出

"图片显示了一只豹子的脸部特写,重点是它的斑点皮毛和绿色眼睛"。

然后,我们输入这个标题、一张包含九个结果和查询图片的图片,并构建一个文本提示,要求模型对结果重新排序,以列表的形式给出答案,并提供选择最匹配结果的理由。

输出结果如上图所示--最相关的项目现在是最匹配的--给出的理由是

"最合适的项目是以豹子为主题的项目,它符合用户关于类似主题手机壳的查询指令"。

我们的 LLVM 重排序器能够跨图像和文本进行理解,并提高搜索结果的相关性。一个有趣的现象是,重新排序器只给出了八个结果,却丢掉了一个结果,这凸显了对护栏和结构化输出的需求。

总结

在这篇文章以及随附的视频笔记本中,我们构建了一个跨文本和图像的多模态语义搜索应用程序。嵌入模型能够将文本和图像联合或单独嵌入同一空间,基础模型能够输入文本和图像,同时生成响应的文本。重要的是,Embeddings 模型能够将用户的开放式指令意图与查询图像联系起来,并以这种方式指定用户希望结果如何与输入图像相关联。

这只是不久的将来的一个缩影。我们将看到多模态搜索、多模态理解和推理等在不同模态中的大量应用:图像、视频、音频、分子、社交网络、表格数据、时间序列,潜力无穷。

而这些系统的核心是一个向量数据库,它承载着系统的外部 "内存"。Milvus 就是一个很好的选择。它是开源的,功能齐全(请参阅本文关于 Milvus 2.5 中全文搜索的内容),并能以网络规模的流量和低于 100 毫秒的延迟高效地扩展到数十亿向量。如需了解更多信息,请访问Milvus 文档,加入我们的Discord社区,并希望在下一次非结构化数据会议上见到您。再见!

资源

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

扩展阅读