第21回:跨越图像与文本的搜索 – 通过多模态搜索实现下一代知识管理

前言

在之前的文章中,我们主要围绕基于文本的文档搜索进行了介绍。 然而,企业知识中包含大量文本以外的内容。 产品照片、设计图纸、演示文稿的幻灯片图像、白板照片——如果这些”图像”也能被搜索到,知识利用的可能性将进一步扩展。

本文将介绍如何构建能够跨越文本和图像进行搜索的多模态搜索环境。

目标读者

  • 在搜索包含图像的文档时遇到困难的人员

  • 对向量搜索的应用感兴趣的人员

  • 希望了解多模态 AI 概念的人员

什么是多模态搜索

多模态搜索是一种能够跨越不同类型数据(文本、图像、音频等)进行搜索的技术。

例如,当您使用”红色跑车设计”这样的文本进行搜索时,概念上匹配的图像将显示在搜索结果中。 这是一种可以通过文本搜索图像,或通过图像搜索文本的机制。

CLIP 模型

多模态搜索的基础是 CLIP(Contrastive Language-Image Pre-Training)等模型。 CLIP 将文本和图像转换到同一向量空间中,从而使文本和图像之间的相似度计算成为可能。

Fess 中的多模态搜索

Fess 可以通过多模态搜索插件实现文本和图像的跨越搜索。

组件构成

多模态搜索的组件构成如下:

  1. CLIP 服务器:将文本和图像转换为向量

  2. OpenSearch:使用 KNN(K-Nearest Neighbor)搜索向量

  3. Fess:提供爬取、索引和搜索界面

设置步骤

1. 准备 CLIP 服务器

准备一台运行 CLIP 模型的服务器。 建议使用具有 GPU 的环境。

可以使用 Docker Compose 添加 CLIP 服务器。

2. 安装插件

安装 Fess 的多模态搜索插件。

3. 配置 KNN 索引

为了在 OpenSearch 中执行向量搜索,需要配置 KNN 索引设置。 向量的维度数应根据所使用的 CLIP 模型进行设置。

4. 爬取设置

将包含图像的目录和网站设置为爬取目标。 图像文件(PNG、JPEG、GIF 等)也会作为爬取目标被收集。

搜索体验

使用文本搜索图像

当您使用”产品外观照片”、”会议白板”、”设计图纸”等文本进行搜索时,概念上匹配的图像将显示在搜索结果中。

搜索结果中会显示缩略图,方便您直观地找到目标图像。

文本与图像的混合结果

在多模态搜索中,搜索结果会同时包含文本文档和图像。 使用 Rank Fusion(参见第18回)来整合文本搜索和图像搜索的结果。

应用场景

制造业:部件和产品图像搜索

在制造业中,需要管理大量的部件照片和产品图像。 通过使用”圆形金属部件”等文本进行搜索,或从某个部件的照片搜索类似部件,可以充分利用过去的设计资产。

设计团队:设计资产管理

设计团队需要管理大量的视觉资产,如标志、图标、照片素材和原型等。 由于可以使用”蓝色渐变背景”等自然语言进行搜索,因此更容易发现所需资产。

研发部门:实验数据搜索

研发部门需要管理实验结果的图表、显微镜照片和测量数据的图像。 通过使这些图像可被搜索,可以更方便地参考过去的实验数据。

部署注意事项

硬件要求

多模态搜索需要计算资源来运行 CLIP 模型。

  • 推荐:GPU 服务器(NVIDIA GPU)

  • 最低要求:可以在 CPU 上运行,但索引速度会降低

索引时间取决于模型的处理速度,因此在索引大量图像时,强烈建议使用 GPU 环境。

支持的图像格式

支持常见的图像格式(JPEG、PNG、GIF、BMP、TIFF 等)。 PDF 中的图像和办公文档中的嵌入图像的支持情况取决于爬取设置。

分阶段部署

多模态搜索可以作为现有文本搜索环境的补充进行部署。

  1. 首先针对图像较多的目录和站点进行试点部署

  2. 确认搜索质量和使用情况

  3. 逐步扩大范围

总结

本文介绍了通过多模态搜索实现图像和文本的跨越搜索。

  • 多模态搜索的概念(通过 CLIP 实现文本和图像的统一向量空间)

  • Fess 中多模态搜索的组件构成和配置

  • 使用文本搜索图像、使用图像搜索相似图像的体验

  • 制造业、设计和研发领域的应用场景

  • GPU 要求和分阶段部署方法

下一期将介绍通过搜索数据分析实现组织知识可视化。

参考资料