RyanCodrai/turbovec

A vector index built on TurboQuant, written in Rust with Python bindings

解決する課題

turbovecは、膨大なベクトル埋め込みのコレクションを保存および検索するための、高性能でメモリ効率の高い手段を提供します。ベクトルを1次元あたり2ビットまたは4ビットで保存することでメモリ使用量を大幅に削減しつつ、高い検索速度と再現率を維持します。これにより、専用のデータベースサーバーのオーバーヘッドなしで大規模なベクトルストレージが必要な、ローカルのプロセス内アプリケーションに適しています。

仕組み

このライブラリは、共有のランダム直交行列でベクトルを回転させて座標が予測可能な分布に従うようにする量子化技術、TurboQuantを使用しています。次に、事前計算されたLloyd-Maxコードブックを使用してこれらの座標を量子化し、ビットにパックします。検索時には、SIMD最適化されたカーネルを使用して、圧縮されたデータに対して直接高速な内積検索を実行します。増分更新、アトミックなファイル同期、および許可リストやビットマスクによるフィルタリングをサポートしています。

対象ユーザー

PythonまたはRustでローカルAIアプリケーションを構築しており、RAMの制約がある中で大規模なデータセット(数百万の埋め込みなど)に対して高速な類似検索を実行する必要がある開発者向けです。独立したベクトルデータベースサービスよりもプロセス内ライブラリを好み、損失のある量子化検索アプローチを許容できるユーザー向けに設計されています。

ハイライト

  • 極限の圧縮: float32ストレージと比較して、メモリフットプリントを最大15.5倍削減。
  • 高性能: ARMおよびx86アーキテクチャの両方で、FAISS FastScanよりも大幅に高速な検索を実現。
  • トレーニング不要: 数学的なコードブックを使用するため、新しいデータを追加する際にトレーニングフェーズやインデックスの再構築が不要。
  • ドロップイン統合: LangChain, LlamaIndex, Haystack, Agno などの一般的なフレームワークと互換性あり。
  • ローカルかつ永続的: プロセス内で完全に動作し、アトミックでクラッシュセーフな永続化をサポート。

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト