FAISSは、密なベクトルの効率的な類似性検索とクラスタリングのライブラリです。これには、RAMに収まらない可能性のあるサイズのベクトルのセットで検索するアルゴリズムが含まれています。また、評価とパラメーターチューニングのためのサポートコードも含まれています。 FAISSは、Python/Numpyの完全なラッパーを含むC ++で書かれています。最も有用なアルゴリズムのいくつかは、GPUに実装されています。主にメタの基本的なAI研究グループで開発されています。
最新の機能に関する詳細については、changelog.mdを参照してください。
FAISSには、類似性検索のためのいくつかの方法が含まれています。インスタンスはベクトルとして表され、整数によって識別され、ベクトルをL2(ユークリッド)距離またはDOT製品と比較できると想定しています。クエリベクトルに似たベクトルは、クエリベクトルを備えたL2距離が最も低い、または最高のDOT製品を持つベクトルです。また、これは正規化されたベクトルのドット製品であるため、コサインの類似性もサポートします。
いくつかの方法は、バイナリベクトルやコンパクトな量子化コードに基づく方法と同様に、ベクターの圧縮表現のみを使用しており、元のベクトルを維持する必要はありません。これは一般に、より正確な検索の犠牲を払っていますが、これらの方法は、単一のサーバー上のメインメモリの数十億のベクトルにスケーリングできます。 HNSWやNSGのような他の方法は、生のベクトルの上にインデックス構造を追加して、検索をより効率的にします。
GPU実装は、CPUまたはGPUメモリからの入力を受け入れることができます。 GPUを備えたサーバーでは、GPUインデックスを使用して、CPUインデックスのドロップイン交換(例: IndexFlatL2
GpuIndexFlatL2
に置き換えます)を使用し、GPUメモリからのコピーを自動的に処理できます。ただし、入力と出力の両方がGPUに居住している場合、結果は高速になります。シングルとマルチGPUの両方の使用がサポートされています。
Faissには、PythonのAnacondaの事前縮小ライブラリが付属しています。Faiss-CPUとFaiss-GPUを参照してください。ライブラリは主にC ++で実装されており、唯一の依存関係はBLAの実装です。オプションのGPUサポートはCUDAまたはAMD ROCMを介して提供され、Pythonインターフェイスもオプションです。 Cmakeでコンパイルします。詳細については、install.mdを参照してください。
FAISSは、一連のベクトルを保存するインデックスタイプを中心に構築されており、L2および/またはDOT製品ベクトル比較でそれらを検索する関数を提供します。一部のインデックスタイプは、正確な検索などの単純なベースラインです。利用可能なインデックス構造のほとんどは、
オプションのGPU実装は、(2017年3月現在)、高次元のベクトル、最速のロイドのKマーン、および既知の最速の小さなKセレクションアルゴリズムのための最速および概算(圧縮ドメイン)最近近隣検索実装を提供する可能性が高いものを提供します。実装については、ここで詳しく説明しています。
以下は、ドキュメントのエントリポイントです。
FAISSの主な著者は次のとおりです。
研究論文でFAISSを使用する場合の引用への参照:
@article{douze2024faiss,
title={The Faiss library},
author={Matthijs Douze and Alexandr Guzhva and Chengqi Deng and Jeff Johnson and Gergely Szilvasy and Pierre-Emmanuel Mazaré and Maria Lomeli and Lucas Hosseini and Hervé Jégou},
year={2024},
eprint={2401.08281},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
FAISSのGPUバージョンについては、引用してください。
@article{johnson2019billion,
title={Billion-scale similarity search with {GPUs}},
author={Johnson, Jeff and Douze, Matthijs and J{'e}gou, Herv{'e}},
journal={IEEE Transactions on Big Data},
volume={7},
number={3},
pages={535--547},
year={2019},
publisher={IEEE}
}
FAISSの公開討論や質問については、https://www.facebook.com/groups/faissusers/にFacebookグループがあります。
リポジトリの問題ページを監視します。バグを報告したり、質問することもできます。
FAISSはMITライセンスがあり、トップレベルのディレクトリのライセンスファイルを参照してください。
Copyright©Meta Platforms、Inc。