Repolode
NGT-labs

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. 1

    HomebrewでmacOSにインストールする

    brew install ngt
  2. 2

    Releasesページからソースアーカイブをダウンロードする

  3. 3

    QGとQBGを使わずにLinuxでビルドを設定する

    cmake -DNGT_QBG_DISABLED=ON ..

使う前に知っておきたいこと

  • Microsoft Visual C++(MSVC)によるネイティブビルドはサポートされていません。Windowsでは現在、MinGW-w64を使用し、QBGを無効にする必要があります。
  • QGとQBGにはBLASおよびLAPACKライブラリが必要で、LinuxとmacOSでのみ動作します。

収録されている特集

トピック

#approximate-nearest-neighbor-search#vector-search#knn#high-dimensional-data#c-plus-plus#indexing#k-nearest-neighbors#knn-search#nearest-neighbor-search#nearest-neighbors

よくある質問

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 の数値は毎日更新されます。

関連プロジェクト