本文へスキップ
ReviewRamble

週刊ブリーフ

AIのレビューを、あなたの受信箱に。

  • ツール、モデル、MCPサーバー、リポジトリの新しいレビュー(結論を最初に)
  • 変更があったときに再確認した価格と評価
  • 公開された新しい分析記事

モデル、エージェント、MCPサーバー、そして本当に時間をかける価値のあるツール。

週に1通です。配信停止は各メールのリンクからできます。 メールアドレスの利用について

AIニュースと研究

ニュース ·

Sentence Transformers、マルチベクトル索引を小さくするプーリング対応学習を追加

Tom Aarsen氏はSentence Transformersに、文書の埋め込みを元のままとプーリング後の両方で学習させる損失関数を追加しました。ModernBERTモデルの文書を約193ベクトルから49ベクトルにまとめても、プーリング前の検索品質の97.8%を保ち、通常の学習の94.6%を上回りました。上限を4ベクトルにした場合の改善はnDCG@10で5.78ポイントです。

ColBERT型のモデルで自分の文書を検索しているなら、インデックスは望むより大きくなっているでしょう。こうしたマルチベクトルモデルは文書ごとに一つではなくトークンごとにベクトルを持つため、精度が高い反面、保存コストがかかります。Hugging Faceのブログの新しい記事は、Sentence Transformersで、ベクトルを圧縮した後も精度を保つようにモデルを訓練できるようになったことを示しています。圧縮で普通は失われる品質の大半を取り戻せるといいます。

保存の問題は具体的です。座標あたり4ビットの場合、128次元のベクトル200個で文書1件あたり12.8 KB、100万件では12.8 GBになります。各文書を50ベクトルにまとめれば3.2 GBに減ります。ライブラリのHierarchicalTokenPoolingは、Ward法のクラスタリングで似たトークンベクトルをまとめます。固定の倍率でまとめることも、目標の平均値に合わせて調整できる距離のしきい値でまとめることもでき、クエリ側のベクトルには手を付けません。プーリングはどのマルチベクトルモデルにも使えますが、それを前提に訓練されていないモデルでは重要な区別が失われることがあります。

新しいのは損失関数のラッパーMultiVectorTokenPoolingLossで、各バッチを二つの形で学習させます。文書の全ベクトルと、約4分の1にまとめた版です。考え方は、短くした先頭部分でも役立つように訓練するMatryoshka埋め込みに似ています。著者の実験では、二つのModernBERT-baseモデルを同じ120,000件のMS MARCOトリプレットで1エポック訓練し、違いは損失関数だけにしました。プーリング倍率4では、通常のモデルはプーリングなしのNanoBEIRスコアの94.6%を保ったのに対し、プーリングを意識して訓練したモデルは97.8%を保ち、nDCG@10は49.03から51.23に上がり、保存する文書ベクトルは74.8%少なくなりました。プーリングなしの品質もわずかに向上しました。クラスタリング用のGPUカーネルはSciPyより30-150x速いとされています。

Sentence Transformersを土台とするLightOnのColBERT型検索ライブラリPyLateを使うチームには直接関係があります。この研究はLightOn自身のプーリング正則化の研究を下敷きにしており、訓練手順はHugging Face Jobsを使えばA10G 1枚で4時間以内に収まります。実際的な助言は、量子化、プーリング、Matryoshkaによる切り詰めを組み合わせ、インデックスの大きさと品質を自分のコーパスで測ることです。

注意点は著者自身が挙げています。これは一つのベースモデルによる一回の実験で、ハイパーパラメータの探索はしておらず、評価は小規模なベンチマーク群NanoBEIRで行っています。効果が最もはっきりするのは訓練時と同じプーリング倍率で、他の設定にもある程度引き継がれます。長い文書や特定分野の文書では結果が異なる可能性があります。

結論: ColBERT型の検索が敬遠される主な理由は保存容量で、ベクトルを4分の3減らしても品質低下が小さいなら計算が変わります。ただテストは1エポックだけ学習した小型モデルなので、索引を作り直す前に自分のデータで確かめてください。

関連レビュー:PyLate

出典: Hugging Face

その他の記事