10分钟学会构建端到端的图片搜索服务(1):
一、购买向量检索版实例
1. 前置条件
∙ 成功注册阿里云账号并通过实名认证。
∙ 开通阿里云账号并登录控制台时,会提示先创建access key才能继续使用。
a、创建及使用应用依赖access key参数,主账号下access key参数不能为空。
b、在为主账号创建access key参数后,还可以再创建RAM子账号access key通过RAM子账号进行访问,RAM子账号赋予对应访问权限,请参考授权访问鉴权规则。(ps:子账号需要赋予AliyunSearchEngineFullAccess、AliyunSearchEngineReadOnlyAccess访问向量检索版实例的权限)。
∙ 需要用户拥有VPC环境,详情可点击此处进行查看。
2. 购买实例
进入OpenSearch控制台,商品版本选择向量检索版,根据业务情况进行规格选择和购买,具体参考购买指南。
二、配置实例
新购买的实例,其状态为“待配置”,我们需要先完成配置后,才可正常搜索和测试。
配置实例的流程:1.表基础信息→2.数据同步→3.字段配置→4.索引结构→5.确认创建
1. 表基础信息
∙ 表名称:可以自定义。
∙ 分片数:请填写不超过256的正整数, 用于提升全量构建速度、单次查询性能。
∙ 数据更新资源数:数据更新所用资源数,每个索引默认免费提供2个4核8G的更新资源,超出免费额度的资源将产生费用,详情可参考向量检索版计费概述。
∙ 场景模板:选择「向量:图片搜索」。
2. 数据同步
配置全量数据来源,这里以API数据源为例,数据源类型选择API,并点击下一步。
3. 字段配置
向量检索版会根据选择的场景模板,预置相关字段,并会将全量数据来源中的字段,自动导入字段列表中。但由于在数据同步中我们选择的是API方式,所以不会同步全量数据来源中的字段,除了自动预设的字段外,我们还需要结合实际情况手动填写数据结构。
下图为表基础信息的「向量:图片搜索」 模板的系统预设字段,4个字段分别为id(主键)、source_image(原始图片)、source_image_vector(原图片经过内置的向量化模型处理后,生成的向量数据字段)、namespace(命名空间)。
字段配置中还需要在“source_image”的高级配置进行编辑。
字段source_image高级配置中有2个必填选项,其中向量化模型选择「clip 通用图片转向量模型」。数据类型有image(path)和image(base64编码)的选项,由于本文选择的是API的方式,所以数据类型选择「image(base64编码)」。
∙ 如果选择image(path),就需要填写OSS路径,其实就是把图片存在了OSS的文件夹里面,从oss直接导入。
∙ 如果选了image(base64编码),则相当于需要先把图片进行一次编码,然后存在数据库中,或者直接用API方式进行传输。
4. 索引结构
∙ 索引名称与向量字段名称相同,包含字段中的主键字段、向量字段已自动填写完成。
∙ 向量维度、实时索引、距离类型、向量索引算法可以根据业务情况填写。
∙ 在更多高级配置 展开中也可根据情况填写。
5. 确认创建
点击确认创建,等待实例状态为“正常”后,即可进行后续的搜索和测试。
三、添加数据和查询
1. 添加数据
在向量管理栏找到添加数据的页面,如果仅是单条数据的添加可以选择表单模式,多条数据的添加需要选择开发者模式。
1.1. 开发者模式(添加多条数据)
右上角选择开发者模式,添加相应字段值(包括表名、主键、需embedding 字段,图片字段可以通过填写base64编码的方式上传),点击添加。
可以先复制文章开头列举的base64编码进行尝试,添加完成后,当右下角的执行结果出现"message": "success" 说明数据上传成功。
1.2. 表单模式(仅添加单条数据)
添加必填字段,包含id、source_image(可以通过上传图片和填写base64编码的方式上传)。
添加完内容后,点击“添加”,当执行结果出现"message": "success"说明数据上传成功。
2. 观测数据写入
点击指标监控→表指标→选择表,在此页面可查看表的具体指标数据。
如果查看文档个数的话,需要确认数据写入后再进行查询(由于使用了内置模型进行向量化处理,所以数据写入需一定用时,大家可以通过自定义调节数据更新资源减少耗时)。
3. 查询测试
数据上传成功后,就可以在 向量管理→查询测试 页面进行查询,查询测试也同时支持表单模式/开发者模式两种。
举例使用表单模式进行查询测试,需要添加相应字段值,包含表名、Query类型(图片)、图片提供方式(可以通过上传图片和填写base64编码的方式上传),信息选择完毕后点击搜索。
参考:图片/base64编码
可在搜索结果中查看主体识别的结果,本次采用的距离类型是SquaredEuclidean(欧式距离),所以距离分越小,结果越相关。
4. 多主体识别查询
回到查询测试页,选择表名,query类型(图片),图片提供方式(上传图片文件),多主体识别(开启),上传图片完成后,点击搜索。
多主体识别的结果,可以在搜索结果中查看,同时点击识别框序号,也可以切换不同主体搜索。