自然语言处理NLP星空智能对话机器人系列: Faiss Tutorial
Faiss是一个用于高效相似性搜索和密集向量聚类的库。Faiss包含的算法可以搜索任意大小的向量集,甚至可能不适用于RAM的向量集。Faiss还包含用于评估和参数调整的支持代码。Faiss用C++编写,带有Python/NuMPy的完整封装。一些最有用的算法是在GPU上实现的。Faiss是由Facebook人工智能研究所开发的。
Faiss包含几种相似性搜索方法。它假设实例表示为向量并由整数标识,并且向量可以与L2(欧几里德)距离或点积进行比较。与查询向量相似的向量是那些与查询向量具有最低L2距离或最高点积的向量。它还支持余弦相似性,因为这是标准化向量上的点积。
大多数方法,如基于二进制向量和压缩量化码的方法,仅使用向量的压缩表示,不需要保留原始向量。这通常是以较不精确的搜索为代价的,但这些方法可以在单个服务器上扩展到主内存中的数十亿个向量。
GPU实现可以接受来自CPU或GPU内存的输入。在使用GPU的服务器上,GPU索引可以作为CPU索引的替换(例如,将IndexFlatL2替换为GpuIndexFlatL2),并自动处理与GPU内存之间的拷贝。但是,如果输入和输出都驻留在GPU上,结果会更快。支持单GPU和多GPU使用。
Installing Faisshttps://github.com/facebookresearch/faiss/wiki/Installing-Faiss