DashVector + ModelScope 玩转多模态检索
![DashVector + ModelScope 玩转多模态检索](https://static001.geekbang.org/infoq/07/076e2b09a52d7b74729096b869b8b395.jpeg)
本教程演示如何使用向量检索服务(DashVector),结合ModelScope上的中文CLIP多模态检索模型,构建实时的"文本搜图片"的多模态检索能力。作为示例,我们采用多模态牧歌数据集作为图片语料库,用户通过输入文本来跨模态检索最相似的图片。
整体流程
![](https://static001.geekbang.org/infoq/ef/ef56638e3adb936a40cb24077d697c9a.png)
主要分为两个阶段:
图片数据 Embedding 入库。将牧歌数据集通过中文 CLIP 模型 Embedding 接口转化为高维向量,然后写入 DashVector 向量检索服务。
文本 Query 检索。使用对应的中文 CLIP 模型获取文本的 Embedding 向量,然后通过 DashVector 检索相似图片。
前提准备
1. API-KEY 准备
2. 环境准备
本教程使用的是 ModelScope 最新的 CLIP Huge模型(224分辨率),该模型使用大规模中文数据进行训练(~2 亿图文对),在中文图文检索和图像、文本的表征提取等场景表现优异。根据模型官网教程,我们提取出相关的环境依赖如下:
说明
需要提前安装 Python3.7 及以上版本,请确保相应的 python 版本
3. 数据准备
本教程使用多模态牧歌数据集的 validation 验证集作为入库的图片数据集,可以通过调用 ModelScope 的数据集接口获取。
具体步骤
说明
本教程所涉及的 your-xxx-api-key 以及 your-xxx-cluster-endpoint ,均需要替换为您自己的 API-KAY 及 CLUSTER_ENDPOINT 后,代码才能正常运行。
1. 图片数据 Embedding 入库
多模态牧歌数据集的 validation 验证集包含 30588 张多模态场景的图片数据信息,这里我们需要通过 CLIP 模型提取原始图片的 Embedding 向量入库,另外为了方便后续的图片展示,我们也将原始图片数据编码后一起入库。代码实例如下:
说明
上述代码里模型默认在 cpu 环境下运行,在 gpu 环境下会视 gpu 性能得到不同程度的性能提升。
2. 文本 Query 检索
完成上述图片数据向量化入库后,我们可以输入文本,通过同样的 CLIP Embedding 模型获取文本向量,再通过 DashVector 向量检索服务的检索接口,快速检索相似的图片了,代码示例如下:
运行上述代码,输出结果如下:
![](https://static001.geekbang.org/infoq/8e/8e7c518779bb49e46d69420770663835.png)
免费体验阿里云高性能向量检索服务:https://www.aliyun.com/product/ai/dashvector
版权声明: 本文为 InfoQ 作者【DashVector】的原创文章。
原文链接:【http://xie.infoq.cn/article/6cf3bdfde5cd2076dcec9fde9】。文章转载请联系作者。
评论