Faissは、効率的な類似度検索と高密度ベクトルクラスタリングに特化したライブラリです。あらゆるサイズのベクトル集合、さらにはメモリに完全にロードできない可能性のあるベクトル集合に対しても検索を実行できる、さまざまなアルゴリズムが含まれています。
プロジェクトアドレス: https://github.com/facebookresearch/faiss
開発チーム: Facebook AI Research (Meta AI)
開発言語: C++、PythonとCの完全なラッパーを提供
FaissはC++で記述されており、PythonとCの完全なラッパーを提供します。最も有用なアルゴリズムの一部は、GPU上でCUDAを使用して実装されています。
Faissは、k-meansクラスタリングや積量子化などの複雑なアルゴリズムを使用してベクトルにインデックスを付けることで、最近傍探索を高速化します。
Faissは、さまざまなインデックス作成方法を含むツールボックスとして構成されており、通常、一連のコンポーネント(前処理、圧縮、非網羅的検索)が含まれます。
CPU側では、Faissは以下を多用しています。
Faissは、すべての類似度を正確かつ詳細に計算し、最も類似した要素のリストを返す参照ブルートフォースアルゴリズムを提供します。これは、「ゴールドスタンダード」の参照結果リストを提供します。
conda install -c pytorch faiss-gpu
pip install faiss-cpu
pip install faiss-gpu
import faiss
import numpy as np
dimension = 64
database_size = 10000
query_size = 100
database_vectors = np.random.random((database_size, dimension)).astype('float32')
query_vectors = np.random.random((query_size, dimension)).astype('float32')
index = faiss.IndexFlatL2(dimension)
index.add(database_vectors)
k = 5
distances, indices = index.search(query_vectors, k)
print(f"indices: {indices.shape}")
print(f"distances: {distances.shape}")
Facebook AI Researchチームは、2015年からFaissの開発を開始し、研究成果と多大なエンジニアリング努力に基づいています。このプロジェクトは現在、ベクトル類似度検索分野における標準的なツールの1つとなっています。
Faissは、特に大規模な高次元ベクトルデータを処理するのに適した、強力で高性能なベクトル類似度検索ライブラリです。豊富なアルゴリズムの選択肢、優れたパフォーマンス、幅広いアプリケーションシナリオにより、機械学習、情報検索、レコメンデーションシステムなどの分野で重要なツールとなっています。学術研究であろうと産業応用であろうと、Faissは信頼性が高く効率的なソリューションを提供できます。