当前位置:   article > 正文

faiss相似性搜索_faiss相似文本检索

faiss相似文本检索

1、安装组件

2、索引类型

a、IndexFlatL2(精确索引):

  • 精确索引通过遍历计算来查询向量与被查询向量的L2精确距离,在构建索引时需提供向量维数作为参数(不需要训练操作),构建完成后可以通过add添加数据和search查询数据;

b、IndexIVFFlat(倒排索引):

  • 倒排索引需要对数据做预处理来提高索引效率,将数据库向量通过聚类方法分割成若干类,查询时选择距离最近的类中心,在类中采用精确方法查询,通过增加相邻类查询来提高精确度;
  • nlist参数控制将数据集向量聚类的总数,nprobe参数控制在多少个类范围内进行查询,伴随nprobe参数值增加,精度值增加,同时时间开销增加,当nprobe=nlist时,与IndexFlatL2索引等效;

c、IndexIVFPQ(乘积量化索引):

  • 当数据量非常大超出内存限制时,采用乘积量化方法保存原始向量的有损压缩形式,创建索引的时候需要指定量化器的个数与每个量化器编码字节长度;
  • 在查询阶段返回的结果是近似值,实验显示,乘积量化后查询返回的距离值与真实值相比偏小,此外,索引的初始化过程的耗时也比较久一些;

3、索引样例:

        (图片丢失)

4、性能对比:

  • 索引创建:

  • 索引查询:

5、官方性能:

  • Deep1B 数据集上测试,30%的1-recall@1,在每向量0.5ms左右的时间,40%的1-recall@1,少于每向量2ms的检索时间,以2ms的检索时间计算,单核可达到500 QPS;
  • 与业内最先进的研究相比,Babenko 和 Lempitsky 在 CVPR 2016 上发表的论文:“Efficient Indexing of Billion-Scale Datasets of Deep Deors”显示需要 20 ms 来获取 45% 的 1-recall@1
  • 单个 GPU 的速度一般比 CPU 快五到十倍,新的帕斯卡架构 GPU 硬件,比如英伟达 P100,快 20 倍有余;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/875013
推荐阅读
相关标签
  

闽ICP备14008679号