说起相似度检索TopK的问题,相信很多算法er在实际工程中会经常遇到,对此我们一般的解决方案是暴力检索,循环遍历所有向量计算相似度然后得出TopK。但当向量数量级达到百万千万甚至上亿级别,这时候你再用暴力检索就会显得很呆 ... ...
Faiss的出现就很好地解决了这个问题,笔者总结了在工程中使用Faiss的一些经验,记录下给需要的童鞋(语言为Python,因为本菜鸡不会C++)。动动小手给点个赞呗。
1. 什么是Faiss?
Faiss的全称是Facebook AI Similarity Search,是FaceBook的AI团队针对大规模相似度检索问题开发的一个工具,使用C++编写,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。
简单来说,Faiss的工作,就是把我们自己的候选向量集封装成一个index数据库,它可以加速我们检索相似向量TopK的过程,其中有些索引还支持GPU构建,可谓是强上加强。