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/
我们监视存储库的问题页面。你可以报告错误,提出问题,等等。
facebook 相似性搜索库 faiss的更多相关文章
- 揭开Faiss的面纱 探究Facebook相似性搜索工具的原理
https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html 本月初雷锋网报道,Facebook 开源了 AI 相似性搜索工具 Faiss.而在 ...
- Faiss向量相似性搜索
Faiss 快速入门(1) Faiss 更快的索引(2) Faiss低内存占用(3) Faiss 构建: clustering, PCA, quantization(4) 如何选择Faiss索引(5)
- [原创]CentOS6.4编译安装Facebook的folly库(gcc4.8.1boost1.5.3)
Folly: Facebook Open-souce LibrarY,Facebook开源的一个基础组件库,据说在大规模的场景中性能较高.目前因为自己负责的系统有几个地方性能较差,因此特意找来看看 ...
- 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)
就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...
- Facebook React.js库 入门实例教程
作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩 ...
- 96、facebook Fresco框架库源使用基础
开源项目链接 facebook Fresco仓库:git clone https://github.com/facebook/fresco facebook Fresco主页:“>http:// ...
- ios paper for facebook 使用第三方库
facebook paper使用的第三方库 Facebook Paper使用的第三方库 第三方库名 简介 链接 ACE code editor https://github.com/ajaxorg/a ...
- 96、facebook Fresco框架库源使用(转载)
各个属性详情:http://blog.csdn.net/y1scp/article/details/49245535 开源项目链接 facebook Fresco仓库:git clone https: ...
- 快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors
What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high ...
随机推荐
- 李洪强iOS开发之iOS好文章收集
李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...
- Selenium操作之滚动条
在用Selenium做UI自动化时,经常会遇到有些元素找不到之类的问题,但是自己的代码并没有错,元素就是找不到,这是为什么呢?原因很简单,由于页面内容较多,有些内容需要下拉滚动条才会显示,这里介绍一种 ...
- hdu 1042 N! java大数及判断文件末尾
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submi ...
- NGUI3.7.4实现循环拖动
前段时间下了NGUI新版本3.7.4,看到例子Endless Scroll Views,实现了循环拖动,可能会用到,先把实现步骤贴出来跟大家分享一下. 1.首先新建一个背景. 2.添加所需控件,类似滑 ...
- lnmp集成开发环境安装pdo_dblib扩展
php连接mssql,获取的结果中文乱码,pdo_dblib扩展使用的是apt-get install php5-sybase方法安装的,尝试了修改freetds.conf php.ini 文件编码 ...
- 【Java】之static静态方法与非static静态方法区别
1.A.class:没有static public class A { public String getText(){ } B.class调用A的方法时 public class B { publi ...
- 【Mac + Appium + Python3.6学习(五)】之常用的Android自动化测试API总结
Github测试样例地址:https://github.com/appium-boneyard/sample-code/tree/master/sample-code/examples ①定位text ...
- 极光Java后台推送APP对接
1.极光对接,首先需要注册用户,和创建应用 2,.Java对接需要依赖包 <dependency> <groupId>cn.jpush.api</groupId> ...
- Image Filter
香港中文大学研究成果 Rolling Guidance Filter http://www.cse.cuhk.edu.hk/~leojia/projects/rollguidance/ 100+ Ti ...
- 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会(树形dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1827 仔细想想就好了,, 每个点维护两个值,一个是子树的费用,一个是除了子树和自己的费用.都可以用d ...