ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【推荐系统】Faiss index选择

2021-12-17 17:58:58  阅读:289  来源: 互联网

标签:检索 index 推荐 内存 哈希 召回 向量 Faiss


index选择

考虑因素:候选向量的数量级、index所占内存的大小、检索所需时间(是离线检索还是在线检索)、index构建时间、检索的召回率。

Faiss入门及应用经验记录 - 知乎

Flat :暴力检索IVFx Flat :倒排暴力检索PQx :乘积量化IVFxPQy 倒排乘积量化LSH 局部敏感哈希HNSWx
优点该方法是Faiss所有index中最准确的,召回率最高的方法,没有之一;IVF利用倒排索引思想,拿出每个聚类中心下的向量ID,每个中心ID后面挂上一堆非中心向量,每次查询向量的时候找到最近的几个中心ID,分别搜索这几个中心下的非中心向量。通过减小搜索范围,提升搜索效率。利用乘积量化的方法,改进了普通k-means,将一个向量的维度切成x段,每段分别进行k-means。因此速度很快,而且占用内存较小,召回率也相对较高(切4段)工业界大量使用此方法,各项指标都均可以接受。不同于传统哈希尽量不产生碰撞,局部敏感哈希依赖碰撞来查找近邻。高维空间的两点若距离很近,那么设计一种哈希函数对这两点进行哈希值计算,使得他们哈希值有很大的概率是一样的,若两点之间的距离较远,他们哈希值相同的概率会很小。不同距离度量的哈希函数不同,不是所有距离度量(如内积)都能找到对应局部敏感哈希。 - 训练非常快,支持分批导入,index占内存很小,检索也比较快基于图检索的改进方法,检索速度极快,10亿级别秒出检索结果,而且召回率几乎可以媲美Flat,能达到惊人的97%。检索的时间复杂度为loglogn,几乎可以无视候选向量的量级了。并且支持分批导入,极其适合线上任务,毫秒级别体验。
缺点速度慢,占内存大。速度也还不是很快召回率相较于暴力检索,下降较多。召回率非常拉垮。在候选语料比较多的时候(百万级别),检索也不是特别快,大概是秒级别的。构建索引极慢,占用内存极大(是Faiss中最大的,大于原向量占用的内存大小
使用情况向量候选集很少,在50万以内,并且内存不紧张。向量候选集很少,在50万以内,并且内存不紧张。内存及其稀缺,并且需要较快的检索速度,不那么在意召回率同PQx候选向量库非常大,离线检索,内存资源比较稀缺的情况不在乎内存,并且有充裕的时间来构建index
是否GPU
是否训练是,因为倒排索引需要训练k-means,因此需要先训练index,再add向量是,因为倒排索引需要训练k-means,因此需要先训练index,再add向量同PQx
参数IVFx中的x是k-means聚类中心的个数PQx中的x为将向量切分的段数,因此,x需要能被向量维度整除,且x越大,切分越细致,时间复杂度越高同PQxHNSWx中的x为构建图时每个点最多连接多少个节点,x越大,构图越复杂,查询越精确,当然构建index时间也就越慢,x取4~64中的任何一个整数。

标签:检索,index,推荐,内存,哈希,召回,向量,Faiss
来源: https://blog.csdn.net/weixin_31866177/article/details/122001149

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有