埋め込みベクトルを縮小する:Matryoshka vs PCA、どちらが優れているか

Honey, I shrunk the embeddings: Matryoshka vs. PCA

埋め込みベクトルを縮小する:Matryoshka vs PCA、どちらが優れているか

LLMの利用拡大に伴い、ベクトルデータベースのコストと速度が問題となっている。Matryoshka Representation Learning (MRL)は学習時に次元削減を組み込む手法で、PCAは学習後に適用可能な古典的手法だ。8つのBEIRデータセットで両手法を比較した結果、PCAはMRL訓練済みモデルでも非MRLモデルでも、特に低次元でMRLトランケーションと同等以上の検索品質を維持した。また、PCAのフィッティングデータの規模やドメイン外のデータでも性能は大きく劣化しないことがわかった。

  1. hanneshdc

    良いベンチマークですね!

    > 量子化と切り詰めやPCAを組み合わせることで、さらにベクトルを小さくできます。結果として得られるベクトルは劇的に小さくなりながらも、検索品質を驚くほど保つことができます。

    直感に反しますが、量子化は量子化の前にランダム回転ステップと組み合わせることもできます。ランダム回転は情報をより多くの次元に広げるため、精度を失うことなくより積極的な量子化が可能になります。皮肉なことに、これはPCAとはほぼ正反対です。

    ここで関連するかどうかは疑問ですが、これは埋め込みに「構造」があること、つまり主成分が基底ベクトルに沿っていることに依存しており、テキスト埋め込みではそうでない場合があります。

    出典: https://research.google/blog/turboquant-redefining-ai-effici...

  2. stephantul

    素晴らしい!私も似たようなことに取り組んでいて、同様の結果を見つけました。

    私の実験では、多くの埋め込みモデルを使用しましたが、結果はこの曲線ほど一様ではありませんでした。参考までに。APIベースのモデルは使用していませんでした。

    また、静的モデルを量子化する際のPCAとMRLのこの正確な比較についても書いています。参照: https://stephantul.github.io/blog/mrl-pca/

  3. purplemoonx

    モデルをトレーニングする際に、複数のプレフィックス長(最初の64次元、最初の128次元など)で損失を適用します。これにより、ベクトルの先頭に最も重要な情報を詰め込むことを学習します。まるで入れ子になったマトリョーシカ人形のように。

    これが実験で示されているように機能するなら、魅力的です。例えば、シームカービングやインペインティングのような古典的な画像リサイズアルゴリズムとどう比較されるのでしょうか: https://en.wikipedia.org/wiki/Seam_carving, https://en.wikipedia.org/wiki/Inpainting

    (比較できるのでしょうか?)

    圧縮/損失、そしてその逆のスケールアップや過度の平滑化は、これらの分野でほんのわずかな革新が起こるたびに、他のすべての技術が一夜にして向上し、多くの新しい技術が可能になるという点で魅力的です。

この日のほかの記事

2026-08-09