facebook 相似性搜索库 faiss

faiss

个人理解:

https://github.com/facebookresearch/faiss 上把代码clone下来,make编译

我们将CNN中经过若干个卷积/激励/池化层后得到的激活映射(向量形式)存储到硬盘上,

Faiss是一个高效的相似性搜索和密集向量聚类的库。它包含了搜索任意大小的向量集合的算法,这些算法可能不适合RAM。它还包含用于评估和参数优化的支持代码。Faiss是用c++编写的,带有Python/numpy的完整包装。一些最有用的算法是在GPU上实现的。它是由Facebook人工智能研究开发的。

稀疏向量:0和1表示的向量

密集向量:实数表示的向量

介绍

Faiss包含了几种相似搜索的方法。它假设实例被表示为向量,并由一个整数来标识,并且向量可以与L2距离或点乘积进行比较。与查询向量相似的向量是那些具有最低L2距离或与查询向量有最高的点积的向量。它也支持余弦相似,因为这是标准化向量上的点积。

大多数的方法,像那些基于二进制矢量和压缩量化码的方法,仅仅使用矢量的压缩表示,不需要保留原向量。这通常以不那么精确的搜索为代价,但这些方法可以在单个服务器上的主存中扩展到数十亿个向量。

GPU实现可以接受CPU或GPU内存的输入。在带有GPU的服务器上,GPU索引可以使用drop-in替换CPU索引(例如,用GpuIndexFlatL2替换IndexFlatL2),并自动处理GPU内存的副本。但是如果输入和输出都驻留在GPU上,结果将会更快。支持单一和多gpu的使用。

建筑

库主要是在c++中实现的,通过CUDA提供可选的GPU支持,以及一个可选的Python接口。CPU版本需要一个BLAS库。它使用Makefile编译,并可以在docker映像中打包。看到安装。

工作方式

Faiss是围绕一个索引类型构建的,它存储了一组向量,并提供了一个函数,用L2和/或点积向量比较来搜索它们。有些索引类型是简单的基线,例如精确搜索。大多数可用的索引结构对应于各种各样的权衡。

搜索时间

搜索质量

每个索引向量使用的内存。

培训时间

非监督培训需要外部数据。

可选的GPU实现提供了可能的(截至2017年3月)最快的精确和近似(压缩域)最近邻搜索实现的高维向量,最快的劳埃德的k-means,和最快的小k选择算法已知。这里详细介绍了实现。

完整的文档做

以下为文件的入口点:

完整的文档,包括教程,FAQ和故障排除部分可以在wiki页面上找到。

doxygen文档提供了每个类的信息。

为了复制我们的研究论文,多义代码和十亿级相似搜索与gpu,请参考基准的README。

加入社区

公开讨论做或问题,有一个Facebook公开讨论组在https://www.facebook.com/groups/faissusers/

我们监视存储库的问题页面。你可以报告错误,提出问题,等等。

原文地址:https://www.cnblogs.com/zealousness/p/8757294.html

时间: 2024-08-19 19:56:19

facebook 相似性搜索库 faiss的相关文章

【3】facebook大数据搜索库faiss使用——选择Index

选择Index并不明显,有几个问题可以帮助选择Index. 是否需要精确结果 使用Flat. IndexFlat2是唯一能保证精确结果的Index.它为其他Index提供了对比标准.它不会压缩向量,不支持带标签添加,只能顺序添加.所以,如果你需要add_with_ids,使用IDMap,Flat. 内存是否有限制 请注意Faiss所有的Index都是存储在RAM里的,如果不需要精确结果,而同时RAM是有限的,在该限制下,我们在精度-速度中间进行衡量选择.可以考虑下面的问题: 内存充足无限制:使用

【Similarity Search】多探头LSH——构建高维相似性搜索的高效索引

摘要 针对高维数据的相似性索引非常适于构建内容相关的检索系统,尤其对于音频.图像.视频等内容丰富的数据.近年来,位置敏感哈希及其变种算法以近似相似性搜索的索引技术被提出,这些方法的一个显著缺点是需要很多的哈希表来保证良好的搜索效果.该文章提出了一个新的索引策略来克服上述缺点,称作多探头LSH. 多探头LSH建立在LSH技术基础上,它可以智能地探测哈希表中可能包含查询结果的多个桶(buckets),该方法受基于熵的LSh方法(设计用于降低基本LSH方法对空间的要求)的启发.根据评估显示,多探头LS

Faiss向量相似性搜索

移步bdata-cap.com Faiss 快速入门(1) Faiss 更快的索引(2) Faiss低内存占用(3) Faiss 构建: clustering, PCA, quantization(4) 如何选择Faiss索引(5) 官网地址 ,你也可以访问我的Github,运行代码. 本文是基于官网整理,为了防止理解偏差或简化,有些直接用英文.另外,也加了一点自己的理解. 数据准备 Faiss可以处理固定维度d的向量集合,typically a few 10s to 100s.向量集合被保存在

96、facebook Fresco框架库源使用基础

开源项目链接 facebook Fresco仓库:git clone https://github.com/facebook/fresco facebook Fresco主页:“>http://fresco-cn.org/docs/index.html# Fresco Demo:https://github.com/yanbober/Android-Blog-Source/tree/master/Fresco-Android-CN-Demo 背景介绍 最近微博和论坛火了一个facebook的li

快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors

What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing t

Python开源项目Top30

No 1:Home-assistant (v0.6+) 基于Python 3的开源家庭自动化平台[Github 11357 stars,由Paulus Schoutsen提供] https://github.com/home-assistant/home-assistant No 2:Pytorch PyTorch是使用GPU和CPU优化的深度学习张量库,基于Python语言编写.[Github 11019 stars,由PyTorch团队的Adam Paszke和其他人提供] https://

Facebook终于在移动端推基于内容图谱的关键字搜索,可直接检索好友信息流

两年前,Facebook推出基于内容图谱的关键字搜索,让用户可以通过内容图谱的搜索在社交网络上建立起紧密的联系.从今天开始,Facebook 又对它的搜索功能做出了变革,用户已经可以通过输入关键字来搜索某一个已关注好友的信息流,而不仅仅是用户以及它的主页.而这个功能,Mark Zuckerberg 说"it is not web search". 举一个简单例子,你的好朋友 Jesscia 最近刚刚结婚,你希望能够在 Facebook 上重新回顾下她婚礼的美好细节.当你在 Facebo

Python 库大全

作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Awesome Python中文版来啦! 本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:github.com.欢迎加入翻译组. 原文链接:Python 资源大全 1200+收藏,600+赞,别只顾着自己私藏呀朋友们 ------------

Python常用库大全,看看有没有你需要的

作者:史豹链接:https://www.zhihu.com/question/20501628/answer/223340838来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. virtualenv – 创建独立 Python 环境的工具. virtualenvwrapp