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都能提供可靠且高效的解决方案。