Faiss
Faiss是用于稠密向量相似搜索和聚类的高效检索算法库,可以检索任意大小的向量集合。Faiss还包含了用于评估和参数微调的代码。由C++实现,但提供了完整的Python接口。多数高效有用的算法在GPU上实现,当然,CPU上也可使用Faiss。
Introduction
Faiss包含了几种相似搜索的方法。它假定实例被表示为向量并用整数标志向量身份,向量之间可以通过L2距离或点积进行比较,L2距离最小的或者点积值最大的向量被认定为与查询向量最相似的向量。除了L2距离和点积,也支持余弦相似度。
像基于二进制向量和紧凑量化编码等方法并不要求必须使用原始向量,可以使用向量的压缩表示,这会损失一定的精确度,但它可以应用到亿万级别数量的向量搜索中,因为可以减少内存消耗。其他像HNSW和NSG等方法,是通过在原始向量上添加索引结构的方式提高搜索效率。
Faiss在GPU上运行,可以接受来自GPU和CPU内存的输入。在有GPU的服务器上,GPU索引可以替代CPU索引(比如,用GpuIndexFlatL2代替IndexFlatL2),而且GPU内存的拷贝是自动处理的。当然,输入输出都在GPU中时速度会更快,支持单gpu和多gpu的使用。
Faiss工作方式
Faiss在被添加了索引的向量集中查询向量,提供了一个函数,通过向量之间的L2距离或点积进行相似搜索。Faiss有多种索引类型,精确搜索等索引是简单的基准,大部分索引结构都在搜索时间、精确度、内存等方面进行了权衡。
Installing
(1)Anaconda上的安装(官网上安装方式)
faiss-cpu仅支持CPU
conda install -c pytorch faiss-cpu