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. Atitit. http 代理原理  atiHttpProxy  大木马

    Atitit. http 代理原理  atiHttpProxy  大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规 ...

  2. 强大的Vivado IP工具——自定义IP的使用

    首先,要指出,本文不描述任何IP的功能与使用.   在开发一个大型FPGA项目时,多人协作是必不可少的.这个时候,如何提交设计给负责集成的人,是项目开发中最关键的问题之一. 常用的一个方法是,提交网表 ...

  3. php-fpm配置详解

    php-fpm详解 原文链接:http://php-fpm.anight.org/wiki:http://www.php-fpm.com/翻译:http://syre.blogbus.com/logs ...

  4. 用mysql写带占位符的select语句

    sql.append(" AND t.f_user_name LIKE CONCAT('%',?,'%')");//模糊查询 sql.append(" AND t.f_u ...

  5. PHP文件包含

    今天突然发现这个东西有好多奇怪的东西,特别写一下记一下 测试用的1.txt及phpinfo.php内容都是phpinfo() 截断: 好多.和好多./截断:这里不测试了,摘自代码审计一书,5.2可用, ...

  6. java对象实现深复制的方法

    p2 = (Person)org.apache.commons.lang3.ObjectUtils.cloneBean(p); Person p2 = new Person(); p2 = (Pers ...

  7. ubuntu 安装 qt等软件

    1 ubuntu安装qt4 sudo apt-get install qt4-dev-tools qt4-designer qt4-doc qt4-qtconfigqt4-demos qt4-qmak ...

  8. STM32F4_TIM输入波形捕获(脉冲频率、占空比)

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ.概述 ...

  9. Linux上安装Nginx及常用命令

    一.Linux安装软件常用方法 1.rpm(或pkg)安装,类似于Windows安装程序,是预编译好的程序. 1)使用的是通用参数编译,配置参数不是最佳 2)可控制性不强,比如对程序特定组件的定制性安 ...

  10. 安装 rbbitMQ redis mongo的三个扩展

    #!/bin/bash###install redis extend #########cd /usr/local/srctar fxvz redis-2.2.7.tgzcd redis-2.2.7/ ...