本番環境でベクトルワークロードを運用している方なら、Qdrantの圧縮階層をご存知でしょう。float32がベースライン、スカラー量子化(SQ)はベクトルを4倍に圧縮し、ほとんど再現率を損ないません。バイナリ量子化(BQ)は16倍または32倍の圧縮率を提供します。
Qdrant 1.18では、Google Researchが開発した新しい回転ベースのベクトル量子化手法TurboQuantが導入され、実際のプロダクション埋め込みにも使えるよう拡張されました。公開ベンチマークデータセットでの結果を要約すると、TurboQuant 4ビットはSQと競合し、ほとんどのデータセットで1~2ポイント以内の差で、時にはSQを上回ります。TurboQuant 2ビットおよび1ビットは、BQと同じストレージ予算で一貫して高い再現率を実現します。
推奨事項は明確です。現在SQまたはBQを使用している場合は、データのテストサブセットで同等のTurboQuant設定を試してください。設定変更と再インデックスだけで完了します。SQからTQ 4ビットへの移行は、競争力のある再現率でメモリを節約します。BQから同じストレージクラスのTurboQuantへの移行は、同じメモリで再現率が向上します。
TurboQuantの仕組み
TurboQuant(Zandiehら、2026)は、Product Quantization(PQ)ファミリーに属する回転ベースのベクトル量子化アルゴリズムです。各ベクトルにランダムな直交回転を適用し、座標間の分散を均等に分散させます。その後、標準正規分布用の固定ルックアップテーブル(Lloyd-Maxコードブック)を使用して各座標を独立に量子化し、コードブックのインデックスから直接ドット積を再構築します。回転は直交しているため、ドット積とL2距離が保存されます。
利点は、データセットごとのトレーニングやキャリブレーションセット、コードブックの永続化が不要なことです。コードブックは標準正規分布から一度導出され、普遍的です。PQとは異なり、学習済みコードブックをインデックスと共に出荷する必要はありません。
Qdrantによる拡張
Qdrantは、TurboQuantに以下の拡張を追加しました。
- 長さの再正規化:バニラMSEバリアントには長さバイアスがあり、量子化ベクトルが系統的に短くなります。QdrantはRaBitQのアイデアを借用し、ベクトルごとに量子化で縮んだ長さの比率を記録するスカラーを追加し、スコアリング時に乗算します。4バイトと1回の乗算でバイアスを除去します。
- 座標ごとの較正(異方性補正):回転ステップはデータが等方的であることを前提としていますが、実際の埋め込みは異方的なことが多く、一部の方向に分散が集中します。Qdrantはセグメントごとに前処理として、回転後の各座標に対して(シフト、スケール)ペアを推定し、分布を固定コードブックに合わせます。これにより、座標がコードブックから外れるのを防ぎます。
パフォーマンスベンチマーク
4つの代表的なデータセットでのHNSW(m=16, ef_construct=128)再現率テストの結果:
- TQ 4ビット(8倍圧縮)はSQ(4倍圧縮)に匹敵し、一部のデータセットでは4.6ポイント上回りました。
- TQ 2ビット(16倍圧縮)はBQ 2ビットを11~15ポイント上回りました。
- TQ 1ビット(32倍圧縮)はBQ 1ビットを9~21ポイント上回りました。
完全な結果は記事内の詳細表を参照してください。TurboQuantはベクトル検索における効率と精度の新たなバランスを提供します。