spotify/voyager

🛰️ An approximate nearest-neighbor search library for Python and Java with a focus on ease of use, simplicity, and deployability.

🎯 Voyagerとは?

Voyagerは、近似最近傍探索 (ANN) アルゴリズムを使用して、大規模なベクトル集合(埋め込みなど)を高速に検索できるオープンソースライブラリです。人気のある hnswlib プロジェクトをベースに、HNSW (Hierarchical Navigable Small World) グラフ手法を実装し、パフォーマンスと使い勝手を大幅に向上させています。このライブラリは Python、Java、Scala で利用可能で、言語バインディング間でインデックス形式が共通化されているため、一度インデックスを作成すれば、どのランタイムからでもクエリを実行できます。


🚀 主な機能 (READMEより)

機能 詳細
高速なANN検索 高い再現率と低いクエリレイテンシで知られるHNSWを使用。
クロス言語バインディング Python、Java、Scalaで同一のインデックス形式と機能セットを提供。
プロダクション品質 Spotifyで導入されており、1日あたり数億件のクエリを処理。
インメモリ専用 超高速検索のためにインデックスをRAM上に保持(ディスク永続化なし)。
幅広いプラットフォーム対応 macOS、Linux、Windows。Pythonはx86_64とARM (Apple Silicon) をサポート。JavaはLinux/macOSでARMをサポート。
簡単なインストール Pythonは pip install voyager、Java/ScalaはMaven/GradleまたはSBT座標を使用。
Apache 2.0ライセンス 商用・非商用問わず無料で使用可能。

📦 はじめ方

Python

pip install voyager
import voyager as vg
# 例 (擬似コード、正確なAPIはドキュメントを参照)
index = vg.Index(dim=128)
index.add(vectors, ids)
neighbors = index.search(query_vector, k=10)

Java (Maven)

<dependency>
  <groupId>com.spotify</groupId>
  <artifactId>voyager</artifactId>
  <version>2.1.0</version>
</dependency>
import com.spotify.voyager.Index;
// インデックスの構築とクエリ – 正確な呼び出しはJavaドキュメントを参照

Scala (SBT)

libraryDependencies += "com.spotify" % "voyager" % "2.1.0"

🎯 代表的なユースケース

  • セマンティック検索:テキスト埋め込みに対する検索(類似ドキュメント、FAQ、製品説明の検索など)。
  • レコメンデーションシステム:埋め込み空間内で最近傍のアイテムを取得する必要があるシステム。
  • クラスタリング / 重複排除:高速な類似度検索が必要なパイプライン。
  • AI/MLアプリケーション:高次元ベクトルを生成し、リアルタイムの最近傍クエリを必要とするあらゆるアプリケーション。

📚 ドキュメントとリソース


🛡️ ライセンス

Voyagerは Apache 2.0 License (寛容なオープンソースライセンス) の下でリリースされています。商用製品を含め、無料での使用、変更、配布が可能です。


🙋‍♀️ 貢献

貢献を歓迎します。バグ報告、機能強化の提案、プルリクエストの提出方法については、リポジトリ内の CONTRIBUTING.md ファイルを参照してください。

関連

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