阿里云百炼ES AI多模态搜索深度解析
导读:
在当今搜索场景中,多模态搜索的应用日益广泛,例如通过文字寻找图片、利用图片检索图片,甚至借助图片描述匹配其他描述。本文将以阿里云 Elasticsearch(ES)与千问 VL 大模型为核心,完整演示从图片特征提取到向量检索的实战流程。提供的代码示例覆盖以文搜图、以文搜文、以图搜图、以图搜文四种常见场景,开箱即用。
效果展示>>
背景信息
当图片和文本这类非结构化数据并存时,传统的关键词匹配往往力不从心。更高效的做法是先将它们转换为向量,再通过向量检索快速命中相似内容。本实践使用以下三个工具:
Elasticsearch:作为向量存储与检索的核心数据库,此处选用 8.17 及以上版本。
千问 VL 模型:负责从图片中提取描述与关键词,相当于为每张图片生成一段自然语言说明。
DashScope Embedding API:将图片和文本分别转化为向量,从而在统一向量空间内实现跨模态匹配。
具体能实现哪些功能?
以文搜图:输入一句话,找出最匹配的图片。
以文搜文:输入一句话,找出最相似的图片描述。
以图搜图:输入一张图片,找出视觉上最相近的图片。
以图搜文:输入一张图片,找出内容描述最接近的文本。
系统架构
下图展示了整个多模态搜索系统的架构概览,从数据录入、向量生成到检索响应,流程一目了然。
前提条件
动手前请确认环境是否准备就绪:
一个 8.17 及以上版本的阿里云 Elasticsearch 实例(创建步骤参见官方文档)。
已开通百炼服务,并获取可用的 API-Key。
本地 Python 版本 ≥ 3.8。
环境准备
安装依赖
执行以下命令,一次性安装所需的库:
pip install elasticsearch dashscope requests streamlit下载示例数据集
数据集来自公开的图片检索示例包,运行以下命令下载并解压:
wget https://github.com/milvus-io/pymilvus-assets/releases/download/imagedata/reverse_image_search.zip
unzip -q -o reverse_image_search.zip解压后会得到一个 CSV 文件和多张图片样本。
目录结构
建议将工作目录组织如下:
multi_modal_search/
├── reverse_image_search.csv # 数据集文件
├── train/ # 图片目录(解压后生成)
│ └── *.jpg
├── scripts/ # 脚本目录
│ ├── write.py # 数据写入脚本
│ ├── read.py # 查询脚本
│ └── demo.py # 前端演示脚本核心代码介绍
写入流程
写入过程分为两步:首先使用千问 VL 模型为每张图片生成一段描述文本,并存入 text_input 字段;然后调用多模态 Embedding 模型,分别将原始图片和描述文本转换为向量,对应 image_embedding 和 text_embedding。这样一来,后续无论使用图片还是文字进行查询,都能在同一向量空间内完成比较。
为便于演示,本示例仅处理前 200 张图片。
完整代码可参考官方文档中的 write.py 脚本。请根据实际情况替换以下参数:
- ES 连接地址、端口、用户名、密码
- 百炼 API Key
执行 python3 write.py 后,控制台会逐条显示每张图片生成的描述及处理进度。
查询流程
查询脚本定义了四种检索类型。无论查询输入是文本还是图片,都会先调用百炼多模态模型生成对应的向量,然后根据检索类型匹配 image_embedding 或 text_embedding 字段,最终返回最相似的结果。
详细代码见 read.py 脚本,其中 ES 配置参数与写入流程保持一致。
前端 Demo
基于 Streamlit 搭建的简易演示界面,可在浏览器中直接交互体验四种搜索模式。代码位于 demo.py 中。
操作流程
步骤一:配置参数
运行脚本前,请打开 write.py 和 read.py,修改以下配置项:
# ES配置
ES_HOST = "" # 替换为您的ES实例地址
ES_PORT = 9200
ES_USER = "" # 替换为您的ES用户名
ES_PASSWORD = "" # 替换为您的ES密码
# 百炼API配置(仅write.py需要)
DASHSCOPE_API_KEY = "" # 替换为百炼平台中可用的API Key 步骤二:加载数据集
进入 scripts 目录,执行数据写入脚本:
cd scripts
python3 write.py成功执行后,您会看到类似下面的输出:
INFO - [1/7] 创建 ES 客户端...
INFO - ES连接状态: xxx...
INFO - 处理第 1/200 张图片: xxx
INFO - 描述: xxx
...
INFO - 处理完成!成功: 200, 失败: 0步骤三:验证数据写入(可选)
运行查询脚本确认数据已正确写入:
python3 read.py以“以文搜图”为例,搜索关键词“狮子”,结果类似:
以文搜图 - 搜索关键词"狮子"
✓ 得分: 0.8077 - 一只狮子坐在倒下的树干上,周围是茂密的灌木和树枝
✓ 得分: 0.7732 - 雄壮的狮子站在草地上,鬃毛在阳光下威武宁静
✓ 得分: 0.7566 - 雄狮特写,鬃毛浓密,眼神锐利步骤四:启动前端演示
streamlit run demo.py浏览器会自动打开 http://localhost:8501,界面直观易用。
步骤五:多模态向量检索
在搜索设置中选择检索类型(以文搜图、以文搜文、以图搜图、以图搜文),输入文字或上传图片,点击搜索即可查看匹配结果。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
2026实测解析GPT-5.5模型能力详解与国内合规使用规范
2026年,AI大模型迎来了又一次迭代升级。GPT-5 5凭借在多模态精细化处理能力上的跨越式突破,正逐步成为职场办公、内容创作、代码开发以及数据优化等领域的核心生产力工具。然而,对国内多数用户而言,当前仍面临不少现实难题:渠道杂乱、合规边界模糊、账号频繁被封、数据泄露风险——各类非正规镜像站、共享
分时操作系统和实时操作系统的主要区别
分时操作系统和实时操作系统区别 ?️ 操作系统家族里,有两类系统经常被放在一起比较:分时操作系统和实时操作系统。它们虽然都叫“操作系统”,但设计哲学、工作机制和应用场景可以说是天差地别。一个追求“公平共享”,一个追求“确定性响应”。这篇文章打算从定义、核心机制、调度策略、实际应用等维度,把这两者的本
企业AI智能体从零搭建实战踩坑经验全记录
去年开始用腾讯云智能体开发平台(ADP)跑了几个企业项目,从最基础的客服Bot一路干到多Agent协同系统,中间踩的坑不少,但积累下来的经验价值也相当可观。这篇文章就聊聊实际落地过程里的那些关键节点和教训,给同样在腾讯云上折腾AI Agent的朋友做个参考。为什么选腾讯云ADP而不是从零搭建做第一个
Selenium自动化测试入门:从环境搭建到首个可维护用例
Selenium 入门的核心不在于记住多少 API,而在于把三件事想清楚:环境别装错版本、等待机制别用 sleep、用例结构别写成流水账。下面按照“装环境 → 跑通第一个脚本 → 理解等待 → 选对定位器 → 拆成 Page Object”的顺序走一遍,每一步都附上代码,踩过的坑直接标出来。 Sel
专业表格魔法师 QoderWork CN 让脏数据秒变仪表盘神器
使用案例 今天聊聊怎么用阿里巴巴的 QoderWork CN 桌面应用智能体,把 Excel 里那堆乱糟糟的原始数据清洗干净,再做成可视化的看板。整个过程基本不需要写代码,全靠自然语言对话就能搞定。下面就用一个实际案例,把操作步骤拆开来讲。 步骤一:安装并注册 QoderWork CN 账号 先到
- 日榜
- 周榜
- 月榜
相关攻略
2026-06-03 21:20
2026-06-03 21:20
2026-06-03 21:20
2026-06-03 21:20
2026-06-03 21:20
2026-06-03 21:20
2026-06-03 21:20
2026-06-03 21:20
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

