faiss索引调研(五)—— faiss优化 & 总结
IndexFalt(暴力搜索)
- 当N(搜索最近邻个数)< 20 且向量的维度是4的倍数,循环遍历一遍向量空间,使用SSE指令集计算向量的相似度。
- 否则使用OpenMP多线程并行计算
IndexIVF(相似搜索)
针对暴搜基础上:
- 向量空间聚类:
- 相似搜索:对于输入的向量x,先从K个聚类中心中寻找nprob个最相似的中心点,从而将搜索空间从全量缩小到nprob个类别的子空间。
假设这里k = 1000,nprob=10,那这里的搜索速度相对于暴力搜索会快接近100倍,当nprob==k时,其效果和暴力搜索一致。
总结:相似搜索是损失很少量的精度(召回),大幅度提升效率的一致策略。
IndexIVFPQ
基于IndexIVF,使用Product Quantizer技术做向量的压缩。
总结:损失一定的精度,节省内存。