从“字”到“画”:基于Elasticsearch Serverless 的多模态商品搜索实践

简介: 本文深入探讨了多模态商品检索的通用解决方案,重点介绍了其核心技术:Embedding(向量化)与向量检索。通过稠密与稀疏模型、欧氏距离、余弦相似度、HNSW算法及BBQ量化等技术,解析如何实现高效的多模态搜索。同时结合阿里云AI搜索开放平台与Elasticsearch Serverless,展示了如何低成本、快速搭建高性能多模态商品搜索系统,并通过完整Demo演示了从数据处理到最终检索的全过程。

随着人工智能技术的飞速发展,用户对于搜索体验的要求早已超越了传统的关键词匹配。我们正处在一个从文本搜索向多模态、跨模态搜索演进的时代。用户希望能够通过图片、甚至是自然语言描述的复杂场景,来精准地找到他们想要的商品。然而,如何理解并检索图片中的视觉元素?如何处理那些文本标题无法完全概括的商品特征?这些都是传统搜索面临的挑战。

本文将深入探讨多模态商品检索的通用解决方案,详细解读其背后的两大核心技术:Embedding(向量化)与向量检索。我们将从稠密与稀疏模型,到欧氏距离、余弦相似度,再到 HNSW 算法与 BBQ 量化等关键技术,逐一揭开多模态搜索的神秘面纱。

更重要的是,本文将结合阿里云的创新产品——AI 搜索开放平台与 Elasticsearch Serverless,展示如何将理论付诸实践,快速、低成本地搭建一套功能强大、性能卓越的多模态商品搜索系统。我们将分享 Elasticsearch Serverless 在免运维、低成本、高弹性以及与AI模型无缝集成等方面的独特优势,并通过一个完整的 Demo 演示,带你端到端地体验从数据处理到最终检索的全过程。


01 多模态商品检索解决方案

搜索场景的演进


在日常的电商平台中,我们对文本搜索场景非常熟悉。例如,当用户搜索“连衣裙”时,其目标明确,就是希望购买一件合适的裙子或了解最新款式。又如,搜索“nike 涩谷限定”,这表明用户可能对耐克在特定商圈发售的某些定制款感兴趣,关键词中包含了品牌、地点和限定属性。


然而,纯文本搜索存在明显的痛点。想象一个场景:你在酒店发现一款设计独特的吹风机,却不知道其品牌和型号。此时,你最直观的需求是“以图搜图”,通过拍摄的照片来查找同款商品。这种即时性的、基于视觉的查询需求,是传统文本检索难以满足的。


另一个痛点在于商品视觉元素的缺失。例如一件印有卡通恐龙图案的绿色儿童短裤,其标题和简介可能只会描述为“男童短裤”,却无法体现“绿色”、“卡通”、“恐龙”这些对消费者(尤其是给孩子买衣服的家长)极具吸引力的视觉特征。


640 (5).png


多模态与跨模态搜索正是为了解决这些问题而生。它允许用户使用更自然的、多维度的方式进行查询。比如,用户可以直接输入“打乒乓球的小男孩”,系统需要在海量的图片素材中,精准地找出符合这一场景描述的图片,这极大地提升了搜索的精准度和用户体验。


通用的商品检索解决方案架构


一个通用的多模态商品检索解决方案,其核心在于如何处理和融合不同类型的数据。其整体架构可以概括如下:


640 (6).png


数据处理层:

  • 商品元数据处理(结构化文本)


  • 数据源:包括商品的标题、描述、类目、标签等结构化文本信息。
  • 处理流程:对这些文本数据进行分词处理,然后构建倒排索引,存入文本引擎中。这是传统搜索的基础。


  • 图片数据处理(非结构化数据)


  • 处理流程一:图片内容理解

通过多模态大模型对图片进行“解读”,生成描述性文本。例如,对于上述的绿色短裤,模型可以生成描述:“这是一张展示绿色短裤的图片,短裤上有一个卡通小恐龙图案”。

这段生成的文本同样可以作为结构化数据,经过分词后存入文本引擎。


  • 处理流程二:Embedding(向量化)

利用 Embedding 技术,将图片本身转换为高维度的数学向量(Vector)。

这个向量可以被认为是图片在数学空间中的“坐标”,它蕴含了图片深层次的视觉特征。

生成的向量数据被存储在向量引擎中。


通过以上步骤,一件商品的数据就被解构为两部分:一部分是存储在文本引擎中的文本信息,另一部分是存储在向量引擎中的向量信息。


  • 查询与召回层:

当用户发起查询时,系统会根据查询类型进行多路召回:

文本查询

  • 文本匹配:用户的查询关键词会直接在文本引擎中进行匹配,召回相关的商品。
  • 语义匹配:同时,用户的查询文本也会通过Embedding技术转换为查询向量,然后在向量引擎中寻找与之最相似的商品向量。
  • 图片查询
  • 用户上传的图片会被转换成查询向量。
  • 系统使用这个查询向量在向量引擎中进行相似度检索,召回视觉上最接近的商品。


  • 融合与排序层:
  • Rerank & Score:来自文本引擎和向量引擎的多路召回结果,会经过一个重排序(Rerank)模块。该模块会综合考虑文本相关性得分和向量相似度得分,对结果进行最终排序。
  • 结果返回:将排序后的Top N结果呈现给用户。


这个架构的精髓在于,它结合了文本引擎的精确匹配能力和向量引擎的语义及视觉相似度检索能力,从而实现了真正意义上的多模态搜索。


02 多模态商品检索关键技术


要实现上述解决方案,离不开两大核心技术:Embedding(向量化)向量检索


关键技术一:Embedding(向量化技术)


Embedding 的本质,是将真实世界中非结构化的数据(如文本、图像)映射、转换为机器可以理解和计算的结构化数据——向量。


640 (7).png


Text Embedding (文本向量化)

文本向量化技术经历了多个发展阶段,目前主流的模型可分为三类:


  • Dense Model (稠密模型)

特点:将文本转换为稠密向量,向量中的绝大多数元素都是非零值。这种向量能很好地捕捉文本的深层语义相关性。例如,“国王”和“女王”在语义上相近,它们的稠密向量在空间中的距离也会很近。


代表模型:Word2vec、S-BERT、以及基于大语言模型(LLM)的各类模型。


  • Sparse Model (稀疏模型)

特点:将文本转换为稀疏向量,向量中只有极少数元素是非零的,大部分为零。它更侧重于词汇级别的精确匹配,类似于传统搜索中的“词袋模型”的升级版。


代表模型:BM25、SPLADE。


  • Hybrid Model (混合模型)

特点:这是当前效果最优、最受关注的模型。它巧妙地结合了稠密模型和稀疏模型的优点。对于一个输入文本,它会同时生成一个稠密向量和一个稀疏向量。


优势:最终得到的混合表征既包含了语义的泛化能力(来自稠密向量),又具备了关键词的精确匹配能力(来自稀疏向量),在各类评测中显著优于单一模型。


Image Embedding (图像向量化)


图像向量化主要借助深度神经网络,特别是卷积神经网络(CNN)。其过程可以通俗地理解为:图片作为输入,经过多层卷积层、激活函数和池化层的“特征提取”,将图片从像素矩阵一步步抽象,最终通过全连接层映射成一个低维度的特征向量。这个向量就是这张图片的高度浓缩的数学表达。


关键技术二:向量检索


确地找到与它“距离”最近的 K 个邻居(K-Nearest Neighbors, KNN)。这里的“距向量检索的核心思想是:在由海量向量构成的数学空间中,给定一个查询向量,快速、准离”代表了相似度。


640 (8).png


向量相似度度量


衡量两个向量有多“近”,主要有以下几种方式:


  • 欧氏距离 (Euclidean Distance, L2 Norm)

定义:即空间中两点之间的直线距离。距离越小,代表两个向量越相似。

得分转换:在搜索引擎中,通常会将其转换为一个0到1之间的归一化得分,公式如 1 / (1 + L2_norm^2),这样距离越小,得分越高,更符合搜索排序的直觉。


  • 点积 (Dot Product)

定义:两个向量对应维度相乘后求和。

特点:如果所有向量都经过归一化(长度为1),点积的结果等价于余弦相似度。通常,点积越大,相似度越高。


  • 余弦相似度 (Cosine Similarity)

定义:计算两个向量在方向上的夹角的余弦值。它衡量的是方向上的一致性,而不在乎绝对大小。

特点:取值范围在-1到1之间。值为1表示方向完全相同,为-1表示方向完全相反,为0表示正交(不相关)。这是向量检索中最常用的相似度度量之一。


ES对向量功能的支持


Elasticsearch 作为业界领先的搜索引擎,近年来在向量检索领域发展迅猛,提供了全方位的支持:


640 (9).png


  • 字段类型

dense_vector:用于存储稠密向量。

sparse_vector:用于存储稀疏向量,能够高效处理高维、稀疏的数据。

semantic_text:一个更高级的抽象类型,可以根据配置的推理模型,自动将文本输入映射为相应的向量类型。


原生 AI 能力

Inference API:允许 ES 直接调用外部的AI模型(如 Embedding 模型),实现数据在索引或查询时的实时向量化。

Ingest Pipeline:在数据写入时,可以通过 text_embedding 处理器或 inference 处理器,自动将文本字段转换为向量并存入索引,极大地简化了数据处理流程。


  • 检索语法

kNN Search:原生的近似最近邻搜索 API,用于在 dense_vector 字段上进行高效的向量检索。


混合搜索 (Hybrid Search):允许在一次查询中同时执行传统的全文检索(如 match 查询)和 kNN 向量检索。但一个挑战是如何平衡两种不同来源、不同度量衡的分数。


RRF (Reciprocal Rank Fusion):为了解决混合搜索中的分数融合难题,ES 引入了 RRF。RRF 不关心原始分数的大小,只关心文档在不同召回结果集中的“排名”。它通过对排名的倒数进行加权求和,来得到最终的融合排序,是一种更鲁棒的混合排序策略。


向量检索的性能优化:量化技术


向量检索,尤其是处理海量数据时,最大的瓶颈之一是内存消耗。一个高维(如1024维)float32 向量本身就占用大量空间,而用于加速检索的 HNSW 图索引也需要消耗可观的内存。因此,向量量化技术应运而生。


  • 标量量化 (Scalar Quantization, SQ)

原理:其核心思想是“降维打击”,将高精度的 float32(4字节)数值,量化为低精度的 int8(1字节)甚至更低。它通过分析一个数据段(Segment)内某一维度上所有向量值的最大值和最小值,然后按比例将 float32 值映射到 int8 的-127到127范围内。


640 (10).png


效果:通过 SQ,向量本身占用的内存可以轻松降低为原来的1/4(int8)或1/8(int4),在牺牲可控精度的前提下,大幅节省内存。


  • BBQ (Better Binary Quantization)


640 (11).png


背景BBQ 技术源自南洋理工大学的研究论文,是 ES 在向量量化领域的又一重大突破。


优势BBQ 可以在 SQ 的基础上,将向量检索占用的内存再降低高达 95%。这使得在 Elasticsearch 中进行百亿级别的海量向量检索成为可能。


劣势与应对:天下没有免费的午餐。BBQ 以极低的内存占用为代价,牺牲了一定的召回率。但在实际应用中,可以通过适度增加 KNN 查询的候选集数量(num_candidates)等方法,来有效缓解召回率的下降。


应用举例:一个 100 亿条 1024 float32 向量的数据集,原始存储需要约 37TB 内存。而采用 BBQ 量化后,加上 HNSW 图内存,总内存需求可降至约 1.8TB,所需计算节点数量从 170 个骤降至 9 个,成本效益极高。在 BBQ 的加持下,HNSW 图索引的内存占比反而成为了主要部分。

03 基于 Elasticsearch Serverless 最佳实践


理论的先进性最终要通过实践来检验。我们将介绍如何基于阿里云的两大产品——AI 搜索开放平台Elasticsearch Serverless,构建一套高效、易用的多模态商品搜索系统。


整体实践架构


我们的最佳实践架构如下:


640 (12).png


数据源:商品数据存储在云数据库 RDS 中,包含商品 ID、文本描述和图片信息。


(1)AI搜索开放平台

离线数据服务:负责从 RDS 中抽取数据。

多模态向量服务:调用平台内置的 AI 模型(如 M2-Encoder、Qwen2-VL 等),将商品的文本和图片数据统一转换为多模态向量。

数据写入:将处理好的文本数据和向量数据写入 Elasticsearch Serverless。


(2)Elasticsearch Serverless

作为核心的文本引擎向量引擎,存储商品的文本索引和向量索引。


在线查询

用户通过前端应用发起查询(文本或图片)。

查询请求经过 AI 搜索开放平台的多模态向量服务进行向量化。

向量化的查询请求被发送到 Elasticsearch Serverless 进行多路召回(文本+向量)。

ES 返回 Top N 结果,最终呈现给用户。


阿里云 AI 搜索开放平台


这是一个一站式的、企业级的 AI 搜索解决方案平台,其分层架构清晰,功能强大:


640 (13).png

底层(数据源与管理):支持多种数据源接入,包括对象存储(OSS)、数据库(MySQL)、数据湖(Hudi, Iceberg)和大数据计算平台(MaxCompute)等。


中层(核心服务与生态)

搜索微服务:提供文档解析、多模态解析、向量化、Rerank、LLM 推理、LLM Agent 等一系列原子化的 AI 能力。

开放框架与生态:无缝对接 LangChain、LlamaIndex 等主流开发框架,并支持集成多种向量数据库(如 Milvus、Havenask 以及 Elasticsearch)。


上层(应用开发与部署):提供 AI 搜索应用场景的快速开发能力,并支持通过函数计算(FC)、PAI 等多种方式进行应用部署。


该平台预置了丰富的 AI 模型,如文档解析、图片解析、文本向量化、多模态向量化、Reranker、大模型生成等,并且提供了“体验中心”,让开发者可以快速验证模型效果,例如输入文本或上传图片,即可看到其生成的向量结果。


Elasticsearch Serverless


这是阿里云上的一种全托管、智能化的 Elasticsearch 服务形态,它与传统的 IaaS/PaaS 模式有着本质区别,为多模态搜索场景提供了极致的便利。


技术架构


其核心是一个 Serverless Proxy,它对用户屏蔽了底层集群的复杂性,负责鉴权、路由和请求改写。Proxy 后面是读写分离的 Elasticsearch 服务集群和元数据服务,底层基于分布式存储。整个系统由应用管控系统智能运维系统进行管理和调度,实现了从资源到运维的全方位自动化。


640 (14).png


核心优势


优势一:免运维


版本无感:用户无需再为追赶 ES 社区日新月异的向量功能版本而烦恼,也无需担心安全漏洞。Serverless 平台会自动保持内核的最新和最优化。


640 (15).png


资源无感:彻底屏蔽了集群、节点、分片、规格配置等复杂的物理概念。用户面对的只是一个逻辑上的“应用”,无需进行容量规划。


开箱即用的监控:默认提供面向业务的应用读写 QPS、索引流量等核心指标监控。


优势二:低成本


极低的接入成本:创建一个 Serverless 应用仅需数秒,即可获得访问地址和配套的 Kibana。对于需要快速迭代验证算法的开发者来说,这是巨大的便利。


640 (16).png


真正的按量付费:打破了传统包年包月的固定付费模式。以 CU(Compute Unit)为计算资源单位,按实际使用量计费,计费粒度细化到秒级,完美匹配业务流量的潮汐变化,杜绝资源浪费。


优势三:高弹性


资源自动扩缩:系统会根据应用的实时和历史负载水位,动态、透明地调配底层资源。当业务高峰来临时,资源会自动扩容以支撑流量;当流量回落时,资源会自动缩减以节约成本。


640 (17).png


配置自动调整:除了计算资源,系统还会智能地调整索引副本数、限流阈值等配置,以达到最佳性能和稳定性的平衡。


优势四:无缝集成 AI 模型


AI 模型开箱即用:Serverless 应用无缝集成了 AI 搜索开放平台上的所有模型,用户可以直接在 ES 内部通过 Inference API 调用它们。


640 (18).png


支持自定义模型:更强大的是,它允许用户接入自己的、或第三方的优秀模型。只需通过简单的 API 配置,即可将任意外部模型集成到 ES 的 Inference 体系中,这为算法的灵活性和先进性提供了无限可能。


优势五:向量场景深度优化


智能过滤向量字段:默认在 _source 中排除向量字段,节省存储和传输资源,避免不必要的数据暴露。


640 (19).png


向量默认量化策略:用户可以一键开启 int8 或 BBQ 等默认量化策略,无需关心底层实现细节,即可享受量化带来的内存和成本优势。


向量自适应预热:系统会自动将不同类型的向量索引文件(HNSW 图、量化向量等)预加载到文件系统缓存中,减少首次查询的冷启动延迟,提升高并发场景下的响应稳定性和吞吐量。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
11月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
1981 64
|
10月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
5258 0
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
583 5
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
1386 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
Docker 容器
docker desktop安装es并连接elasticsearch-head:5
以上就是在Docker Desktop上安装Elasticsearch并连接Elasticsearch-head:5的步骤。
797 2
|
Linux Python
【Elasticsearch】linux使用supervisor常驻Elasticsearch,centos6.10安装 supervisor
【Elasticsearch】linux使用supervisor常驻Elasticsearch,centos6.10安装 supervisor
212 3
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
1805 1
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版