ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Faiss库系列1_概述

2019-02-18 20:00:10  阅读:538  来源: 互联网

标签:系列 索引 搜索 GPU 概述 CPU 向量 Faiss


Faiss库系列1_概述

项目地址:https://github.com/facebookresearch/faiss
使用教程:https://github.com/facebookresearch/faiss/wiki/Getting-started

1 Faiss简介

  Faiss由Facebook AI Research开发,是一个用于相似性搜索和密集向量聚类的高性能库,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。它包含多种搜索任意大小向量集(备注:向量集大小由RAM内存决定)的算法,以及用于算法评估和参数调整的支持代码。Faiss用C++编写,并提供与Numpy完美衔接的Python接口。除此以外,对一些核心算法提供了GPU实现。

  Faiss库包含相似性搜索的多种方法。它假设实例被表示为向量,并用整数标识,同时向量可以与L2距离或点积进行比较。与查询向量类似的向量是那些与查询向量具有最低L2距离或具有最高点积的向量。它还支持余弦相似性,因为这是归一化向量上的点积。

  大多数方法,如基于二进制向量和紧凑量化码的方法,仅使用向量的压缩表示,而不需要保留原始向量。这通常以不太精确的搜索为代价,但是这些方法可以在单个服务器的主内存中进行数十亿向量集的搜索。

  GPU实现支持单GPU或多GPU,可以接受来自CPU或GPU存储器的输入。在具有GPU的服务器上,可以使用GPU索引作为CPU索引的替换(例如:使用GpuIndexFlatL2替换IndexFlatL2),并且自动处理GPU内存与CPU内存间的索引复制。当然,如果输入和输出都驻留在GPU上,结果将更快。

2 Faiss构建与安装

  Faiss库主要用C++进行编码实现,通过CUDA提供可选的GPU支持,同时也提供了可选的Python接口。在编译构建时,CPU版本需要依赖BLAS库,利用Makefile文件或CMakelists.txt文件编译,并可以打包到docker镜像。详情见INSTALL.md

3 Faiss如何工作?

  Faiss库围绕存储一组向量的索引类型进行构建,提供使用L2距离和(或)点积运算进行向量比较的搜索功能,不同的索引类型对应不同的搜索方法,其中一些索引类型能提供评价基线,例如IndexFlatL2。Faiss库。大多数索引类型是搜索时间、搜索质量、索引向量内存占用、训练时间、无监督训练依赖外部数据等指标的均衡。可选的GPU版Faiss实现了Floyd's k-means以及k-selection算法,能够为高维向量提供精确或近似最近邻搜索的功能。

4 Faiss文档

  Faiss库使用相关文档,包括教程常见问题解答Bug修复

  Faiss库学术论文结果复现资料,论文:Polysemous codesBillion-scale similarity search with GPUs;实验结果:benchmarks README

5 Faiss主要作者

  • Hervé Jégou Faiss项目创建和第一个版本实现
  • Matthijs Douze 大部分CPU Faiss的代码实现
  • Jeff Johnson 所有GPU Faiss的代码实现
  • Lucas Hosseini 二进制索引类型的代码实现

6 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}
}
12764901-cc4a515e6a0cfb47
12764901-a14ddb4fc383ef6a
12764901-17e5f37c7c84fa38

标签:系列,索引,搜索,GPU,概述,CPU,向量,Faiss
来源: https://blog.csdn.net/weixin_33890526/article/details/87239645

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有