解决方案:免费体验AnalyticDB PostgreSQL版以文搜图
本文为您介绍在实际的电商业务中,通过将商品图片集合的向量化结果存储在云原生数据仓库AnalyticDB PostgreSQL版向量检索引擎中,实现以文搜图的高效准确检索。
背景信息
在现实世界中,绝大多数的数据都是以非结构化数据的形式存在,如图片,音频,视频,文本等。这些非结构化数据随着智慧城市、短视频、商品个性化推荐、视觉商品搜索等应用的出现而爆发式增长。为了能够处理这些非结构化数据,通常会使用人工智能技术提取这些非结构化数据的特征,并将其转化为特征向量,再对这些特征向量进行分析和检索以实现对非结构化数据的处理。通过构建云原生数据仓库AnalyticDB PostgreSQL版向量检索引擎和中文CLIP模型组成以文搜图的方案体验,实现高性能图文多模态检索,从而体验向量检索在业务场景的能力和高性能。
多模态检索在电商场景中扮演重要的角色,是满足用户需求、促成点击交易不可缺少的一环。 图文检索场景中,通过自然语言形式的检索,从给定的商品图片池中检索出相关图片,是衡量模型多模态理解与匹配的能力。
使用场景
通过AnalyticDB PostgreSQL版向量分析,您可以非常容易地搭建各种智能化应用。
以文搜图服务,即通过文字检索图片的应用服务。
视频检索服务,即通过视频中的某些帧图片进行视频图片检索。
声纹检索服务,即通过音频匹配音频的应用服务。
推荐系统服务,即通过用户特征实现推荐匹配的功能。
基于语义的文本检索和推荐,通过文本检索近似文本。
问答机器人,通过与大模型结合搭建高效的问答机器人服务。
文件去重,通过文件指纹特征来去除重复文件。
前提条件
AnalyticDB PostgreSQL版实例资源类型为存储弹性模式。
注意事项
本方案采用预置数据集的方式进行以文搜图的方案体验,不支持通过上传自有图片进行搜索体验。预置数据集详情,请参见数据集。
在释放AnalyticDB PostgreSQL版实例时,AnalyticDB PostgreSQL版创建的安全组无法释放,需要在实例释放6个小时后释放安全组。即通过本解决方案创建的资源在一键释放后,在ECS上会有一个安全组的残留。
说明残留安全组不会带来业务影响,本方案涉及到的云资源已经释放,您可以在后续合适的时间(即6个小时后)登录ECS控制台删除该安全组。
费用
在体验以文搜图解决方案,进行一键部署资源时,系统会根据自定义购买的ECS和AnalyticDB PostgreSQL版的资源和规格产生费用。
具体费用以控制台提示为准。
检索架构
为了建立图像和自然语言的联系,本解决方案采用CLIP模型对文本图片编码。CLIP模型是一种基于自然语言处理和计算机视觉的神经网络模型,可以同时理解文本和图像,并在二者之间建立联系。
在以文搜图方案中,CLIP模型作用主要是文本和图像的匹配。CLIP模型可以将文本和图像进行编码,并计算它们之间的相似度。该相似度可以用来评估一个图像是否与输入的文本描述相匹配。在以文搜图中,用户可以输入文本描述,CLIP模型自动匹配相关的图像。
本解决⽅案将基于AnalyticDB PostgreSQL版的向量检索引擎,实现⽂本向量到图⽚向量的快速检索。
向量数据集,表结构如下:
CREATE TABLE IF NOT EXISTS public.text_search_graphic ( id INTEGER NOT NULL, path TEXT, image_vector REAL[], PRIMARY KEY(id) ) DISTRIBUTED BY(id); ALTER TABLE public.text_search_graphic ALTER COLUMN image_vector SET STORAGE PLAIN;
向量索引结构如下:
CREATE INDEX ON public.text_search_graphic USING ann (image_vector) WITH (dim = '1000', hnsw_m = '100', pq_enable='0');
使⽤如下SQL语句完成对⽂本向量的最近邻查询:
SELECT id, path, l2_distance({image_vector}, Array{text_embedding}::real[]) AS similarity FROM public.text_search_graphic ORDER BY {image_vector} <-> Array{text_embedding}::real[] LIMIT {top_k};
其中
image_vector
为存储向量数据的列名,text_embedding
为 ⽂本的编码向量。l2_distance
函数计算图像向量与⽂本描述向量的欧式距离,并重命名为similarity
列。该SQL按照图像向量与⽂本描述向量的距离进⾏排序,以便将相似的图像放在前 ⾯,并返回最相似的top_k
张图像。
操作步骤
操作步骤
部署资源。
登录瑶池数据库控制台。
单击DB+AI体验馆。
在DB+AI体验馆页面,单击以文搜图卡片中的开始体验。
在页面右下角,单击一键部署。
在部署资源页面,配置如下参数。
参数
说明
示例
地域
待创建资源(ECS实例、AnalyticDB PostgreSQL实例)所在的地域。按需选择,可选择杭州和北京。
杭州
可用区
待创建资源(ECS实例、AnalyticDB PostgreSQL实例)所在的可用区。按需选择。
可用区-J
ecs云服务器
账号密码
ECS实例密码。
Test@******
实例规格
ECS实例规格。可按需选择。
4核15GB
AnalyticDB PostgreSQL数据库
数据库账号
AnalyticDB PostgreSQL实例的账号,固定为demouser。
demouser
账号密码
AnalyticDB PostgreSQL实例的账号的密码。
Test@******
实例规格
AnalyticDB PostgreSQL实例的,固定为4核32GB。
4核32GB
环境配置
WebServer IP白名单
WebUI效果体验页面访问IP白名单。
如果希望开放全部IP,可设置为0.0.0.0/0(不建议)。
建议设置为本机公网IP地址,可通过浏览器访问ipconfig.me、myip.ipip.net获取本机公网IP地址。
127.X.X.X
单击开通资源。
页面会显示资源部署进度,等待一段时间后,页面中会提示部署完成。
开始体验。
单击查看详情,进入以文搜图Web页面。
选择相似度算法,包含欧式距离、内积距离和余弦相似度。
输入提问示例或设置自定义提问。
重要图片集合范围仅覆盖服装、家居、电子等领域,输入/选择提问示例仅支持提问图片集合包含的商品。
选择检索方式,近似检索或精确检索。
说明了解更多近似检索或精确检索的区别,请参见向量检索。
单击检索图标。
释放资源。
在资源部署页的左侧,单击释放资源前的图标。
在页面上方,单击释放资源。
在弹出的对话框中确认信息后,单击一键释放。
此时,页面将显示资源释放中,您可以在页面中单击ROS资源栈控制台的链接查看详细进度。
当资源栈信息页签中显示状态为删除成功时,表示资源已经释放完成。