96SEO 2026-06-16 04:14 21
嘿,老友,我今天给你聊聊阿里云ES AI多模态搜索到底咋实现的。别kan标题挺高大上,其实核心思路蛮直白——把图片、文字dou转成向量,再用ElasticsearchZuo向量检索。
一、先说说为什么要搞多模态搜索以前想找相似的东西,得自己写个图像识别或者文本匹配。现在AI这么火,全场景dou想一站式搞定。比如你给我一张狮子照片,我直接Neng得到那段描述,还Neng再拿文字“狮子”去找同类图。

哈,听起来就酷啊。但要Zuo到这点,可得先把非结构化数据变成向量。
二、架构概览下面这张图展示了整体框架:
用户端:输入图片或文字。
后端:DashScope Embedding API 把输入转成向量。
ES:存储 image_embedding、text_embedding 两个字段。
前端演示:Streamlit Zuo一个简易 UI。
所以核心就是两步:写入向量,查询时Zuo相似度计算。
写入流程先跑脚本把样例数据写进去:
# 写入脚本示例
from elasticsearch import Elasticsearch
from dashscope import Embedding
import csv
es = Elasticsearch
api_key = ""
embedder = Embedding
with open as f:
reader = csv.DictReader
for row in reader:
img_path = f"train/{row}"
# 读取图片字节
with open as fp:
img_bytes = fp.read
# 文本描述
txt_desc = row
# 获取嵌入
img_vec = embedder.image_to_vector
txt_vec = embedder.text_to_vector
doc = {
"image_id": row,
"image_embedding": img_vec,
"text_embedding": txt_vec,
"description": txt_desc
}
es.index
print
记得把, , 换成自己的配置。那啥?你可Neng会问,不对不对,那是啥?其实这些值就是你阿里云控制台里创建实例时kan到的地址和端口,还有百炼平台给你的API Key。
前面说过四种查询方式:文搜图、文搜文、图搜图、图搜文。代码hen类似,只是检索字段不同:
def search:
if query_img:
qvec = embedder.image_to_vector)
field = "image_embedding"
else:
qvec = embedder.text_to_vector
field = "text_embedding"
body = {
"size":5,
"query":{
"script_score":{
"query":{"match_all":{}},
"script":{
"source":"cosineSimilarity",
"params":{"query_vector":qvec}
}
}
}
}
res = es.search
return res
"cosineSimilarity" 就是用余弦相似度算分数。那边需要保证 ES 的 vector 模块开启了支持向量字段哦。
三、关于“为什么百度不收录”哈哈,你说到这个问题,我也想过为啥有些页面在百度根本查不到?原因之一是内容没有被抓取到,也可Neng是因为页面没有提供足够的结构化信息,让爬虫判断不到核心关键词。当然还有一个坑,就是使用了 robots.txt 禁止抓取或者 meta robots noindex 标记。不过别担心,Ru果你把内容发布在阿里云 ES 上,用自己的前端Zuo搜索,完全不用靠百度收录来带流量,只要自己Zuo好 SEO,还是Ke以吸引目标用户的。
四、启动前端演示# demo.py 简单 Streamlit 前端示例:
import streamlit as st
from read import search
st.title
tab1, tab2 = st.tabs
with tab1:
text_query = st.text_input
if st.button:
results = search
for r in results:
st.write
st.image
with tab2:
uploaded_file = st.file_uploader
if uploaded_file is not None and st.button:
results = search
for r in results:
st.write
st.image
# 启动命令:
streamlit run demo.py
Curl 一下就Nengkan到浏览器自动打开 http://localhost:8501 。Ru果没弹出,Ke以手动访问那个地址。
五、评估与调优写完以后你Ke以跑几条测试kankan返回结果是不是符合预期。Zui常见的问题是向量维度不匹配或者模型版本不一致导致 similarity 计算失效。检查一下 DashScope 的 API 返回值格式是否跟代码里的解包方式一致。Ru果发现错误码,一定要查kan官方文档确认参数名是否变了。
另外Ru果检索速度慢,Ke以考虑加上 ES 的 KNN 插件或者使用 Milvus 等专门Zuo向量检索的数据库。毕竟 ES 在高并发时处理大量浮点数可不是Zui强项。
Zui后一点建议:别忘了Zuo好日志记录。当出现异常时你会发现从日志里追踪到是哪一步出了问题geng快。而且日志还Neng帮你监控系统健康状态,kan有没有热点词频或热点图片被频繁查询,需要进一步优化模型或缓存策略。
六、与感悟说实话,这套系统一开始搭建起来挺麻烦的,但当你跑通后发现,它Neng让原来只Neng靠关键字检索的数据瞬间变成跨模态全局检索。对业务来说就是把海量无结构信息变成可搜索资产。
我觉得Zui关键的是保持思路清晰——先把数据映射成统一格式,然后让 ElasticSearch Zuo后端支撑,再通过 DashScope 或者自研模型生成嵌入即可完成整个闭环。
好了小伙伴们,现在你Yi经掌握了从准备环境到跑完 Demo 的完整流程。有任何疑问随时来聊,我这儿还有不少坑等着一起踩呢!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback