faiss, 一种高效的稠密向量相似性搜索与聚类

分享于 

5分钟阅读

GitHub

  繁體 雙語
A library for efficient similarity search and clustering of dense vectors.
  • 源代码名称:faiss
  • 源代码网址:http://www.github.com/facebookresearch/faiss
  • faiss源代码文档
  • faiss源代码下载
  • Git URL:
    git://www.github.com/facebookresearch/faiss.git
    Git Clone代码到本地:
    git clone http://www.github.com/facebookresearch/faiss
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/facebookresearch/faiss
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Faiss

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

    新闻

    新:最新提交的( 2018-02-22 ) 支持反转索引磁盘存储,见演示/demo_ondisk_ivf。py。

    新:最新提交( 2018-01-09 ) 包含了HNSW索引方法的实现,见 benchs/bench_hnsw。py。

    新:现在有一个 Facebook public 讨论组,在 https://www.facebook.com/groups/faissusers/的Faiss用户 discussion。

    新:on年 on,上的许可证从CC-BY-NC轻松进入。 详细阅读许可证。

    简介

    Faiss包含几种相似搜索方法。 它假定实例表示为矢量,并由整数标识,并且向量可以与二进制距离或者点产品进行比较。 查询向量相似的向量是具有最低的L2距离或者具有查询向量的最高点积的向量。 它还支持余弦相似性,因为它是标准化向量上的一个点积。

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

    GPU实现可以接受来自CPU或者GPU存储器的输入。 通过 GPU,GPU索引可以用于替换CPU索引,并从GPU内存中复制到/从GPU存储器自动处理。 如果输入和输出都保持在GPU上,结果会更快。 支持单一和多gpu使用。

    建筑

    库主要在 C++ 中实现,通过CUDA提供可选的GPU支持,以及可选的python 接口。 CPU版本需要 BLAS 库。 它使用Makefile编译,并可以打包到 Docker 映像中。 有关详细信息,请参阅 INSTALL.md

    Faiss的工作原理

    Faiss是围绕存储一组向量的索引类型构建的,并提供了一个函数,用于在二进制和/或者点积向量比较。 某些索引类型是简单基线,如精确搜索。 大多数可用索引结构都对应于不同

    • 搜索时间
    • 搜索质量
    • 每个索引向量使用的内存
    • 培训时间
    • 需要外部数据进行非监督训练

    optional GPU ( 从 2017年03月 ) 实现为高维向量。最快的k 和最快速的lloyd搜索实现提供了可能的,最快速的小k 选择算法已知。 这里的实现是详细的。

    Faiss的完整文档

    以下是文档的入口点:

    作者

    Faiss的主要作者是:

    引用

    在研究论文中使用Faiss时引用引用:

    
    @article{JDH17,
    
    
     title={Billion-scale similarity search with GPUs},
    
    
     author={Johnson, Jeff and Douze, Matthijs and J{'e}gou, Herv{'e}},
    
    
     journal={arXiv preprint arXiv:1702.08734},
    
    
     year={2017}
    
    
    }
    
    
    
    

    加入Faiss社区

    在 public 讨论中,有一个Facebook讨论组位于 https://www.facebook.com/groups/faissusers/

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

    许可证

    Faiss是bsd授权的我们还提供额外的专利授权。


    相关文章