在電子商務搜索中,細節決定成敗。搜索“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。