DashVector向量数据库 + ModelScope 大模型玩转多模态检索

​ 本文主要介绍通过DashVector和ModelScope中的Chinese Clip模型实现文搜图、图搜图等功能,同时结合DashText SDK实现sparse vector+dense vector混合检索,熟悉sparse vector的使用方法,提高检索效率。

1 准备工作

1.1 基本概念

  1. Chinese Clip:为CLIP模型的中文版本,使用大规模中文数据进行训练(~2亿图文对),可用于图文检索和图像、文本的表征提取,应用于搜索、推荐等应用场景。
  2. DashVector:向量检索服务基于阿里云自研的向量引擎 Proxima 内核,提供具备水平拓展、全托管、云原生的高效向量检索服务。向量检索服务将强大的向量管理、查询等能力,通过简洁易用的 SDK/API 接口透出,方便在大模型知识库搭建、多模态 AI 搜索等多种应用场景上集成。
  3. MUGE数据集:MUGE(牧歌,Multimodal Understanding and Generation Evaluation)是业界首个大规模中文多模态评测基准,由达摩院联合浙江大学、阿里云天池平台联合发布,中国计算机学会计算机视觉专委会(CCF-CV专委)协助推出。目前包括:包含多模态理解与生成任务在内的多模态评测基准,其中包括图像描述、图文检索以及基于文本的图像生成。未来我们将公布更多任务及数据。 · 公开的评测榜单,帮助研究人员评估模型和追踪进展。 MUGE旨在推动多模态表示学习进展,尤其关注多模态预训练。具备多模态理解和生成能力的模型均可以参加此评测,欢迎各位与我们共同推动多模态领域发展。
  4. DashText:是向量检索服务DashVector推荐使用的稀疏向量编码器(Sparse Vector Encoder),DashText可通过BM25算法将原始文本转换为稀疏向量(Sparse Vector)表达,通过DashText可大幅度简化使用DashVector关键词感知检索能力。

1.2 准备工作

  1. 获取DashVector的API-KEY。
  2. 申请DashVector测试实例,DashVector提供免费试用实例,可以薅一波。详情请见:开通向量检索服务_向量检索服务(VRS)-阿里云帮助中心
  3. 获取DashVector实例的endpoint,endpoint用于访问DashVector具体的实例。
  4. 安装DashVector、DashText、ModelScope的SDK
pip install dashvector
pip install dashtext
pip install modelscope

由于安装ModelScope SDK需要一些依赖,继续安装,安装的时间有点长,请耐心等待~~~~~

pip install decord
pip install torch torchvision opencv-python timm librosa fairseq transformers unicodedata2 zhconv rapidfuzz

由于本教程中,会使用DashText的sdk生成稀疏向量,生成稀疏向量过程中会先下载一个词包,下载过程比较长。所以可以预先下载。

wget https://dashvector-data.oss-cn-beijing.aliyuncs.com/public/sparsevector/bm25_zh_default.json

好啦,SDK和依赖都安装完了,下面简单介绍一下多模态搜索的过程。

1.3 多模态搜索过程

  1. 多模态搜索分为两个过程,即索引过程和搜索过程。
  2. 索引过程:本教程在索引过程中,使用MUGE数据集,数据格式如下。只需要对MUGE数据集中的图片和文本提取特征,然后将特征插入到DashVector中,就完成了索引过程。
[{
    "query_id": "54372",
    "query": "金属产品打印",
    "image_id": "813904",
    "image": <PIL.PngImagePlugin.PngImageFile image mode=RGB size=224x224 at 0x7F8EB1F39DB0>
},
{
    "query_id": "78633",
    "query": "夹棉帽子",
    "image_id": "749842",
    "image": <PIL.PngImagePlugin.PngImageFile image mode=RGB size=224x224 at 0x7F8EB0AFFF70>
}]

3.搜索过程:通过对输入的文本或者图片,提取特征,并通过特征在DashVector中已经索引的向量中进行相似向量查询,并将查询后的结果解析成可视化的图片和文本,即完成了搜索过程。详情请看下图。​

2 创建DashVector Collection

from dashvector import Client


# 如下填写您在1.2 准备工作中获取的DashVector API-KEY
DASHVECTOR_API_KEY = '{YOUR DashVector API-KEY}'
# 如下填写您在1.2 准备工作中获取的DashVector中Cluster中的Endpoint
DASHVECTOR_END_POINT='{YOUR DashVector Endpoint}'

# 初始化DashVector 的client
client = Client(api_key=DASHVECTOR_API_KEY, endpoint=DASHVECTOR_END_POINT)

response = client.create(
    # Collection的名称,名称可自定义。这里暂时定义为:ImageTextSearch
    name='ImageTextSearch',
    # 创建Collection的维度,注意一定是1024维。因为后面我们会使用Chinese Clip模型进行embedding,Chinese Clip模型的输出维度是1024维。
    dimension=1024,
    # 距离度量方式一定为dotproduct,因为稀疏向量只支持dotproduc这种度量方式。
    metric='dotproduct',
    dtype=float,
    # 定义schema,通过schema可以定义Collection中包含哪些字段,以及字段的类型,以便实现更快速的搜索。这里定义了image_id、query和query_id三个schema。
  # 关于Schema的详细使用请参考:https://help.aliyun.com/document_detail/2510228.html
    fields_schema={'image_id': int, 'query': str, 'query_id': int}
)

print(response)

好啦,Collection创建成功了。

3 图片和文本索引

  1. 图片和文本插入,由于涉及到图片特征提取,所以速度会有点慢,建议使用GPU进行特征提取。
  2. 向量插入后,就可以在DashVector控制台看到向量啦!

4 图片和文本搜索

  1. 图片插入成功后,即可进行图片和文本的跨模态搜索了,同样由于搜索过程中,涉及到图片特征提取,建议使用GPU进行。
  2. 搜索结果出来啦!

附录

  1. github地址:https://github.com/dashscope/dash-cookbook/blob/main/examples/MultimodalSearchWithDashVector/README.md
  2. colab地址:https://colab.research.google.com/drive/1uFzzkbKWPifLaGVNnVj369b0SbErio9Q​
#大数据##向量检索##数据库#
全部评论
base南京,机会多多
点赞 回复 分享
发布于 09-03 20:15 贵州

相关推荐

真得说我这辈子也太好命了!居然能接连遇到俩神仙领导,简直是职场开挂级的幸运!第一任领导是我的职场引路人,真的把我护得明明白白!有好项目、优质客户,他永远第一个想到我,从来不会因为我资历最浅、职级最低就把我晾在一边。碰到那种蛮不讲理的离谱客户,他不只会站出来给我撑腰,还会耐下心帮我捋清楚情况、想解决办法;要是有部门同事敢欺负我,他立马就站出来替我出头,硬生生把那些歪心思都掐灭了,到后来没人敢再给我穿小鞋。后来我被他的上级(也就是我第二任领导)看中,相当于变相高升,他不光没半点不舍,还拍着胸脯说&nbsp;“我永远是你的底气,新岗位要是待得不开心,随时回我这儿来”。结果我刚去新环境真就受了委屈,他知道后直接明着问&nbsp;“谁胆子这么大,敢给我之前的人气受”,这话一出来,谁还敢造次啊!第二任领导更绝,是公司能排进前三的大领导,却把我当亲侄子一样疼!不管是商务饭局还是应酬,他从来不会让我喝酒,全程把我护得严严实实,就嘱咐我&nbsp;“放开吃,吃高兴就行”。真有人不长眼敢来灌我酒,他当场就黑脸,直接怼回去&nbsp;“我的人你也敢灌?”,他不光护着我,还真心实意带我成长,会跟我聊职场规则、人情世故,甚至教我那些行业里没人明说的潜规则,用他自己的资源和能量帮我避开了好多坑,少走了不知道多少弯路。工作上遇到搞不定的事,他一句话就能帮我摆平;有人敢欺负我,他照样第一时间站出来替我出头。他还会帮我做长远的职业规划,甚至主动跟相关部门打招呼为我铺路。私下里更没话说,会让我帮他做些私人小事(感觉是把我当自己人),记得我生日,还专门给我办生日派对、送礼物,甚至会帮我留意身边的异性,跟我分析哪个更适合进一步发展。有他在,我在公司里完全不用怕任何人,那种&nbsp;“背后有人”&nbsp;的绝对底气,真的太踏实了!
你想跟着什么样领导?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务