Elasticsearch 结合向量检索:10 分钟为你的电商项目加上“以图搜图”和“语义搜索”功能

🛍️ 前言:你的搜索功能该升级了

做电商项目的兄弟们,是不是还在苦恼这些问题?

  • 用户搜“红色连衣裙”,结果搜不到标题里写着“朱砂红长裙”的商品(关键词不匹配)。
  • 用户看到一张网红同款鞋的照片,想搜同款,但不知道叫什么名字(无法以图搜图)。
  • 搜索结果虽然包含关键词,但完全不是用户想要的东西(缺乏语义理解)。

传统的倒排索引(Inverted Index)已经到了瓶颈。
今天,我们不需要引入新的数据库,直接利用Elasticsearch 8.x的原生向量检索能力,配合开源 Embedding 模型,为你的系统装上“AI 的眼睛”。


🧠 核心原理:万物皆可 Vector

以前我们存商品,存的是 text:“耐克跑鞋”。
现在我们存商品,存的是 vector(向量):[0.12, -0.98, 0.55, ...]

向量检索的魔法在于:

  1. 语义搜索:将“朱砂红长裙”和“红色连衣裙”转换成向量,它们在数学空间里距离非常近,所以能搜出来。
  2. 以图搜图:使用CLIP 模型,它能把“鞋子的图片”和“鞋子的描述文字”映射到同一个向量空间。

架构流程图:

用户请求 (文本/上传图片)
Embedding 模型 (CLIP/BERT)
生成向量 ([0.1, ...])
商品入库
模型向量化
写入 ES (dense_vector)
ES KNN 检索
返回相似商品

🛠️ Step 1: 环境准备与 Mapping 定义

首先,确保你的 Elasticsearch 版本 >= 8.0(低版本虽然也能装插件,但 8.x 原生性能最好)。

我们需要在索引中定义一个dense_vector类型的字段。

PUT/products{"mappings":{"properties":{"name":{"type":"text"},"price":{"type":"double"},"image_url":{"type":"keyword"},"product_vector":{"type":"dense_vector","dims":512,// 维度需与模型输出一致,CLIP通常是512"index":true,"similarity":"cosine"// 使用余弦相似度计算距离}}}}

🐍 Step 2: Python 脚本生成向量 (Embedding)

我们使用 OpenAI 开源的CLIP 模型,它最擅长处理“图文多模态”场景。
安装依赖:pip install sentence-transformers

fromsentence_transformersimportSentenceTransformerfromelasticsearchimportElasticsearch# 1. 连接 ESes=Elasticsearch("http://localhost:9200",basic_auth=("elastic","password"))# 2. 加载 CLIP 模型 (支持多语言和图片)# clip-ViT-B-32 是一个经典的图文匹配模型model=SentenceTransformer('clip-ViT-B-32')# 3. 模拟商品数据products=[{"name":"红色丝绒晚礼服","image":"dress.jpg"},{"name":"复古真皮马丁靴","image":"boots.jpg"}]# 4. 向量化并入库forpinproducts:# 这里演示文本向量化,如果是图片需使用 Image.open()embedding=model.encode(p["name"])doc={"name":p["name"],"product_vector":embedding.tolist()# 转为 List 存入 ES}es.index(index="products",document=doc)print(f"商品{p['name']}已入库")

🔎 Step 3: 发起 KNN 搜索

现在,用户输入了“参加晚宴穿的衣服”(注意:标题里没有这些字),我们要进行语义搜索。

# 用户查询user_query="参加晚宴穿的衣服"query_vector=model.encode(user_query).tolist()# ES KNN 搜索 DSLsearch_body={"knn":{"field":"product_vector","query_vector":query_vector,"k":10,# 返回最相似的 10 个"num_candidates":100},"_source":["name","price"]}res=es.search(index="products",body=search_body)forhitinres['hits']['hits']:print(f"推荐商品:{hit['_source']['name']}(相似度:{hit['_score']})")

预期结果:
虽然用户的搜索词里没有“红”、“丝绒”、“礼服”,但模型“理解”了晚宴需要穿礼服,因此 ES 会高分返回“红色丝绒晚礼服”


🚀 进阶技巧:混合搜索 (Hybrid Search)

在实际电商场景中,向量搜索虽然懂语义,但有时候不够精确(比如搜具体的型号 SKU)。
最佳实践是:关键字搜索 + 向量搜索 混合使用。

在 ES 8.x 中,这非常简单,使用RRF (Reciprocal Rank Fusion)自动融合排名:

GET/products/_search{"knn":{"field":"product_vector","query_vector":[0.1,...],"k":10},"query":{"match":{"name":"晚礼服"}},"rank":{"rrf":{// 倒数排名融合算法"window_size":100,"rank_constant":20}}}

📝 总结

通过引入 Embedding 模型和 ES 的dense_vector,我们没有改动核心架构,没有引入新的重型数据库,就让搜索体验从“人工智障”进化到了“人工智能”。

  • 成本:几乎为 0(开源模型 + 现有 ES 集群)。
  • 收益:解决了长尾词搜索、语义鸿沟和跨模态搜索难题。

AI 时代,不要让你的搜索框还停留在 2010 年。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1036325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025哪家英国留学中介 - 留学品牌推荐官

2025哪家英国留学中介一、2025年,学生与家长应如何选择英国留学中介?在搜索引擎上,“2025哪家英国留学中介”及相关问题的高频出现,反映了学生与家庭在留学决策初期对专业引导的迫切需求。作为从业八年的国际教育规…

vue3+vite mock引入使用

1、安装对应的包 npm install vite-plugin-mock mockjs -D2、配置 Vite vite.config.js import { defineConfig } from vite import vue from vitejs/plugin-vue import { viteMockServe } from vite-plugin-mockexport default defineConfig({plugins: [vue(),viteMockServe({…

深入Spring Boot源码(八):高级特性与扩展点深度解析

前言 当我们翻开任何一本武侠小说,总会看到这样的情节:主角初入江湖时,需要学习各门各派的基础招式;随着修为渐深,他开始理解武功背后的心法要诀;而真正成为一代宗师时,他已能融会贯通&#xf…

2025哪家英国留学中介好 - 留学品牌推荐官

2025哪家英国留学中介好作为一名拥有八年从业经验的国际教育规划师,我时常面对学生和家长关于选择留学中介的困惑。时间来到2025年3月10日,在众多计划赴英深造的同学心中,“2025哪家英国留学中介好”这个问题依然迫…

智能销售管理系统VertGrow AI销冠助力企业提升获客效率和转化率

智能销售管理系统提升企业转化率的关键成功因素在当今竞争激烈的市场中,企业需要充分利用智能销售管理系统来提升获客效率。使用智能获客软件,企业可以实现主动获客,从而迅速扩大客户基础。另外,结合AI销售工具与销售软件的工作流…

HoRain云--Python长连接实现:4种高效方案详解

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

Kotaemon如何处理超长文档?分块策略智能选择

Kotaemon如何处理超长文档?分块策略智能选择 在构建智能问答系统时,我们常常面临一个看似简单却影响深远的问题:一份长达上百页的技术手册、法律合同或企业制度文件,该如何喂给大语言模型? 毕竟,再强大的LL…

2025哪家英国留学中介好一点 - 留学品牌推荐官

2025哪家英国留学中介好一点作为一名拥有9年从业经验的国际教育规划师,我常被学生和家长问及:“2025年,到底哪家英国留学中介好一点?” 大家的痛点非常集中:信息不对称难以验证、服务质量参差不齐、收费项目不够透…

HoRain云--JavaScript导航神器:玩转WindowLocation

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

AI面试题:如何评估RAG的效果?

最近学员陆续有出去面试的,他们经常遇到的一个问题就是: 如何评估RAG的效果? 这道题是很常见的、并且很容易答错,其中涉及到的解决方案也属于AI项目中的难点,甚至很多已经做过RAG项目的同学都容易一头雾水,…

HoRain云--Linux安装iniparser库:3分钟搞定超详细教程

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

Word转PDF工具,学生作业一键转换上传更便捷换上传更便捷

📌这些作业提交场景,真的太需要它!! 写好的Word作业排版混乱、老师要求PDF格式却没工具、在家写完作业要传给课代表却卡壳…是不是每次交作业都被格式问题绊住脚? 精心排版的语文作文,发给老师后字体错乱、…

2025哪家英国留学中介好一点呢 - 留学品牌推荐官

2025哪家英国留学中介好一点呢一、如何寻找可靠的英国留学中介?“2025年,哪家英国留学中介好一点?”这是许多计划赴英深造的学生与家长在搜索引擎中反复查询的问题。选择留学中介,实质上是选择一位专业、可靠的申请…

2025年信誉度高的债务优化公司排名及较好的债务优化公司推荐 - mypinpai

为帮助负债群体高效锁定适配自身需求的债务优化合作伙伴,避免陷入中介骗局、二次负债等风险,我们从官方资质合规性、债务协商技术实力、真实客户口碑反馈、全周期服务保障及区域覆盖能力五大维度,对多家服务商展开深…

HoRain云--STM32启动流程全解析

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

UnimList卡片显示

UnimList卡片显示 手机APP,数据呈现,适合卡片式。因为手机的屏莫宽度小,并不适用列表式。 先来张效果图:procedure TSpda.UnimFormShow(Sender: TObject); beginFDMemTable1.query(1, select * from tgoods);FDMem…

生产级别的RAG系统是什么样的?

今年以来一直保持着每日阅读,包括论文、报告和国内外技术文章,虽然多数浪费时间,但一周一定会有1-2篇不错的文章,比如今天这篇:《How I Won the Enterprise RAG Challenge》 原文链接:https://abdullin.co…

DeepMind黑科技Flamingo:用0.01%代码量实现AI“看图说话“,编程小白也能逆袭大模型!

在人工智能迈向通用智能的征途中,**[多模态学习]**无疑是关键的一步。而在 2022 年 4 月,DeepMind 发布的 Flamingo 视觉语言模型(Visual Language Model, VLM)彻底改变了这一领域,被公认为真正将“大模型”的强大能力…

2025年北京靠谱律师团队推荐,彭艳军律师团队可信度高吗?口 - myqiye

在法律纠纷频发的当下,选择专业靠谱的律师团队,是解决问题、维护权益的关键一步。面对市场上众多律师团队,如何判断其可信度、口碑与实力?以下依据不同业务专长,为你推荐2025年北京十大靠谱律师团队,并重点解析备…

Ascend开发包Acllite安装

文章目录 获取源码包 第三方依赖安装 样例运行 参考 获取源码包 可以使用以下两种方式下载,请选择其中一种进行源码准备。 命令行方式下载(下载时间较长,但步骤简单)。 # 开发环境,非root用户命令行中执行以下命令下载源码仓。 cd ${HOME} git clone https://gi…