Overview
Faiss是Facebook AI Research开发的快速相似性搜索(similarity search)计算库。所谓的相似性搜索,就是进行向量间比对,如图示,图像经过特征提取转换成一个高维向量,通过将该向量和数据库中其他图像特征向量作一一比对,就能找出最相近的K个目标图像。不仅是图像,只要是可以用高维向量表征的,都可以做相似性搜索,如文字、音频等。
向量比对就是计算两向量间的距离,Faiss提供了两种方法:欧几里得距离(L2)和向量点积(IP),前者是默认方法,它的计算结果值越小表示向量越相近,后者则刚好相反,值越大表示两向量越相近。
因此,相似性搜索的过程可以简单地分为三个步骤:
- 计算目标向量(query)和数据库中所有向量(centroids)的L2或IP距离。
- 将距离值进行排序(L2采用升序排序,IP则采用降序排序),top-K个元素就是与query最相近的K个向量。
- 回到第一步,遍历余