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的更多相关文章

  1. 揭开Faiss的面纱 探究Facebook相似性搜索工具的原理

    https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html 本月初雷锋网报道,Facebook 开源了 AI 相似性搜索工具 Faiss.而在 ...

  2. Faiss向量相似性搜索

    Faiss 快速入门(1) Faiss 更快的索引(2) Faiss低内存占用(3) Faiss 构建: clustering, PCA, quantization(4) 如何选择Faiss索引(5)

  3. [原创]CentOS6.4编译安装Facebook的folly库(gcc4.8.1boost1.5.3)

      Folly: Facebook Open-souce LibrarY,Facebook开源的一个基础组件库,据说在大规模的场景中性能较高.目前因为自己负责的系统有几个地方性能较差,因此特意找来看看 ...

  4. 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)

    就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...

  5. Facebook React.js库 入门实例教程

    作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩 ...

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

    开源项目链接 facebook Fresco仓库:git clone https://github.com/facebook/fresco facebook Fresco主页:“>http:// ...

  7. ios paper for facebook 使用第三方库

    facebook paper使用的第三方库 Facebook Paper使用的第三方库 第三方库名 简介 链接 ACE code editor https://github.com/ajaxorg/a ...

  8. 96、facebook Fresco框架库源使用(转载)

    各个属性详情:http://blog.csdn.net/y1scp/article/details/49245535 开源项目链接 facebook Fresco仓库:git clone https: ...

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

    What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high ...

随机推荐

  1. 李洪强iOS开发之iOS好文章收集

    李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...

  2. Selenium操作之滚动条

    在用Selenium做UI自动化时,经常会遇到有些元素找不到之类的问题,但是自己的代码并没有错,元素就是找不到,这是为什么呢?原因很简单,由于页面内容较多,有些内容需要下拉滚动条才会显示,这里介绍一种 ...

  3. hdu 1042 N! java大数及判断文件末尾

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submi ...

  4. NGUI3.7.4实现循环拖动

    前段时间下了NGUI新版本3.7.4,看到例子Endless Scroll Views,实现了循环拖动,可能会用到,先把实现步骤贴出来跟大家分享一下. 1.首先新建一个背景. 2.添加所需控件,类似滑 ...

  5. lnmp集成开发环境安装pdo_dblib扩展

    php连接mssql,获取的结果中文乱码,pdo_dblib扩展使用的是apt-get install php5-sybase方法安装的,尝试了修改freetds.conf php.ini 文件编码 ...

  6. 【Java】之static静态方法与非static静态方法区别

    1.A.class:没有static public class A { public String getText(){ } B.class调用A的方法时 public class B { publi ...

  7. 【Mac + Appium + Python3.6学习(五)】之常用的Android自动化测试API总结

    Github测试样例地址:https://github.com/appium-boneyard/sample-code/tree/master/sample-code/examples ①定位text ...

  8. 极光Java后台推送APP对接

    1.极光对接,首先需要注册用户,和创建应用 2,.Java对接需要依赖包 <dependency> <groupId>cn.jpush.api</groupId> ...

  9. Image Filter

    香港中文大学研究成果 Rolling Guidance Filter http://www.cse.cuhk.edu.hk/~leojia/projects/rollguidance/ 100+ Ti ...

  10. 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会(树形dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1827 仔细想想就好了,, 每个点维护两个值,一个是子树的费用,一个是除了子树和自己的费用.都可以用d ...