Repolode
facebookresearch

facebookresearch/faiss

密ベクトルの類似検索とクラスタリングを効率化する、PythonバインディングとオプションのGPUアクセラレーションを備えたC++ライブラリ。

スター
41,171
フォーク
4,561
未解決の Issue
352
最終コミット
10 時間前

これは何?

Faissは、密ベクトルの類似検索とクラスタリングを行うライブラリです。小規模なコレクションからRAMに収まらないほど大規模なものまで、ベクトル集合を検索するインデックスを提供します。距離の計算にはL2距離または内積を使用し、ベクトルを正規化することでコサイン類似度にも対応します。

インデックスの種類によって、検索速度、結果の品質、ベクトルあたりのメモリ使用量、学習や追加にかかる時間のバランスが異なります。バイナリベクトルや量子化コードなどの圧縮表現を使えば、元のベクトルを保存せずに済み、単一サーバーで数十億のベクトルまで扱えます。HNSWやNSGなどのグラフベースの構造は、生のベクトルにインデックスを追加してクエリを高速化します。

ライブラリ本体はC++で実装され、Pythonおよびnumpy用のラッパーを備えています。GPU実装はCPUまたはGPU上の入力を受け付け、単一GPUとマルチGPUの構成をサポートします。また、IndexFlatL2などのCPUインデックスをGpuIndexFlatL2に置き換えることで、GPU版をそのまま差し替えて使えます。ビルドにはCMakeとBLASの実装が必要です。

主な機能

  • 01L2距離または内積を指標とする、密ベクトルの厳密および近似最近傍検索。
  • 02バイナリベクトルや量子化コードを基にした圧縮インデックスにより、非常に大規模なコレクションに対応。
  • 03HNSWやNSGなどのグラフベースのインデックスによる高速な近似検索。
  • 04CPUインデックスとそのまま置き換えて使える、オプションのGPU実装。
  • 05C++コアに加え、numpyに対応したPythonラッパー。

ユースケース

  • 埋め込みベクトルを使ったセマンティック検索や検索システムの構築。
  • 圧縮インデックスを使い、メモリに収まらない規模のコレクションから最近傍を検索。
  • GPUアクセラレーション対応のk-meansによる、大規模なベクトル集合のクラスタリング。

クイックスタート

  1. 1

    Anacondaから、Python用のコンパイル済みfaiss-cpuパッケージをインストールします

  2. 2

    プロジェクトのWikiにある入門チュートリアルを読みます

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

  • GPUアクセラレーションには、NVIDIA CUDAまたはAMD ROCmに対応したハードウェアが必要です。
  • ソースからビルドするには、cmakeとBLASの実装が必要です。INSTALL.mdを参照してください。

トピック

よくある質問

faiss とは?
密ベクトルの類似検索とクラスタリングを効率化する、PythonバインディングとオプションのGPUアクセラレーションを備えたC++ライブラリ。 Faissは、密ベクトルの類似検索とクラスタリングを行うライブラリです。小規模なコレクションからRAMに収まらないほど大規模なものまで、ベクトル集合を検索するインデックスを提供します。距離の計算にはL2距離または内積を使用し、ベクトルを正規化することでコサイン類似度にも対応します。
faiss は無料で使えますか?ライセンスは?
faiss は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
faiss は今もメンテナンスされていますか?
活発にメンテナンス中。faiss の最終コミットは 2026年10月20日 です。
faiss は何に使えますか?
埋め込みベクトルを使ったセマンティック検索や検索システムの構築。 圧縮インデックスを使い、メモリに収まらない規模のコレクションから最近傍を検索。 GPUアクセラレーション対応のk-meansによる、大規模なベクトル集合のクラスタリング。
faiss のインストール方法は?
Anacondaから、Python用のコンパイル済みfaiss-cpuパッケージをインストールします プロジェクトのWikiにある入門チュートリアルを読みます
faiss はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/facebookresearch/faiss

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト