NGT-labs/NGT

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

何を解決するか

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

仕組み

NGTは、検索速度とメモリ使用量を最適化するための3つの主要なインデックス化手法を採用しています:

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

利用可能なRAMを超えるデータセットを扱うために、プロジェクトはメモリマップファイルを介した共有メモリをサポートしています。また、データ表現をさらに最適化するためのさまざまな量子化オプション(Product、Scalar)も提供しています。

対象ユーザー

Linux、macOSなどさまざまなプラットフォームおよびPython、C++、Go、Rust、Ruby、PHPなど、幅広いプログラミング言語で高次元空間における効率的な類似性検索を実装したい開発者やデータエンジニア。

特徴

  • 広範な距離尺度対応: L1、L2、コサイン類似度、角度、ハミング、ジャカード、ポアンカレ、ローレンツ、内積をサポート。
  • 大規模スケーラビリティ: QBGは数十億のオブジェクトを処理でき、共有メモリオプションによりシステムメモリを超えるデータのインデックス化が可能。
  • 多言語対応: 幅広い人気プログラミング言語向けのネイティブライブラリおよびラッパーを提供。
  • 柔軟なデータ型対応: 4バイト浮動小数点数、2バイト浮動小数点数(FP16)、1バイト符号なし整数をサポート。

関連

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