大規模な近似最近傍ベクトル検索に対応し、インデックス構築・検索・分散サービングのツールキットを備えたC++ライブラリです。
NGT-labs/NGT
グラフおよびツリーインデックスを使い、高次元ベクトルを高速に近似最近傍検索するC++ライブラリとCLI。
- スター
- 1,376
- フォーク
- 133
- 未解決の Issue
- 29
- 最終コミット
- 7 日前
これは何?
NGTは、数十次元から数千次元の高次元ベクトルを大量に扱う近似最近傍検索向けのコマンドとライブラリを提供します。近傍グラフとツリーのインデックスを構築することで、クエリを保存済みの全データと比較せずに類似オブジェクトを検索できます。
利用できる方式は、グラフとツリーを使うインデックス(NGT)、量子化グラフ方式(QG)、非常に大規模なデータセット向けの量子化Blobグラフ方式(QBG)です。距離関数として、L1、L2、コサイン、角度、ハミング、Jaccard、内積、および双曲距離(PoincareとLorentz)をサポートしています。ベクトルは4バイトまたは2バイトの浮動小数点数、あるいは1バイトの符号なし整数で保存でき、インデックスはメモリマップされた共有メモリ上に配置できます。
NGTにはCLI、C++ API、およびPython、Rust、Go、Ruby、PHP、JavaScript向けのバインディングが用意されています。インデックスの構築後もオブジェクトを追加・削除できます。Linux、macOS、Windows(MinGW-w64/MSYS2経由)でビルドでき、QGとQBGの利用にはBLASとLAPACKが必要です。
主な機能
- 01グラフおよびツリーインデックスによる近似最近傍検索
- 02L1、L2、コサイン、角度、ハミング、Jaccard、内積、双曲距離に対応
- 03インデックス構築後のオブジェクトの追加と削除
- 04Float32、float16、uint8のデータ型に加え、グラフインデックス向けの積量子化とスカラー量子化
- 05大規模データセット向けに共有メモリ(メモリマップドファイル)上へインデックスを配置可能
- 06Python、Rust、Go、Ruby、PHP、JavaScript向けのバインディング
ユースケース
- 独自の検索サービスで、ベクトル類似度に基づいて画像、文書、埋め込みベクトルの類似項目を検索する
- 複数のプロセスで共有するメモリ上の単一インデックスから最近傍クエリを処理する
- QBG方式で数十億件のベクトルを対象に類似検索を実行する
- より大規模なシステムを選定する前に、コマンドラインやPythonからベクトル検索を試作する
クイックスタート
- 1
HomebrewでmacOSにインストールする
brew install ngt - 2
Releasesページからソースアーカイブをダウンロードする
- 3
QGとQBGを使わずにLinuxでビルドを設定する
cmake -DNGT_QBG_DISABLED=ON ..
使う前に知っておきたいこと
- Microsoft Visual C++(MSVC)によるネイティブビルドはサポートされていません。Windowsでは現在、MinGW-w64を使用し、QBGを無効にする必要があります。
- QGとQBGにはBLASおよびLAPACKライブラリが必要で、LinuxとmacOSでのみ動作します。
収録されている特集
トピック
よくある質問
- NGT とは?
- グラフおよびツリーインデックスを使い、高次元ベクトルを高速に近似最近傍検索するC++ライブラリとCLI。 NGTは、数十次元から数千次元の高次元ベクトルを大量に扱う近似最近傍検索向けのコマンドとライブラリを提供します。近傍グラフとツリーのインデックスを構築することで、クエリを保存済みの全データと比較せずに類似オブジェクトを検索できます。
- NGT は無料で使えますか?ライセンスは?
- NGT は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- NGT は今もメンテナンスされていますか?
- 活発にメンテナンス中。NGT の最終コミットは 2026年10月30日 です。
- NGT は何に使えますか?
- 独自の検索サービスで、ベクトル類似度に基づいて画像、文書、埋め込みベクトルの類似項目を検索する 複数のプロセスで共有するメモリ上の単一インデックスから最近傍クエリを処理する QBG方式で数十億件のベクトルを対象に類似検索を実行する より大規模なシステムを選定する前に、コマンドラインやPythonからベクトル検索を試作する
- NGT のインストール方法は?
- HomebrewでmacOSにインストールする: brew install ngt Releasesページからソースアーカイブをダウンロードする QGとQBGを使わずにLinuxでビルドを設定する: cmake -DNGT_QBG_DISABLED=ON ..
- NGT はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/NGT-labs/NGT
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Postgresにベクトル類似検索機能を追加し、リレーショナルデータとともにembeddingを保存・検索できるオープンソース拡張機能。
Lance形式で保存したデータに対し、ベクトル・全文・SQL検索を提供する、マルチモーダルAI向けの組み込み型検索ライブラリ兼データベース。
Nearest Neighbor Descentを基盤に、幅広い距離指標に対応した純Python製の近似最近傍探索ライブラリ。
NVIDIA GPU上の機械学習、線形代数、情報検索向けに、CUDAで高速化したC++ヘッダーオンリーライブラリとPythonラッパーを提供します。
Python、JavaScript、Rust、Java、Go、Swiftなどのバインディングを備えた、近似最近傍ベクトル検索とクラスタリング用の単一ファイルC++ライブラリ。