ICode9

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

以图搜图升级版faiss框架一之faiss介绍

2019-07-30 11:40:40  阅读:1224  来源: 互联网

标签:搜图 一之 索引 搜索 GPU faiss CPU 向量 Faiss


1. Faiss
Faiss是一个用于高效相似性搜索和密集向量聚类的库。它包含搜索任意大小的向量集的算法,最多可能不适合RAM。它还包含用于评估和参数调整的支持代码。Faiss是用C ++编写的,包含Python / numpy的完整包装器。一些最有用的算法是在GPU上实现的。它由Facebook AI Research开发。

2. 介绍
Faiss包含几种相似性搜索方法。它假设实例表示为向量并由整数标识,并且可以将向量与L2距离或点积进行比较。与查询向量类似的向量是具有最低L2距离的向量或具有查询向量的最高点积。它还支持余弦相似性,因为它是归一化向量上的点积。

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

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

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

4.Faiss如何运作
Faiss围绕存储一组向量的索引类型构建,并提供使用L2和/或点积矢量比较在其中搜索的函数。一些索引类型是简单的基线,例如精确搜索。大多数可用的索引结构对应于各种权衡
搜索时间
搜索质量
每个索引向量使用的内存
训练时间
需要外部数据进行无人监督的培训
可选的GPU实现提供了可能(截至2017年3月)高维向量的最快精确和近似(压缩域)最近邻搜索实现,最快Lloyd的k均值和已知的最快小k选择算法。

标签:搜图,一之,索引,搜索,GPU,faiss,CPU,向量,Faiss
来源: https://blog.csdn.net/weixin_42435657/article/details/97764930

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

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

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

ICode9版权所有