随着人工智能技术的飞速发展,用户对于搜索体验的要求早已超越了传统的关键词匹配。我们正处在一个从文本搜索向多模态、跨模态搜索演进的时代。用户希望能够通过图片、甚至是自然语言描述的复杂场景,来精准地找到他们想要的商品。然而,如何理解并检索图片中的视觉元素?如何处理那些文本标题无法完全概括的商品特征?这些都是传统搜索面临的挑战。
本文将深入探讨多模态商品检索的通用解决方案,详细解读其背后的两大核心技术:Embedding(向量化)与向量检索。我们将从稠密与稀疏模型,到欧氏距离、余弦相似度,再到HNSW算法与BBQ量化等关键技术,逐一揭开多模态搜索的神秘面纱。
更重要的是,本文将结合阿里云的创新产品——AI搜索开放平台与Elasticsearch Serverless,展示如何将理论付诸实践,快速、低成本地搭建一套功能强大、性能卓越的多模态商品搜索系统。我们将分享Elasticsearch Serverless在免运维、低成本、高弹性以及与AI模型无缝集成等方面的独特优势,并通过一个完整的Demo演示,带你端到端地体验从数据处理到最终检索的全过程。
一、多模态商品检索解决方案
1. 搜索场景的演进
在日常的电商平台中,我们对文本搜索场景非常熟悉。例如,当用户搜索“连衣裙”时,其目标明确,就是希望购买一件合适的裙子或了解最新款式。又如,搜索“nike涩谷限定”,这表明用户可能对耐克在特定商圈发售的某些定制款感兴趣,关键词中包含了品牌、地点和限定属性。
然而,纯文本搜索存在明显的痛点。想象一个场景:你在酒店发现一款设计独特的吹风机,却不知道其品牌和型号。此时,你最直观的需求是“以图搜图”,通过拍摄的照片来查找同款商品。这种即时性的、基于视觉的查询需求,是传统文本检索难以满足的。
另一个痛点在于商品视觉元素的缺失。例如一件印有卡通恐龙图案的绿色儿童短裤,其标题和简介可能只会描述为“男童短裤”,却无法体现“绿色”、“卡通”、“恐龙”这些对消费者(尤其是给孩子买衣服的家长)极具吸引力的视觉特征。
多模态与跨模态搜索正是为了解决这些问题而生。它允许用户使用更自然的、多维度的方式进行查询。比如,用户可以直接输入“打乒乓球的小男孩”,系统需要在海量的图片素材中,精准地找出符合这一场景描述的图片,这极大地提升了搜索的精准度和用户体验。
2. 通用的商品检索解决方案架构
一个通用的多模态商品检索解决方案,其核心在于如何处理和融合不同类型的数据。其整体架构可以概括如下:
数据处理层:
商品元数据处理(结构化文本):
数据源:包括商品的标题、描述、类目、标签等结构化文本信息。
处理流程:对这些文本数据进行分词处理,然后构建倒排索引,存入文本引擎中。这是传统搜索的基础。
图片数据处理(非结构化数据):
处理流程一:图片内容理解
通过多模态大模型对图片进行“解读”,生成描述性文本。例如,对于上述的绿色短裤,模型可以生成描述:“这是一张展示绿色短裤的图片,短裤上有一个卡通小恐龙图案”。
这段生成的文本同样可以作为结构化数据,经过分词后存入文本引擎。
- 处理流程二:Embedding(向量化)
利用Embedding技术,将图片本身转换为高维度的数学向量(Vector)。
这个向量可以被认为是图片在数学空间中的“坐标”,它蕴含了图片深层次的视觉特征。
生成的向量数据被存储在向量引擎中。
通过以上步骤,一件商品的数据就被解构为两部分:一部分是存储在文本引擎中的文本信息,另一部分是存储在向量引擎中的向量信息。
- 查询与召回层:
当用户发起查询时,系统会根据查询类型进行多路召回:
文本查询:
文本匹配:用户的查询关键词会直接在文本引擎中进行匹配,召回相关的商品。
语义匹配:同时,用户的查询文本也会通过Embedding技术转换为查询向量,然后在向量引擎中寻找与之最相似的商品向量。
图片查询:
用户上传的图片会被转换成查询向量。
系统使用这个查询向量在向量引擎中进行相似度检索,召回视觉上最接近的商品。
融合与排序层:
Rerank & Score:来自文本引擎和向量引擎的多路召回结果,会经过一个重排序(Rerank)模块。该模块会综合考虑文本相关性得分和向量相似度得分,对结果进行最终排序。
结果返回:将排序后的Top N结果呈现给用户。
这个架构的精髓在于,它结合了文本引擎的精确匹配能力和向量引擎的语义及视觉 相似度检索能力,从而实现了真正意义上的多模态搜索。
二、多模态商品检索关键技术
要实现上述解决方案,离不开两大核心技术:Embedding(向量化)和向量检索。
1. 关键技术一:Embedding(向量化技术)
Embedding的本质,是将真实世界中非结构化的数据(如文本、图像)映射、转换为机器可以理解和计算的结构化数据——向量。
Text Embedding (文本向量化)
文本向量化技术经历了多个发展阶段,目前主流的模型可分为三类:
- Dense Model (稠密模型):
特点:将文本转换为稠密向量,向量中的绝大多数元素都是非零值。这种向量能很好地捕捉文本的深层语义相关性。例如,“国王”和“女王”在语义上相近,它们的稠密向量在空间中的距离也会很近。
代表模型:Word2vec、S-BERT、以及基于大语言模型(LLM)的各类模型。
- Sparse Model (稀疏模型):
特点:将文本转换为稀疏向量,向量中只有极少数元素是非零的,大部分为零。它更侧重于词汇级别的精确匹配,类似于传统搜索中的“词袋模型”的升级版。
代表模型:BM25、SPLADE。
- Hybrid Model (混合模型):
特点:这是当前效果最优、最受关注的模型。它巧妙地结合了稠密模型和稀疏模型的优点。对于一个输入文本,它会同时生成一个稠密向量和一个稀疏向量。
优势:最终得到的混合表征既包含了语义的泛化能力(来自稠密向量),又具备了关键词的精确匹配能力(来自稀疏向量),在各类评测中显著优于单一模型。
Image Embedding (图像向量化)
图像向量化主要借助深度神经网络,特别是卷积神经网络(CNN)。其过程可以通俗地理解为:图片作为输入,经过多层卷积层、激活函数和池化层的“特征提取”,将图片从像素矩阵一步步抽象,最终通过全连接层映射成一个低维度的特征向量。这个向量就是这张图片的高度浓缩的数学表达。
2. 关键技术二:向量检索
向量检索的核心思想是:在由海量向量构成的数学空间中,给定一个查询向量,快速、准确地找到与它“距离”最近的K个邻居(K-Nearest Neighbors, KNN)。这里的“距离”代表了相似度。
向量相似度度量
衡量两个向量有多“近”,主要有以下几种方式:
- 欧氏距离 (Euclidean Distance, L2 Norm):
定义:即空间中两点之间的直线距离。距离越小,代表两个向量越相似。
得分转换:在搜索引擎中,通常会将其转换为一个0到1之间的归一化得分,公式如1 / (1 + L2_norm^2)
,这样距离越小,得分越高,更符合搜索排序的直觉。
- 点积 (Dot Product):
定义:两个向量对应维度相乘后求和。
特点:如果所有向量都经过归一化(长度为1),点积的结果等价于余弦相似度。通常,点积越大,相似度越高。
- 余弦相似度 (Cosine Similarity):
定义:计算两个向量在方向上的夹角的余弦值。它衡量的是方向上的一致性,而不在乎绝对大小。
特点:取值范围在-1到1之间。值为1表示方向完全相同,为-1表示方向完全相反,为0表示正交(不相关)。这是向量检索中最常用的相似度度量之一。
ES对向量功能的支持
Elasticsearch作为业界领先的搜索引擎,近年来在向量检索领域发展迅猛,提供了全方位的支持:
- 字段类型:
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不关心原始分数的大小,只关心文档在不同召回结果集中的“排名”。它通过对排名的倒数进行加权求和,来得到最终的融合排序,是一种更鲁棒的混合排序策略。
3. 向量检索的性能优化:量化技术
向量检索,尤其是处理海量数据时,最大的瓶颈之一是内存消耗。一个高维(如1024维)的float32
向量本身就占用大量空间,而用于加速检索的HNSW图索引也需要消耗可观的内存。因此,向量量化技术应运而生。
- 标量量化 (Scalar Quantization, SQ):
原理:其核心思想是“降维打击”,将高精度的float32
(4字节)数值,量化为低精度的int8
(1字节)甚至更低。它通过分析一个数据段(Segment)内某一维度上所有向量值的最大值和最小值,然后按比例将float32
值映射到int8
的-127到127范围内。
效果:通过SQ,向量本身占用的内存可以轻松降低为原来的1/4(int8
)或1/8(int4
),在牺牲可控精度的前提下,大幅节省内存。
- BBQ (Better Binary Quantization):
背景:BBQ技术源自南洋理工大学的研究论文,是ES在向量量化领域的又一重大突破。
优势:BBQ可以在SQ的基础上,将向量检索占用的内存再降低高达95%。这使得在Elasticsearch中进行百亿级别的海量向量检索成为可能。
劣势与应对:天下没有免费的午餐。BBQ以极低的内存占用为代价,牺牲了一定的召回率。但在实际应用中,可以通过适度增加kNN查询的候选集数量(num_candidates
)等方法,来有效缓解召回率的下降。
应用举例:一个100亿条1024维float32
向量的数据集,原始存储需要约37TB内存。而采用BBQ量化后,加上HNSW图内存,总内存需求可降至约1.8TB,所需计算节点数量从170个骤降至9个,成本效益极高。在BBQ的加持下,HNSW图索引的内存占比反而成为了主要部分。
三、基于Elasticsearch Serverless的最佳实践
理论的先进性最终要通过实践来检验。我们将介绍如何基于阿里云的两大产品——AI搜索开放平台和Elasticsearch Serverless,构建一套高效、易用的多模态商品搜索系统。
1. 整体实践架构
我们的最佳实践架构如下:
数据源:商品数据存储在云数据库RDS中,包含商品ID、文本描述和图片信息。
AI搜索开放平台:
离线数据服务:负责从RDS中抽取数据。
多模态向量服务:调用平台内置的AI模型(如M2-Encoder、Qwen2-VL等),将商品的文本和图片数据统一转换为多模态向量。
数据写入:将处理好的文本数据和向量数据写入Elasticsearch Serverless。
Elasticsearch Serverless:
作为核心的文本引擎和向量引擎,存储商品的文本索引和向量索引。
在线查询:
用户通过前端应用发起查询(文本或图片)。
查询请求经过AI搜索开放平台的多模态向量服务进行向量化。
向量化的查询请求被发送到Elasticsearch Serverless进行多路召回(文本+向量)。
ES返回Top N结果,最终呈现给用户。
2. 阿里云AI搜索开放平台
这是一个一站式的、企业级的AI搜索解决方案平台,其分层架构清晰,功能强大:
底层(数据源与管理):支持多种数据源接入,包括对象存储(OSS)、数据库(MySQL)、数据湖(Hudi, Iceberg)和大数据计算平台(MaxCompute)等。
中层(核心服务与生态):
搜索微服务:提供文档解析、多模态解析、向量化、Rerank、LLM推理、LLM Agent等一系列原子化的AI能力。
开放框架与生态:无缝对接LangChain、LlamaIndex等主流开发框架,并支持集成多种向量数据库(如Milvus、Havenask以及Elasticsearch)。
上层(应用开发与部署):提供AI搜索应用场景的快速开发能力,并支持通过函数计算(FC)、PAI等多种方式进行应用部署。
该平台预置了丰富的AI模型,如文档解析、图片解析、文本向量化、多模态向量化、Reranker、大模型生成等,并且提供了“体验中心”,让开发者可以快速验证模型效果,例如输入文本或上传图片,即可看到其生成的向量结果。
3. Elasticsearch Serverless
这是阿里云上的一种全托管、智能化的Elasticsearch服务形态,它与传统的IaaS/PaaS模式有着本质区别,为多模态搜索场景提供了极致的便利。
技术架构
其核心是一个Serverless Proxy,它对用户屏蔽了底层集群的复杂性,负责鉴权、路由和请求改写。Proxy后面是读写分离的Elasticsearch服务集群和元数据服务,底层基于分布式存储。整个系统由应用管控系统和智能运维系统进行管理和调度,实现了从资源到运维的全方位自动化。
核心优势
优势一:免运维
版本无感:用户无需再为追赶ES社区日新月异的向量功能版本而烦恼,也无需担心安全漏洞。Serverless平台会自动保持内核的最新和最优化。
资源无感:彻底屏蔽了集群、节点、分片、规格配置等复杂的物理概念。用户面对的只是一个逻辑上的“应用”,无需进行容量规划。
开箱即用的监控:默认提供面向业务的应用读写QPS、索引流量等核心指标监控。
优势二:低成本
极低的接入成本:创建一个Serverless应用仅需数秒,即可获得访问地址和配套的Kibana。对于需要快速迭代验证算法的开发者来说,这是巨大的便利。
真正的按量付费:打破了传统包年包月的固定付费模式。以CU(Compute Unit)为计算资源单位,按实际使用量计费,计费粒度细化到秒级,完美匹配业务流量的潮汐变化,杜绝资源浪费。
优势三:高弹性
资源自动扩缩:系统会根据应用的实时和历史负载水位,动态、透明地调配底层资源。当业务高峰来临时,资源会自动扩容以支撑流量;当流量回落时,资源会自动缩减以节约成本。
配置自动调整:除了计算资源,系统还会智能地调整索引副本数、限流阈值等配置,以达到最佳性能和稳定性的平衡。
优势四:无缝集成AI模型
AI模型开箱即用:Serverless应用无缝集成了AI搜索开放平台上的所有模型,用户可以直接在ES内部通过Inference API调用它们。
支持自定义模型:更强大的是,它允许用户接入自己的、或第三方的优秀模型。只需通过简单的API配置,即可将任意外部模型集成到ES的Inference体系中,这为算法的灵活性和先进性提供了无限可能。
优势五:向量场景深度优化
智能过滤向量字段:默认在_source
中排除向量字段,节省存储和传输资源,避免不必要的数据暴露。
向量默认量化策略:用户可以一键开启int8
或BBQ
等默认量化策略,无需关心底层实现细节,即可享受量化带来的内存和成本优势。
向量自适应预热:系统会自动将不同类型的向量索引文件(HNSW图、量化向量等)预加载到文件系统缓存中,减少首次查询的冷启动延迟,提升高并发场景下的响应稳定性和吞吐量。
四、Demo演示(视频)
下面,我们将通过一个端到端的Demo,展示如何利用上述技术和产品,快速搭建一个多模态商品搜索应用。