Nearest Neighbor Descentを基盤に、幅広い距離指標に対応した純Python製の近似最近傍探索ライブラリ。
microsoft/SPTAG
大規模な近似最近傍ベクトル検索に対応し、インデックス構築・検索・分散サービングのツールキットを備えたC++ライブラリです。
- スター
- 5,021
- フォーク
- 625
- 未解決の Issue
- 143
- 最終コミット
- 18 時間前
これは何?
SPTAG(Space Partition Tree And Graph)は、ベクトルを対象とする近似最近傍検索ライブラリです。セマンティック検索やレコメンデーションシステムで使われる検索方式です。クエリベクトルを与えると、保存されているベクトルのうちL2距離またはコサイン距離が最小のものを返します。わずかな精度を犠牲にすることで、全件比較よりも大幅に高速な検索を実現します。
インデックスには2種類あります。kd-treeを使い、インデックス構築コストが低いSPTAG-KDTと、バランスの取れたk-means treeを使い、超高次元データでより高い検索精度を目指すSPTAG-BKTです。どちらも空間分割木と相対近傍グラフを組み合わせ、検索時に両者を交互に探索して結果を見つけます。
ライブラリは、インデックスを全面的に再構築することなく、ベクトルのオンライン挿入・削除に対応します。また、複数マシンに検索を分散できます。Python wrapperを備え、Linux、Windows、Docker上でビルドできます。
主な機能
- 01ベクトル類似度の計算にL2距離とコサイン距離を利用できます。
- 02kd-tree(SPTAG-KDT)とバランスの取れたk-means tree(SPTAG-BKT)の2種類のインデックスを利用できます。
- 03インデックスを再構築せずに、ベクトルをオンラインで挿入・削除できます。
- 04サービング用に、複数マシンへ検索を分散できます。
- 05Python wrapperと、オンラインベクトル検索サービスを構築するチュートリアルが含まれています。
ユースケース
- 埋め込みベクトルを対象とする大規模なセマンティック検索バックエンドの構築。
- レコメンデーションや画像類似検索向けの最近傍検索の提供。
- 頻繁に変化し、オンライン更新が必要なデータセットのインデックス作成。
- 1つのインデックスに収まらない規模のベクトル検索を複数マシンで実行。
クイックスタート
- 1
サブモジュールを含めてリポジトリをクローンします
git clone --recurse-submodules https://github.com/microsoft/SPTAG - 2
build ディレクトリから CMake でビルドします(swig、cmake、boost が必要です)
mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make - 3
Release フォルダーで SPTAGTest バイナリを実行し、ビルドを確認します
使う前に知っておきたいこと
- ソースからのビルドには swig、cmake、boost が必要で、Linux と Windows では手順が異なります。
- リポジトリを高速にクローンするには、Git LFS とサブモジュールが必要です。
収録されている特集
トピック
よくある質問
- SPTAG とは?
- 大規模な近似最近傍ベクトル検索に対応し、インデックス構築・検索・分散サービングのツールキットを備えたC++ライブラリです。 SPTAG(Space Partition Tree And Graph)は、ベクトルを対象とする近似最近傍検索ライブラリです。セマンティック検索やレコメンデーションシステムで使われる検索方式です。クエリベクトルを与えると、保存されているベクトルのうちL2距離またはコサイン距離が最小のものを返します。わずかな精度を犠牲にすることで、全件比較よりも大幅に高速な検索を実現します。
- SPTAG は無料で使えますか?ライセンスは?
- SPTAG は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- SPTAG は今もメンテナンスされていますか?
- 活発にメンテナンス中。SPTAG の最終コミットは 2026年11月6日 です。
- SPTAG は何に使えますか?
- 埋め込みベクトルを対象とする大規模なセマンティック検索バックエンドの構築。 レコメンデーションや画像類似検索向けの最近傍検索の提供。 頻繁に変化し、オンライン更新が必要なデータセットのインデックス作成。 1つのインデックスに収まらない規模のベクトル検索を複数マシンで実行。
- SPTAG のインストール方法は?
- サブモジュールを含めてリポジトリをクローンします: git clone --recurse-submodules https://github.com/microsoft/SPTAG build ディレクトリから CMake でビルドします(swig、cmake、boost が必要です): mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make Release フォルダーで SPTAGTest バイナリを実行し、ビルドを確認します
- SPTAG はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/microsoft/SPTAG
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
HNSWグラフアルゴリズムによる高速な近似最近傍探索を実現する、Pythonバインディング付きのヘッダーオンリーC++ライブラリ。
グラフおよびツリーインデックスを使い、高次元ベクトルを高速に近似最近傍検索するC++ライブラリとCLI。
Python、JavaScript、Rust、Java、Go、Swiftなどのバインディングを備えた、近似最近傍ベクトル検索とクラスタリング用の単一ファイルC++ライブラリ。
pgvector上にDiskANNベースのインデックスとラベルフィルタリングを追加し、ベクトル検索を高速化・低コスト化するRust製Postgres拡張。
Postgresにベクトル類似検索機能を追加し、リレーショナルデータとともにembeddingを保存・検索できるオープンソース拡張機能。