datastax/jvector
JVector: the most advanced embedded vector search engine
JVectorとは
JVectorは、グラフベースの近似最近傍 (ANN) インデックスを実装したオープンソースのJavaライブラリです。HNSW (Hierarchical Navigable Small World) とDiskANNのVamanaという2つの有名なANNアルゴリズムのアイデアを組み合わせることで、メモリとディスクの両方にまたがって保持できる、高速でスケーラブルな検索構造を提供します。
なぜ重要なのか
巨大な高次元データセットから k 個の最も類似したベクトルを見つけることは、多くのAIシステム(セマンティック検索、レコメンデーション、クラスタリングなど)における中核的な操作です。正確な検索は大規模なデータセットでは遅すぎるため、ほとんどのプロダクションシステムではANNが使用されています。JVectorのハイブリッドグラフ設計により、以下のことが可能になります:
- 対数時間での検索を行いながら、メモリフットプリントを小さく保つ。
- RAMを超えるサイズのインデックスを構築する。メモリ内での高速な圧縮による第1パスと、ディスクからデータを読み込む正確な第2パスという2パスアプローチを採用しています。
- CPUコア数に応じて線形に構築をスケールさせる。非ブロッキング並行処理のおかげで、数十億のベクトルをインデックス化する必要がある場合に非常に有効です。
主な機能 (READMEより)
| 機能 | 内容 |
|---|---|
| マルチレイヤーグラフ | 上位レイヤーは超高速ナビゲーションのための純粋なメモリ内隣接リストであり、最下層はディスク上に存在します。 |
| 2パス検索 | 第1パスでは速度と低メモリのために圧縮表現(Product Quantization, Binary Quantization, または fused PQ)を使用し、第2パスではフル精度の float32 または NVQ ベクトルで結果を精査します。 |
| 増分構築 | 静的なデータセットを必要とする多くのパーティションベースのANN手法とは異なり、インデックスは増分的に更新・構築可能です。 |
| 非ブロッキング並行処理 | READMEのスケールチャートに示すように、コア数に応じて構築が線形にスケールします。 |
| クロスプラットフォームネイティブSIMD | Meson/Ninjaでビルドされたネイティブライブラリ (libjvector.so) が、Linux x86‑64およびAArch64上でSIMD加速された距離計算を提供します。 |
| マルチリリースJAR | Java‑11互換コードとJava‑20固有の最適化を単一のアーティファクトにパックしており、Java 11以降のプロジェクトで使用可能です。 |
| ベンチマークと例 | すぐに実行可能な Bench および SiftSmall クラス、さらに jvector-examples 内のチュートリアルコードが含まれています。 |
想定されるユーザー
- セマンティック検索やレコメンデーションサービスを構築するエンジニア。数十億の埋め込みベクトルに対してサブミリ秒のレイテンシを必要とする場合。
- 新しいANNアルゴリズムをプロトタイプする研究者。Javaで書かれた堅牢でプロダクショングレードのベースラインを求めている場合。
- 埋め込みベクトルをディスクに保存している企業(例:大規模なドキュメントや画像ベクトル)。インデックス全体をRAMに収められない場合。
はじめ方 (クイックステップ)
- サブモジュールを含めてクローン – リポジトリはGoogleのHighway SIMDライブラリを取り込みます。
- ネイティブライブラリのビルド –
build_native_lib.sh(Linuxのみ) を実行してlibjvector.soを取得します。 - Javaモジュールのコンパイル –
mvn clean install(またはJava 11の場合はmvn -Pjdk11)。 - チュートリアルの実行 –
docs/tutorials/1-intro-tutorial.mdに従うか、VectorIntro.javaを確認してください。 - ベンチマーク –
mvn compile exec:exec@benchを実行して標準データセットでのパフォーマンスを確認します。
AIランドスケープにおける位置付け
JVectorはモデルトレーニングフレームワークではありません。すでにベクトル埋め込み(LLM、CLIP、sentence‑transformersなどから)を持つアプリケーションの背後で動作する検索エンジンコンポーネントです。高性能でディスクバックアップされたANNインデックスを提供することで、膨大なRAMを必要とせずに最近傍を迅速に取得できるようにし、大規模なセマンティックAIシステムをより実用的なものにします。
上記のすべての情報は、リポジトリのREADMEから直接引用しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト