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. iptables 使用

    原文链接 本文介绍25个常用的iptables用法.如果你对iptables还不甚了解,可以参考上一篇iptables详细教程:基础.架构.清空规则.追加规则.应用实例,看完这篇文章,你就能明白ipt ...

  2. C# tif文件转jpg

    需要添加WindowBase,PresentationCore的引用. 代码如下: private Stream GetImageStream() { //可以通过网络或本地文件的形式,返回Tif文件 ...

  3. 线上定位GC内存泄露问题

    原因:Java中存在内存泄露,就是因为对象无用却可达. 举个例子: 在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个Vector中,如果我们仅仅释放引用本身,那么Vector仍然引 ...

  4. socket编程头文件分析

    在socket网络编程中经常用到一些宏定义.结构和函数,这些经常包含在相关的头文件中,使用时直接include相关头文件即可.下面简单描述下相关的一些结构及头文件. 1. sockaddr  / bi ...

  5. php-fpm nginx 使用 curl 请求 https 出现 502 错误

    用php curl请求https的url出现502错误,请求帮忙解决. PHP版本:5.6.7Nginx版本:1.8.0 代码如下: $ch = curl_init(); curl_setopt($c ...

  6. CentOS装JDK1.8

    1.下载jdk1.8:http://download.csdn.net/download/yichen01010/10017267 直接使用liunx下默认安装的浏览器 下载 2.卸载系统自带的jdk ...

  7. RMAN 总括 组成 配置 检测

    RMAN 组件: 1. RMAN 执行程序, 也就是RMAN 命令. 2. Server session : 服务器上的进程, 是真正用来干活的. 3. Target database: 你想要进行备 ...

  8. CSS之webkit-scrollbar例子

    基于webkit的浏览器现在也可以自定义其样式: ::-webkit-scrollbar              { /* 1 */ }   ::-webkit-scrollbar-button   ...

  9. CTO俱乐部

    主持人:目前互联网金融行业存在哪些行业痛点?云信CreditCloud 是如何解决这些痛点的,过程中有哪些思考? 朱家波:目前这个行业有点乱象丛生, 投资人对行业的不信任是一个很大的痛点.解决不信任的 ...

  10. 【转】MySQL常用命令总结

    http://blog.csdn.net/qq_33850438/article/details/52144686 MySQL常用的基本操作,以下都是MySQL 5.0下测试通过首先说明下,记住在每个 ...