选择Index并不明显,有几个问题可以帮助选择Index。

是否需要精确结果

使用Flat。
IndexFlat2是唯一能保证精确结果的Index。它为其他Index提供了对比标准。它不会压缩向量,不支持带标签添加,只能顺序添加。所以,如果你需要add_with_ids,使用IDMap,Flat

内存是否有限制

请注意Faiss所有的Index都是存储在RAM里的,如果不需要精确结果,而同时RAM是有限的,在该限制下,我们在精度-速度中间进行衡量选择。可以考虑下面的问题:

内存充足无限制:使用HNSWx

如果你有很多RAM或者搜索库很小,HNSW是最好的选择。它很快、很精确。4<=x<=64是每个向量的链接数,这个值越高越精确,但是使用的RAM越多。而速度-精度衡量则通过efSearch参数调节实现,每个向量占用内存数为(d4+x2*4)字节。
HNSW不支持序列添加(not add_with_ids),同样的,如果需要,则使用IDMap。HNSW不需要训练,也不支持从index中删除向量。

内存不关注,使用"...,Flat"

"..."指的是需要进行的数据集聚类操作。聚类之后,“Flat”就把这些向量归于桶中,所以并没有亚索,所占的存储空间大小等于原数据集。速度-精度衡量通过nprobe参数控制。

内存比较有限,使用“PCARx,...,SQ8”

如果存储整个向量非常占内存资源,可以通过两种方法降低占用量:

  • PCA降维;
  • 每个向量元素进行可计量量化至1字节;

所以,存储总量是每个向量的x字节。

内存非常有限,使用“OPQx_y, ..., PQx”

PQx使用PQ算法将每个向量进行压缩输出x字节的编码,x一般来说小于等于64,对于大的编码,SQ通常更精确、快速。OPQ是将向量进行线性转换,使得其更容易压缩。y表示的是一个维度,需满足:

  • y是x的因子;
  • y<=d,d是输入向量的维度;
  • y <= 4*x

数据集有多大

这个问题就是对上文"..."部分的回答。数据集被聚成多个桶,在搜索时只有一部分桶被遍历(nprobe个桶)。这个聚类操作只作用于数据集向量的具有代表性的样例之上,通常是数据集的一个样本集。我们针对样本集给出其最优尺寸选择:

如果低于1M向量:"...,IVFx,..."

其中x是4sqrt(N)16sqrt(N),N是数据集的大小。这只是使用kmeans将向量聚起来,你需要30x256x向量训练(更多越好)。

如果1M-10M:"...,IMI2x10,..."

其中x是符号,不是数字。
IMI也对训练集进行k-means聚类,聚成210中心点,但是在向量的前半部分和后半部分是独立的。增加聚类数到2*(210)。你需要大约64*(2^10)向量训练。

如果10M-100M:"...,IMI2x12,..."<千万级-亿级>

同上面的,10用12替换。

如果100M-1B:"...,IMI2X14,..."<亿级-十亿级>

同上面的,10用14替换。

https://www.cnblogs.com/imagezy/p/8329229.html

facebook大数据搜索库faiss使用——选择Index相关推荐

  1. 大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

    2019独角兽企业重金招聘Python工程师标准>>> 本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望能够大家在制定大数据搜 ...

  2. Paper Pal:一个中英文论文及其代码大数据搜索平台

    点击上方蓝字关注我们 Paper Pal:一个中英文论文及其代码大数据搜索平台 余万, 付聿炜, 熊贇, 朱扬勇 1 引言 在开展科研工作的过程中,科研人员需要从大量实时更新的论文中持续地跟踪学术界前 ...

  3. 【ElasticSearch】大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

    1.概述 转载:大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk述 本文就架构,功能,产品线,概念等方面就ElasticSearch和Splunk做了一下全方位的对比,希望 ...

  4. Facebook大数据技术架构的演进路线

     Facebook一直是大数据技术最积极的应用者,因为它拥有的数据量极其巨大,一份资料显示2011年它拥有的压缩数据已经有25PB,未压缩数据150PB,每天产生的未压缩的新数据有400TB.在F ...

  5. 视频教程-大数据搜索技术-大数据

    大数据搜索技术 软通动力教育集团简称软通大学,依托软通动力在技术服务领域的多方位解决方案能力,采用先进的教学理念和模式,直通高校和城市,开展干部培养,文化落地,初级资源培训,培训需求对接,专业项目课程 ...

  6. 博弈论 ai 大数据开源库_需要进化:博弈论与人工智能

    博弈论 ai 大数据开源库 by Elena Nisioti 由Elena Nisioti 需要进化:博弈论与人工智能 (In need of evolution: game theory and A ...

  7. 微博掘金旅游大数据,商业化的好选择?

    文章讲的是 微博掘金旅游大数据,商业化的好选择, 当年微博接受阿里巴巴战略投资后,"微博要卖广告了"的论断不胫而走,随后信息流广告的成功的确证明微博在"卖广告" ...

  8. 大数据搜索不只开源Elastic,星环科技自研New Search青出于蓝

    大数据产业创新服务媒体 --聚焦数据 · 改变商业 1月15日,全球著名的大数据搜索与实时处理公司Elastic公司CEO Shay Banon突然发文宣布,Elasticsearch和Kibana的 ...

  9. python大数据搜索_python语言-用 Python 实现一个大数据搜索引擎

    搜索是大数据领域里常见的需求.Splunk和ELK分别是该领域在非开源和开源领域里的领导者.本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理. 布隆过滤器 ...

最新文章

  1. mysql 5.5 主从双向同步,请教mysql 定时 双向 主从同步問題
  2. spring全局异常抓取validation校验信息
  3. OC-变量和数据类型
  4. Amazon Elasticsearch Service 入门实践
  5. ChannelInitializer 的添加
  6. 设备树和pinctrl粗解
  7. 在字符串中使用引号()等字符 需要用转义字符\ 例如
  8. java解析pom.xml_从pom.xml java获取变量
  9. win10电脑黑屏只有鼠标箭头_电脑开机就黑屏,只显示鼠标怎么办?别急,简单几步,轻松解决!...
  10. git pull push 项目的时候总是提示要输入用户名密码的解决方案
  11. 编译原理完整学习笔记(七):优化代码
  12. java jquery时间问候语,js实现实时问候,不同时间显示不同问候语
  13. 程序员计算器HEX、EDC、OCT的意思
  14. 202202 喜马拉雅 下载 下架产品为mp3 m4a格式
  15. 如何将iPhone投屏到Mac电脑上?
  16. 为什么python代码运行不了_Python | 为什么优化代码?
  17. web前端新手入门:中国互联网的发展史
  18. 苏炫杰全国计算机等级考试,高中主题班会教案模板
  19. 字节跳动2020春招后端开发工程师笔试复盘
  20. java 合并和拆分单元格_如何在Microsoft Word中合并和拆分表和单元格

热门文章

  1. windows 技术篇-共享地址里的共享文件显示为灰色叉叉不可用问题原因及解决方法
  2. hcie 论述-mpls lsp
  3. 原生JS实现的滚动抽奖工具(可设置每个奖品概率、滚动速度、滚动圈数)
  4. JODD与数据页面绑定
  5. [附源码]Java计算机毕业设计SSM东北鹿产品售卖网站
  6. MultiValueMap
  7. 摄像头的车牌识别(用hyperlpr的车牌识别,python版本)
  8. 初学者做电脑的双屏显示
  9. attend,join,participate,take part in
  10. 网络营销与传统营销的区别及优缺点