NGT-labs/NGT

Nearest Neighbor Search with Neighborhood Graph and Tree for High-dimensional Data

何を解決するか

NGTは、通常数十から数千次元にわたる大規模な高次元ベクトルデータに対して、高速な近似最近傍(ANN)検索を実現する課題に対処します。

動作方法

本プロジェクトは、速度、メモリ使用量、スケーラビリティのバランスを取るために、3つの主要なインデックス化手法を提供します:

  • NGT:グラフとツリーに基づくインデックス化を組み合わせたハイブリッドアプローチ。
  • QG(Quantized Graph):標準的なNGTアプローチよりも高いパフォーマンスを実現するための量子化グラフベース手法。
  • QBG(Quantized Blob Graph):数十億のオブジェクトを処理できる専用手法。

リソース使用を最適化するために、NGTはメモリマップファイルを介した共有メモリをサポートし、利用可能なRAMよりも大きなデータセットを扱えるようにし、スカラ量子化および積量子化などのさまざまな量子化オプションを提供してデータのサイズを削減します。

対象ユーザー

高次元ベクトル空間で作業する開発者や研究者向けに設計されており、大規模なデータセットから類似アイテムを高速かつスケーラブルに取得する必要がある人向けです。

特徴

  • 広範な距離サポート:L1、L2、コサイン類似度、角度、ハミング、ジャカード、ポアンカレ、ローレンツ、内積をサポート。
  • 大規模スケーラビリティ:QBGは数十億のオブジェクトを処理可能。
  • 多言語バインディング:Python、Ruby、PHP、Rust、Go、C、C++に対応。
  • メモリ効率:物理メモリの制限を超えるインデックスに対しても共有メモリをサポート。

関連

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