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,基於研究成果和大量的工程努力。該項目現已成為向量相似度搜尋領域的標準工具之一。
Faiss 是一個功能強大、性能卓越的向量相似度搜尋庫,特別適合處理大規模高維向量資料。其豐富的演算法選擇、優秀的性能表現和廣泛的應用場景,使其成為機器學習、資訊檢索和推薦系統等領域的重要工具。無論是學術研究還是工業應用,Faiss 都能提供可靠且高效的解決方案。