本文介绍如何基于Lindorm标量、全文、向量融合检索以及在线推理等多模能力,快速搭建图片检索服务,实现以文搜图和以图搜图功能。
背景介绍
在自动驾驶、AIGC、多模态大模型等领域的快速发展下,图片检索的需求日益增长。无论是从海量图库中筛选高质量数据集用于模型训练,还是通过互联网图片搜索提升生成内容的质量,智能图片检索都成为关键环节。
本文将为您介绍一种基于Lindorm多模态数据库的智能搜索方案,能够有效解决以下核心问题:
高质量召回:结合标量、全文、向量检索以及AI多模态模型的能力,实现图片、文本和特征的精准匹配,大幅提升检索效果。
高效成本控制:针对海量图片的存储与检索需求,提供高性价比的解决方案,显著降低检索成本。
弹性扩展能力:支持秒级弹性扩展,轻松应对数据量快速增长的场景。
通过本方案,您可以快速构建高性能、低成本的图片检索服务,存储计算分离架构可以做到秒级弹性,满足业务对高质量图片检索的需求。
方案架构
本文将通过Python代码演示如何基于Lindorm标量、全文、向量融合检索以及在线推理能力,帮您快速构建图片检索服务。
步骤一:开通Lindorm多模能力
登录Lindorm管理控制台。
单击页面左上角的创建。
在Lindorm售卖页面,设置以下配置项:
单击立即购买,并根据售卖页的指引,完成支付。
步骤二:配置白名单
将客户端IP添加至Lindorm白名单。如何添加,请参见设置白名单。
步骤三:下载代码
请下载完整代码示例multimodalRetrieval,以便在后续步骤中配置和构建图片检索业务。
步骤四:环境配置
运行环境
已安装Python环境,要求安装Python 3.10及以上版本。
安装依赖
pip3 install -r requirements.txt
配置Lindorm连接地址
在已下载代码中的env脚本里配置Lindorm各引擎的连接地址。连接地址获取方法请参见查看连接地址。
大模型推理依赖百炼,需要配置百炼的API Key。API Key获取方法请参见获取API Key。
# AI host(配置AI引擎连接地址)
AI_HOST="ld-bp17j28j2y7pm****-proxy-ai-pub.lindorm.aliyuncs.com"
AI_PORT="9002"
# Search host(配置搜索引擎连接地址)
SEARCH_HOST="ld-bp17j28j2y7pm****-proxy-search-pub.lindorm.aliyuncs.com"
SEARCH_PORT="30070"
# Lindorm user password(配置Lindorm用户密码)
LD_USER="root"
LD_PASSWORD="test****"
# 返回结果的最大数量
SEARCH_TOP_K="9"
# 配置百炼的API Key
DASHSCOPE_API_KEY="sk-****"
# 模型名称固定值
LD_VL_MODEL="bge_visual0"
LD_TEXT_MODEL="bge_m3_model"
安装Jupyter Notebook
安装Jupyter。
pip3 install jupyter
生成配置文件
~/.jupyter/jupyter_notebook_config.py
。jupyter notebook --generate-config
获取要设置访问Jupyter的密码 。
from passlib.hash import argon2 print(argon2.hash('Vector123'))
输出密码哈希值,用于Jupyter Notebook的密码配置。输出示例如下:
$argon2id$v=19$m=65536,t=3,p=4$4TyndM75H8N4b+291xqjdA$n0QSxlv/uCLjGR0TX/jbD/XFlEu9BzQGI1b2Mcu6gxg
使用
vim ~/.jupyter/jupyter_notebook_config.py
命令打开并编辑配置文件。#文件最后几行加上如下配置 c.NotebookApp.ip = '*' # 笔记本的默认打开目录, 自行设置 # 笔记本启动后是否打开浏览器, 设为 False即可 c.NotebookApp.open_browser = False # 默认访问端口, 可自行修改 c.NotebookApp.port = 9000 # 下方代码中argon2后面的内容替换成上一步骤已获取到的Jupyter的密码 c.NotebookApp.password = 'argon2:$argon2id$v=19$m=65536,t=3,p=4$4TyndM75H8N4b+291xqjdA$n0QSxlv/uCLjGR0TX/jbD/XFlEu9BzQGI1b2Mcu6gxg' # 这个主目录非常重要,后续您的访问文件需要放在该目录 c.NotebookApp.notebook_dir = u'/data/lindorm/LindormDemo' #设置你打开jupyter notebook的时候想显示的位置,可以设置成经常使用的路径
启动Jupyter服务。前端启动,可以查看是否有启动错误。若需停止服务,可使用
Ctrl+C
来终止进程。jupyter notebook
实际业务使用过程中建议使用后端启动Jupyter服务,可以避免因终端关闭导致的服务中断,同时便于后台管理。后端启动请执行:
nohup jupyter notebook --allow-root >/tmp/jupyter.log 2>&1 &
。
步骤五:运行ipynb脚本
创建Lindorm多模态检索模型
示例代码依赖了两种Lindorm多模态检索模型:
文本向量化模型:BGE_M3_MODEL。
图片向量化模型:BGE_VISUAL0。
AI引擎部署模型的具体操作及参数详情请参见模型管理和通过curl命令使用AI引擎RESTful API示例。
部署BGE_M3_MODEL模型
curl -i -k --location --header 'x-ld-ak:<username>' --header 'x-ld-sk:<password>' -X POST http://ld-bp17j28j2y7pm****-proxy-ai-pub.lindorm.aliyuncs.com:9002/v1/ai/models/create \
-H "Content-Type: application/json" \
-d '{
"model_name": "bge_m3_model",
"model_path": "huggingface://BAAI/bge-m3",
"task": "FEATURE_EXTRACTION",
"algorithm": "BGE_M3",
"settings": {"instance_count": "2"}
}'
部署BGE_VISUAL0模型
curl -X POST "http://ld-bp17j28j2y7pm****-proxy-ai-pub.lindorm.aliyuncs.com:9002/v1/ai/models/create" \
-H "x-ld-ak: <username>" \
-H "x-ld-sk: <password>" \
-H "Content-Type: application/json" \
-d '{
"model_name": "bge_visual0",
"model_path": "huggingface://BAAI/bge-visualized",
"task": "FEATURE_EXTRACTION",
"algorithm": "BGE_VISUALIZED_M3",
"settings": {
"model_type": "ensemble",
"instance_count": "4"
}}'
查看所有模型
curl -i -k --location --header 'x-ld-ak:<username>' --header 'x-ld-sk:<password>' --request GET 'http://ld-bp17j28j2y7pm****-proxy-ai-pub.lindorm.aliyuncs.com:9002/v1/ai/models/list'
部署环节说明
在Jupyter中执行代码LindormQwenVlMultiModalSearch.ipynb
,利用通义千问图片识别模型和Lindorm多模态模型构建高质量图片检索库。
环节 | 说明 | 涉及引擎 |
环节 | 说明 | 涉及引擎 |
创建向量表 | 创建一个包含图片向量列的搜索索引表。
| 搜索引擎 向量引擎 |
导入图片 | 将原始图片数据处理为系统可用的向量形式,并写入索引表。
| AI引擎 搜索引擎 向量引擎 |
检索方式说明
检索方式:以文搜图/以图搜图。
检索选项:向量检索/全文和向量混合检索。
图片去重:通过以图搜图功能,自动识别并过滤相似度达到或超过阈值的图片,避免重复导入,同时返回相似图片供参考。
检索方式 | 具体描述 | 涉及引擎 |
检索方式 | 具体描述 | 涉及引擎 |
以文搜图 | 通过文字搜索图片,支持向量检索,也支持全文和向量混合检索。
| AI引擎 搜索引擎 向量引擎 |
以图搜图 | 通过图片搜索图片,全文和向量混合检索。
| AI引擎 搜索引擎 向量引擎 |
以图搜图-图片去重 | 运行
| AI引擎 搜索引擎 向量引擎 |
- 本页导读 (1)
- 背景介绍
- 方案架构
- 步骤一:开通Lindorm多模能力
- 步骤二:配置白名单
- 步骤三:下载代码
- 步骤四:环境配置
- 运行环境
- 安装依赖
- 配置Lindorm连接地址
- 安装Jupyter Notebook
- 步骤五:运行ipynb脚本
- 创建Lindorm多模态检索模型
- 部署环节说明
- 检索方式说明