turbovec: とは何であるか、どのような問題を解決するか、そしてなぜ注目を集めているのか
turbovec: とは何であるか、どのような問題を解決するか、そしてなぜ注目を集めているのか
解決する問題
turbovecは、大規模なベクトル検索における膨大なRAM要件を削減するために設計された、高性能なベクトルインデックスです。高い検索速度と再現率(recall)を維持しながら、数百万のドキュメントをメモリのわずかな一部に収めることを可能にします(例:31 GBが必要な1000万ドキュメントを4 GBに収める)。これにより、エアギャップ環境やメモリ制約のあるRAGスタックに最適です。
仕組み
Google ResearchのTurboQuantアルゴリズムに基づいて構築されたこのプロジェクトは、別途のトレーニングフェーズを必要としないデータ・オブリビアス(data-oblivious)な量子化器を使用しています。プロセスは以下の通りです:
- 正規化と回転: ベクトルは単位方向に正規化され、座標分布を予測可能にするためにランダムな直交行列が乗算されます。
- キャリブレーション (TQ+): 初回のインジェスト中に、経験的なデータを標準的なBeta分布にマッピングするために、各座標に対してシフトとスケールが適合されます。
- Lloyd-Max 量子化: 座標は、事前計算された最適な境界を使用して、2ビットまたは4ビットの整数にバケット化されます。
- 長さの再正規化: 量子化によって引き起こされる内積の系統的な過小評価を修正し、バイアスのないスコアリングを確保するために、ベクトルごとにスカラー値が保存されます。
- SIMD 検索: 検索は、完全な展開を行わずにコードブックの値に対して直接スコアリングを行う、手書きのNEON (ARM) および AVX-512BW (x86) カーネルを使用して実行されます。
対象ユーザー
プライバシー、低レイテンシ、およびメモリ効率が極めて重要となる、Retrieval-Augmented Generation (RAG) アプリケーションを構築している開発者、特にローカル環境やエアギャップ環境を使用している開発者に適しています。
ハイライト
- オンライン・インジェスト: コーパスが増大しても、トレーニングステップ、パラメータ調整、またはインデックスの再構築は必要ありません。
- 極限の圧縮: 再現率の損失を最小限に抑えつつ、最大16倍の圧縮(例:FP32から2ビットへ)を実現します。
- 高いパフォーマンス: ARM上ではFAISS IndexPQFastScanを10〜19%上回り、x86上でも競争力のある性能を維持します。
- フィルタリング検索: 許可リスト(allowlist)を介した検索時のフィルタリングをサポートしており、これは不要な計算を避けるためにSIMDカーネルに直接統合されています。
- フレームワーク統合: LangChain、LlamaIndex、Haystack、および Agno のインメモリ・ベクトルストアのドロップイン・リプレイスメントとして利用可能です。
- 完全ローカル: マネージドサービスは提供されず、データはローカルマシンまたはVPC内に留まります。
Sources
- undefinedRyanCodrai/turbovec