本文将介绍如何使用 阿里云 OpenSearch 向量检索版结合 AI 搜索开放平台的模型能力,帮助客户自动完成图片的识别与向量化处理,一站式搭建图片搜索服务。
阿里云 OpenSearch 向量检索版结合 AI 搜索开放平台,提供了一套完整的端到端解决方案。企业只需提供原始图片数据,后续的向量化处理、索引构建和相似度查询等操作均可在阿里云 OpenSearch 产品内部自动完成,客户无需编写代码,轻松实现高效的图片搜索服务。
整套方案非常适用于客户在没有向量数据、仅有原始图片数据的情况下,快速搭建以图搜图、以文搜图服务;在方案中,还能够识别图片中的具体文字内容,支持客户通过搜索图片中的文本返回图片结果。
背景
在数字化时代,图片搜索能力的需求日益增加。随着AI技术的发展,各行各业纷纷引入图片搜索能力,常见的应用场景包括:电商的拍照搜索、素材网站的相似图片搜索以及智能驾驶的模型训练等等。
图片搜索:
而图片是一种典型的非结构化数据,它无法用 excel 结构表示与管理,也无法使用传统的分词技术来实现搜索匹配。
企业想实现图片搜索的的能力,需要用到一种不同于传统分词匹配搜索方案的技术——向量搜索。
向量检索:
向量检索是一种将物理世界产生的非结构化数据(如图片),转化为结构化的多维向量数据,用这些向量数据标识实体和实体间的关系,再通过计算向量之间的距离找到相似实体的方法。其中,将原始数据(如图片、文本)转化为多维向量数据的过程,被成为向量的 embedding 过程。
实际中会遇到的问题
- 技术能力不足:企业内部缺乏将图片转化为向量的专业技术人员,难以实现有效的图片搜索。
- 传统搜索效果不佳:仅依赖视觉相似度进行图片查询效果有限,尤其在仓储行业,图片往往相似,难以满足精准查询的需求。
- 系统维护压力大:随着数据量的增长,企业面临着维护搜索系统稳定性和控制成本的双重挑战。
搭建完整的图搜服务的实施步骤
- 数据预处理:图片数据向量化
- 构建向量索引
- 向量相查询与结果返回
步骤在实际搭建中,会存在一些不可忽视的问题,比如:
- 企业是否有足够的算法研发人员,进行图片数据的向量化预处理,并保障模型效果?
- 企业是否有经验丰富的向量搜索研发人员,完成向量距离计算的参数调整、保障搜索效果?
- 面对数据量逐渐增长,企业能否维护搜索系统的稳定性,在保障搜索性能的同时降低成本?
场景举例
- 背景:某个从事装卸搬运仓储的企业,需要以图搜图快速查询相似货品,企业只有各仓库工人拍摄的货品照片、包裹id等信息,期望快速搭建图搜服务。
- 客户痛点:
- 企业不具备将图片转化为向量的技术能力
- 传统的图像搜索只查询图片之间的视觉相似度,但仓储企业的图片类似(都是纸箱图片),仅通过图像查询的效果较差,需引入图片上具体的文本查询(纸箱上写的货品文本信息)
方案中用到的产品
- AI搜索开放平台
- 基于阿里云 OpenSearch 搜索领域多年累积经验的平台产品,对客提供优质的组件化服务。
- 在本方案中,AI 搜索开放平台提供图片内容 OCR 识别模型服务、向量化模型服务。
- 阿里云 OpenSearch 向量检索版
- 阿里巴巴自研的大规模分布式向量检索引擎产品,为客户提供性能强大、成本低廉的向量检索服务。
- 在本方案中,阿里云 OpenSearch 向量检索版提供向量检索引擎,承接数据导入、索引构建、提供搜索服务。
方案图示
操作手册
前置条件
- 成功注册阿里云账号并通过实名认证。
开通阿里云账号并登录控制台时,会提示先创建 access key 才能继续使用。
a、创建及使用应用依赖 access key 参数,主账号下 access key 参数不能为空。
b、在为主账号创建 access key 参数后,还可以再创建 RAM 子账号 access key 通过 RAM 子账号进行访问,RAM 子账号赋予对应访问权限,请参考授权访问鉴权规则。(ps:子账号需要赋予AliyunSearchEngineFullAccess、AliyunSearchEngineReadOnlyAccess访问向量检索版实例的权限)。
- 需要用户拥有 VPC 环境,详情可点击此处进行查看。
步骤一:购买实例和开通服务
1. 向量检索版实例
先进入阿里云 OpenSearch 控制台,商品版本选择向量检索版,根据业务情况进行规格选择和购买,具体参考购买指南。
2. AI搜索开放平台服务
进入阿里云 OpenSearch控制台,选择上海区域,在左上角的商品版本选择 AI 搜索开放平台,在服务广场页点击立即开通,完成 AI 搜索开放平台服务的开通和工作空间创建,具体开通步骤可参考开通指南。
在左侧导航栏中的找到 API Keys,开通并获得AI搜索开放平台的 API Key和 API 域名,具体步骤可参考开通指南。
步骤二:配置向量检索版实例
在 阿里云 OpenSearch 向量检索版的实例列表页。
找到新购的向量检索版实例,其状态为“待配置”,在完成实例配置后,就可正常搜索和测试。
配置实例共分为 5 个步骤 :(1.表基础信息 → 2.数据同步 → 3.字段配置 → 4.索引结构 → 5.确认创建)
1. 表基础信息
在实例列表页点击配置后,进入表基础信息页。
共4个必填项,需要分别对(表名称、数据分片数、数据更新资源数、场景模板)进行设置,在场景模板里请选择「向量:图片搜索」 模板,设置完成后点击下一步。
配置说明:
- 表名称: 可以自定义。
- 数据分片数:请填写不超过256的正整数, 用于提升全量构建速度、单次查询性能。
- 数据更新资源数:数据更新所用资源数,每个索引默认免费提供2个4核8G的更新资源,超出免费额度的资源将产生费用,详情可参考向量检索版计费概述。
- 场景模板:共3个模板可供选择,包含(1.通用模板、2.向量:图片搜索模板、3.向量:文本语义搜索模板),由于本次是搭建图像搜索服务的演示,所以选择的「向量:图片搜索」模板。
2. 数据同步
配置全量数据来源,这里可以根据业务情况进行选择,本次演示以 API方式为例,勾选后点击下一步。
3. 字段配置
向量检索版会根据选择的场景模板,预置相关字段,并会将全量数据来源中的字段,自动导入字段列表中。
但由于在 数据同步中我们选择的是 API方式,所以不会同步全量数据来源中的字段,除了自动预设的字段外,我们还可以结合业务情况手动填写字段。下图为「向量:图片搜索」 模板场景的 4 个预设字段。
字段含义:
- id(主键)
- source_image(源图片)
- namespace(命名空间)
- source_image_vector(源图片向量)
在字段 source_image 中找到去配置,并点击进入字段 source_image 数据预处理配置页。
字段 source_image 数据预处理配置页:
- 数据来源:有 OSS 对象存储和 Base64 编码的两种数据类型选项,本次演示选择 Base64 编码。
- OSS 对象存储:需要填写 OSS 路径,其实就是将图片存在了 OSS 的文件夹里面,从 OSS 直接导入。
- Base64 编码:相当于需要先将图片进行一次编码,然后存在数据库中,或者直接用API方式进行传输。
- 预处理模板:会根据要进行预处理的数据类型(文本或图片)而展示不同模板,由于字段的数据是图片类型,所以此时预处理模板展示的分别是(1.图片向量化、2. OCR 图片文字识别、3. OCR 图片文字识别+图片向量化)3种模板。
- 服务列表:
- 选定预处理模板后,自动出现模板下的服务列表,展示该模版下所用到的模型种类
- 可选的模型有两个来源:
内置模型:模型种类与数量较少,可免费调用
- AI 平台 OCR 图片文字识别/通用文本向量服务
OCR 图片文字识别:针对架构图、分析图表等图片数据,AI 搜索开放平台提供图片内容理解服务,可基于多模态大模型对图片内容进行解析理解以及文字识别,也可基于 OCR 能力对图片文字进行识别,将文字信息提取出来,用于图片检索及问答等场景。
- 文本向量化:提供将文本数据转化为稠密向量形式表达的服务,支持多款不同语言、输入长度、输出维度的文本向量模型,可用于信息检索、文本分类、相似性比较等场景。
- 生成字段:原始图片数据经过模型处理后,会被自动转化为其他格式,生成新的字段内容
embedding 处理类的服务,默认必须生成字段。
- ocr 服务可选是否生成字段。
- 接口调用配置:为了成功访问 AI 搜索开放平台,需要完成 工作空间、API Key、连接域名的设置。
完成字段 source_image 数据预处理配置页设置后,返回到字段配置页,原先预设字段中的source_image_vector(源图片向量)会被替换掉,自动更新两个的新预设字段,确认字段设置信息无误后,点击下一步进入索引结构页。
- source_image_ocr_vector(源图片上的文本信息向量)
- source_image_vector(源图片向量)
4. 索引结构
以开头企业的案例为例,本次索引构建需要分别对图片向量化索引、图片中文本的向量化索引进行配置,如果有多个向量字段,就需要去建多个向量索引。
4.1. 图片向量索引
在索引结构页面,进行图片向量索引配置。
- 索引名称可自定义。
- 主键字段已自动填写完成。
- 勾选好创建的向量字段。
- 向量维度、实时索引、距离类型、向量索引算法可以根据业务情况填写。
向量索引算法:
4.2. 图片中的文本向量索引
点击新增向量索引,进行新的向量索引创建。
完成图片向量索引和文本向量索引配置以后,就可以点击下一步,进入最后的确认创建页面。
5. 确认创建
点击 确认创建,完成后还需等待2分钟,返回到 实例列表页,待实例状态为“ 正常”后,即可进行后续的搜索和测试。
步骤三:添加数据和查询
1. 添加数据
进入实例配置页,在左侧导航栏的向量管理找到添加数据,此时我们需要先进行数据的添加,如果仅是单条数据的添加可以选择“表单模式”,多条数据的添加则选择“开发者模式”。
1.1. 开发者模式(添加多条数据)
- 选择开发者模式和表名。
- 添加数据,共3个必填项(1. id/主键、2. source_image/需 embedding字段、3. namespace/命名空间)
- 添加完数据后,点击添加,右侧提示 "message": "success" ,就代表数据添加成功。
1.2. 表单模式(仅添加单条数据)
- 先在右上角选择表单模式,之后选择表名。
- 对id、source_image、2项进行配置,在 source_image 项中可以选择图片或者 base64 编码方式进行添加。
- 内容添加完成后,点击“添加”,当执行结果出现 "message": "success" 说明数据上传成功。
2. 查询测试(表单模式)
在左侧导航栏找到向量管理的查询测试 ,查询测试同时支持表单模式和开发者模式,本次以表单模式为例,进行以图搜图和文本搜图的演示。
2.1. 以图搜图
- 选择表单模式、选好对应的表名和索引名称。
- Query 类型选择图片(可选类型,包含向量/图片/文本)。
- 图片提供方式选择上传图片文件(可选方式,包含上传图片文件/Base64编码),上传完成后,点击搜索,就能在搜索结果栏查看结果了。
- 由于本次采用的距离类型是欧式距离(SquareEuclidean),所以距离分数越小,表示搜索的内容就越相近。
2.2. 文本搜图
- 完成对表单模式、表名、索引名称的选择。
- Query 类型需要选择文本。
- 举例在文本内输入“XXX”的内容,输入完成后,点击搜索。
通过结合 阿里云 OpenSearch 向量检索版与 AI 搜索开放平台的强大能力,企业能够轻松搭建高效的图片搜索服务,迅速解决传统图片查询中的技术难题与效率瓶颈。该方案不仅降低了技术门槛,使得没有专业技术团队的企业也能快速实现以图搜图和以文搜图的功能,还通过智能化的向量处理与索引构建,提升了查询的准确性与响应速度。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。