eコマース検索において、細部が重要です。「iPhone 15 Pro Max 256GB」を検索すると、密な埋め込みシステムは128GBモデルを返すかもしれません。意味的類似性は高いですが、顧客は256GBを指定しています。この違いは、従来の埋め込み手法の根本的な欠陥を明らかにします。テキストを固定サイズのベクトルに圧縮し、重要な属性をぼやけさせるのです。一方、スパース埋め込みは各単語の正確な重みを保持することで、この問題を解決します。
本記事は5部構成のシリーズの第1回であり、Amazon ESCIデータセットでBM25を29%上回る検索性能を達成するファインチューニング済みスパース埋め込みシステムを構築することを目的としています。データ読み込み、GPUトレーニング、評価、ハードネガティブマイニングまで、本番環境対応のシステムを段階的に構築します。
eコマースにおける密な埋め込みの問題
密な埋め込み(OpenAI、Cohere、またはファインチューニングされた文変換器)は、テキストを384〜1536次元の密なベクトルに圧縮し、意味的類似性のキャプチャに優れています。しかし、この利点はeコマースでは弱点になります。完全一致がぼやけ、SKU番号、モデル名、特定のサイズなどの重要な識別子が類似したベクトル空間に平均化されます。近似最近傍インデックスは再現率と速度のトレードオフを引き起こし、結果の解釈が不可能になります。
スパース埋め込みの解決策
スパース埋め込みは、テキストを大規模な語彙空間(通常30,000+次元)に投影しますが、非ゼロ値は100〜300個のみです。各次元は実際の単語に対応し、重みは解釈可能です。BM25と同様に、転置インデックスを使用して正確な検索を実行し、近似を必要としません。
SPLADEモデル
SPLADE(Sparse Lexical and Expansion)が中核アーキテクチャです。Transformerとマスク言語モデルヘッドでテキストを処理し、最大プーリングと対数飽和(log(1+ReLU(x)))を適用してスパース重みを生成します。例えば、「noise canceling headphones」という入力は、「headphones」(2.3)、「noise」(1.9)、「canceling」(1.7)、「audio」(1.2)などの重みを持つスパースベクトルを出力します。対数飽和により、単一の単語がスコアを支配するのを防ぎます。
モデルは同時に3つのことを学習します:重要な単語の重み付け、クエリ関連単語の拡張、ノイズの抑制。クエリ「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を大きく上回ります。