facebookresearch/faiss

A library for efficient similarity search and clustering of dense vectors.

何を解決するか

Faiss は、高次元ベクトルの効率的な検索とクラスタリングを可能にし、RAM に収まらないような大規模なデータセットでも類似アイテムを検出できます。これは、数十億のベクトルにスケーリングされた高次元ベクトル類似性検索の計算コストの高さという問題に対処しています。

動作方法

Faiss は、ベクトルを L2(ユークリッド)距離またはドット積(コサイン類似度を含む)を使って格納・比較するインデックスベースのシステムを使用しています。検索速度、精度、メモリ使用量のバランスを取るために、さまざまなインデックス構造を提供しています:

  • 正確検索: 高精度のシンプルなベースライン。
  • 圧縮表現: バイナリベクトルとコンパクトな量子化コードを使用して、ベクトルを圧縮形式で保存し、単一のサーバーで数十億のベクトルをメインメモリに収容可能にします。
  • グラフベースインデックス: HNSW と NSG を実装し、原始ベクトルの上にインデックス構造を追加して、より高速な取得を実現します。
  • ハードウェア加速: C++ で記述され、Python ラッパーを備えています。正確および近似最近傍検索、k-means クラスタリング、k 選択アルゴリズムの高パフォーマンスな GPU 実装を提供します。

対象ユーザー

AI および機械学習における高次元埋め込み、大規模類似性検索、クラスタリングタスクに取り組む開発者および研究者。

主な特徴

  • 数十億規模のスケーラビリティ: 圧縮表現を使用して、RAM に収まらないデータセットを扱える。
  • GPU 加速: 単一およびマルチ GPU セットアップをサポートし、検索およびクラスタリングを大幅に高速化。
  • C++ および Python 対応: コアロジックは C++ で実装され、Python/numpy インターフェースを介して高パフォーマンスな効率性を提供。
  • 柔軟なインデックス構造: 検索時間、品質、メモリ使用量の間でさまざまなトレードオフを提供。

関連

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