开源社区

10分钟学会构建端到端的图片搜索服务

10分钟学会构建端到端的图片搜索服务

  • 发布:
  • 人气: 11
  • 评论: 0
标签:

应用介绍

  本文将介绍在没有向量数据的情况下,也可以通过OpenSearch-向量检索版快速从零搭建图像搜索服务。

  通常情况下,我们用向量数据库做向量检索的时候,需要先将图片做向量化处理以后,才能推送到向量数据库进行检索。而OpenSearch-向量检索版是一个端到端的向量检索产品方案,内置了向量化的数据处理模型,可以直接把原始的图片推送进来,由产品自动来完成向量化的步骤,相较于传统模式省去了数据向量处理环节,因此向量检索版可以更加方便的帮助实现以图搜图、以文搜图等多种图像检索。

  目前支持3种不同的数据写入方式进行图搜引擎搭建,可以根据实际情况进行选择,对于一些数据量比较大的客户,可以选择对象存储OSS的方式,关联OSS路径即可实现原始图片的快速导入,详情可点击此处进行查看,本文将选择 **API的方式 **进行演示搭建图片搜索服务。

  对象存储OSS + API:使用对象存储OSS作为全量数据来源,使用API进行增量数据推送。

  API:通过向量检索版给出的数据推送接口,将base64编码后的图片及其表数据推送到向量检索版实例中。

  商品图片准备,列举10个转化为base64编码的图片,开发者可以根据个人情况进行图片base64编码的转化。

  进入OpenSearch控制台,商品版本选择向量检索版,根据业务情况进行规格选择和购买,具体参考购买指南。

  新购买的实例,其状态为“待配置”,我们需要先完成配置后,才可正常搜索和测试。配置实例的流程:1.表基础信息→2.数据同步→3.字段配置→4.索引结构→5.确认创建

  数据更新资源数:数据更新所用资源数,每个索引默认免费提供2个4核8G的更新资源,超出免费额度的资源将产生费用,详情可参考向量检索版计费概述。

  向量检索版会根据选择的场景模板,预置相关字段,并会将全量数据来源中的字段,自动导入字段列表中。但由于在数据同步中我们选择的是API方式,所以不会同步全量数据来源中的字段,除了自动预设的字段外,我们还需要结合实际情况手动填写数据结构。下图为表基础信息的「向量:图片搜索」模板的系统预设字段,4个字段分别为id(主键)、source_image(原始图片)、source_image_vector(原图片经过内置的向量化模型处理后,生成的向量数据字段)、namespace(命名空间)。

  字段source_image高级配置中有2个必填选项,其中向量化模型选择「clip 通用图片转向量模型」。数据类型有image(path)和image(base64编码)的选项,由于本文选择的是API的方式,所以数据类型选择「image(base64编码)」。

  如果选择image(path),就需要填写OSS路径,其实就是把图片存在了OSS的文件夹里面,从oss直接导入。

  如果选了image(base64编码),则相当于需要先把图片进行一次编码,然后存在数据库中,或者直接用API方式进行传输。

  在向量管理栏找到添加数据的页面,如果仅是单条数据的添加可以选择表单模式,多条数据的添加需要选择开发者模式。

  右上角选择开发者模式,添加相应字段值(包括表名、主键、需embedding 字段,图片字段可以通过填写base64编码的方式上传),点击添加。

  可以先复制文章开头列举的base64编码进行尝试,添加完成后,当右下角的执行结果出现message: success 说明数据上传成功。

  添加必填字段,包含id、source_image(可以通过上传图片和填写base64编码的方式上传)。

  添加完内容后,点击“添加”,当执行结果出现message: success说明数据上传成功。

  点击指标监控→表指标→选择表,在此页面可查看表的具体指标数据。如果查看文档个数的话,需要确认数据写入后再进行查询(由于使用了内置模型进行向量化处理,所以数据写入需一定用时,大家可以通过自定义调节数据更新资源减少耗时)。

  进行查询测试,需要添加相应字段值,包含表名、Query类型(图片)、图片提供方式(可以通过上传图片和填写base64编码的方式上传),信息选择完毕后点击搜索。

  可在搜索结果中查看主体识别的结果,本次采用的距离类型是SquaredEuclidean(欧式距离),所以距离分越小,结果越相关。

  回到查询测试页,选择表名,query类型(图片),图片提供方式(上传图片文件),多主体识别(开启),上传图片完成后,点击搜索。

相关应用