faiss-cpu安装及基础使用
faiss-cpu安装及基础使用
- 1. faiss安装
- 2. faiss基础操作
- 3. faiss常用索引
- 3.1. IndexFlatL2
- 3.2. IndexFlatIP
- 3.3. IndexIVFFlat
- 3.4. IndexIVFPQ
小小申明:类似文章非常多,本文仅作为自用整理,实际项目代码不会提供
version:20210902
Faiss(Facebook AI Similarity Search)基于索引的高维向量查询
更多内容可自行查看github-faiss项目说明
1. faiss安装
conda环境下,cpu版本
conda install faiss-cpu -c pytorch
2. faiss基础操作
demo文件示例:
# 准备示例数据
import numpy as np
d = 64 # 维度
nb = 100000 # 数据库的数据量
nq = 10000 # 查询数据的数据量
np.random.seed(1234) # make reproducible
xb = np.random.random((nb, d)).astype('float32')
xb[:, 0] += np.arange(nb) / 1000.
xq = np.random.random((nq, d)).astype('float32')
xq[:, 0] += np.arange(nq) / 1000.# 构建索引并添加向量
import faiss # make faiss available
index = faiss.IndexFlatL2(d) # 构建索引
# 这里使用了L2范式构建索引,还可以使用IndexFlatIP(内积)等其他类型索引
print(index.is_trained)
index.add(xb) # 向索引添加向量
print(index.ntotal)# 查找
k = 4 # 查找最近的top4
D, I = index.search(xb[:5], k) # 合理性检验
print(I)
print(D)
D, I = index.search(xq, k) # 查找
print(I[:5]) # 展示前五个查询的查询结果
print(I[-5:]) # 展示后五个查询的查询结果
3. faiss常用索引
3.1. IndexFlatL2
基于L2距离的暴力全量搜索,速度较慢
3.2. IndexFlatIP
基于内积的暴力全量搜索,速度较慢
3.3. IndexIVFFlat
先聚类再搜索,可以加快检索速度
- 先将xb中的数据进行聚类(聚类的数目是超参),nlist: 聚类的数目
- nprobe: 在多少个聚类中进行搜索,默认为1, nprobe越大,结果越精确,但是速度越慢
3.4. IndexIVFPQ
基于乘积量化(product quantizers)对存储向量进行压缩,节省存储空间
- m:乘积量化中,将原来的向量维度平均分成多少份,d必须为m的整数倍
- bits: 每个子向量用多少个bits表示
faiss-cpu安装及基础使用相关推荐
- faiss python安装_如何在ubuntu 18.04上安装faiss GPU
最近因为要做多路召回的相关研究需要使用faiss进行召回,很多同学困在了安装的流程上.所以想把如何安装流程做个小结. 最简单的方法就是通过Anaconda来进行安装,facebook官方会不定期的推送 ...
- proxmox ve 中文社区_基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置...
基于ProXmoX VE的虚拟化家庭服务器(篇一)-ProXmoX VE 安装及基础配置 2018-09-22 16:00:09 246点赞 2066收藏 327评论 你是AMD Yes党?还是int ...
- faiss python安装_faiss 安装
faiss c++ 源码编译 0.写在前面 参考下述文章的编译安装步骤同时将自己遇到的错误进行梳理解决: https://juejin.im/post/5bed7cebe51d454e5b5f2c23 ...
- Centos7 MYSQL安装与基础命令运用
Centos7 MYSQL安装与基础命令运用 1.关闭防火墙,selinux systemctl stop firewalld setenforce 0 2.实现虚拟机能够上网,所以说要两块网卡,一块 ...
- Katalon Studio自动化测试框架使用【1】--- 环境安装以及基础配置(MacOS)
一.Katalon Studio简介 Katalon Studio是一款免费的自动化测试工具,可以安装在windows.macOS.Linux操作系统上,结合了selenium和appium测试框架, ...
- 已经yum安装的基础上,升级编译安装git
一. 首先yum安装git # yum install git -y # git --version git version 1.7.1 二. 在已经yum安装的基础上升级git到2.7.4版本 1. ...
- Spark快速入门指南 – Spark安装与基础使用
本文转载自Spark快速入门指南 – Spark安装与基础使用 Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象.Spark 正如其名,最大的特点就是快(Lightni ...
- macos下使用aria2_macOS下 ansible简单安装及基础使用
macOS下 ansible简单安装及基础使用,其实命令是相通的,我这篇测试基本都是在macOS下执行的.在Linux操作系统下几乎同样的办法. ansible是一种自动化运维工具,基于Python开 ...
- linux7开放svn,CentOS 7 下SVN的安装及基础配置介绍
CentOS 7 下SVN的安装及基础配置介绍 一.实践环境 二.安装操作系统 三.安装SVN 四.基础配置 五.启动SVN 六.客户端访问 七.常见问题排查 一.实践环境 CentOS 7操作系统( ...
最新文章
- .NET Core微服务之基于Consul实现服务治理(续)
- 大神打造生态链,从F2全网通开始
- tesklink 管理员项目角色被修改后的解决方法
- Git 使用篇一:初步使用GitHub,下载安装git,并上传项目
- linux加密文件_如何在Linux上使用Gocryptfs加密文件
- spark--环境搭建--4.ZooKeeper345集群搭建
- 理解 Linux 配置文件【转】
- BS7799标准全面解析(新版)
- 机器狗病毒(又称下载者木马病毒)的手工毒杀
- 特殊字符图案大全c语言,特殊符号大全
- html中加入标题居中,在html标题标记中居中的div元素
- 工程数学 傅里叶变换 狄拉克函数
- ios修改apn的插件_苹果iPhone查看和编辑APN方法教程
- 任泽平最新演讲:从这6个周期,读懂中国经济未来走势
- 关于如何区分Android手机是32位还是64位
- 使用Datadog在docker环境下监控Java, Tomcat, Nginx, Kfaka, ZooKeeper
- SQL注入——SQL注入具体防御方案
- 程序员眼中看到的网页是如何制作出来的?
- Erlang数据结构
- 表单验证 手机号输入框
热门文章
- 计算机专业英语词组,计算机专业英语词组.doc
- Cartographer(三)思岚雷达rplidar ros驱动使用报错与解决
- What?小程序居然可以脱离微信环境运行
- 赛卓电子冲刺科创板上市:计划募资11亿元,股东包括尚颀资本等
- Android取消选择单选按钮,如何取消选中Android中的单选按钮
- 机器学习(周志华) 第十四章概率图模型
- Blogbus适用的日志发布工具【超级写手】
- has no exported member
- 周记:Fifty-eight
- Android中图像变换Matrix的原理、代码验证和应用(一)