微调稀疏嵌入用于电子商务搜索 | 第一部分:为什么稀疏嵌入优于 BM25
本文是系列文章的第一部分,探讨了在电子商务搜索中微调稀疏嵌入的优势。与密集嵌入相比,稀疏嵌入保留了精确匹配的关键细节,避免了语义模糊导致的不相关结果。文章介绍了SPLADE模型的工作原理、查询扩展能力以及Qdrant数据库对稀疏向量的原生支持。通过微调,该系统在Amazon ESCI数据集上实现了比BM25高出29%的性能提升。
在电子商务搜索中,细节决定成败。搜索“iPhone 15 Pro Max 256GB”时,密集嵌入系统可能返回128GB版本,因为语义相似性高,但客户明确指定了256GB。这种差异揭示了传统嵌入方法的根本缺陷:它们将文本压缩成固定大小的向量,模糊了关键属性。而稀疏嵌入通过保留每个词的精确权重,解决了这一问题。
本文是五部分系列文章的第一部分,旨在构建一个完整的微调稀疏嵌入系统,最终在Amazon ESCI数据集上实现比BM25高29%的检索性能。我们将从数据加载、GPU训练、评估到困难负样本挖掘,逐步实现生产级系统。
密集嵌入在电子商务中的问题
密集嵌入(如OpenAI、Cohere或微调句子变换器)将文本压缩为384至1536维的稠密向量,擅长捕获语义相似性。然而,这种优势在电子商务中成为弱点:精确匹配被模糊化,SKU编号、型号名称、特定规格等关键区分项被平均化到相同向量空间;近似最近邻索引导致召回率与速度的权衡;结果不可解释,难以回答“为什么产品A排在B之前”。
稀疏嵌入的解决方案
稀疏嵌入将文本投影到大型词汇空间(通常30000+维度),但只有100-300个非零值。每个维度对应一个实际词汇,权重可解释。与BM25类似,稀疏嵌入使用倒排索引进行精确检索,无需近似,同时保留精确匹配能力。
SPLADE模型
SPLADE(稀疏词汇扩展)是核心架构。它通过Transformer和掩码语言模型头处理文本,然后应用最大池化和对数饱和度(log(1+ReLU(x)))生成稀疏权重。例如,输入“noise canceling headphones”会输出包含“headphones”(2.3)、“noise”(1.9)、“canceling”(1.7)、“audio”(1.2)等权重的稀疏向量。对数饱和度防止单个词主导得分。
模型同时学习三件事:权重重要词、扩展查询相关词、抑制噪声。查询“summer dress”除了保留原词,还自动添加“sundress”、“floral”、“cotton”等扩展词,匹配BM25无法找到的产品。
Qdrant对稀疏向量的支持
Qdrant数据库将稀疏向量视为一等公民,支持加权稀疏向量、混合搜索(通过RRF融合稀疏和密集结果)和倒排索引。与ANN不同,稀疏检索精确且不牺牲召回率。
技术栈
训练流水线结合Modal(按需A100 GPU)、Sentence Transformers v5(包含SparseEncoder架构和SpladeLoss)和Qdrant(原生稀疏向量支持)。整套代码开源,并提供CLI工具一键微调。
系列展望
后续文章将详细介绍训练、评估、困难负样本挖掘、领域专业化与泛化,以及生产部署。最终模型在Amazon ESCI上nDCG@10达到0.388,远超BM25的0.301。