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

先聚类再搜索,可以加快检索速度

  1. 先将xb中的数据进行聚类(聚类的数目是超参),nlist: 聚类的数目
  2. nprobe: 在多少个聚类中进行搜索,默认为1, nprobe越大,结果越精确,但是速度越慢

3.4. IndexIVFPQ

基于乘积量化(product quantizers)对存储向量进行压缩,节省存储空间

  • m:乘积量化中,将原来的向量维度平均分成多少份,d必须为m的整数倍
  • bits: 每个子向量用多少个bits表示

faiss-cpu安装及基础使用相关推荐

  1. faiss python安装_如何在ubuntu 18.04上安装faiss GPU

    最近因为要做多路召回的相关研究需要使用faiss进行召回,很多同学困在了安装的流程上.所以想把如何安装流程做个小结. 最简单的方法就是通过Anaconda来进行安装,facebook官方会不定期的推送 ...

  2. proxmox ve 中文社区_基于ProXmoX VE的虚拟化家庭服务器(篇一)—ProXmoX VE 安装及基础配置...

    基于ProXmoX VE的虚拟化家庭服务器(篇一)-ProXmoX VE 安装及基础配置 2018-09-22 16:00:09 246点赞 2066收藏 327评论 你是AMD Yes党?还是int ...

  3. faiss python安装_faiss 安装

    faiss c++ 源码编译 0.写在前面 参考下述文章的编译安装步骤同时将自己遇到的错误进行梳理解决: https://juejin.im/post/5bed7cebe51d454e5b5f2c23 ...

  4. Centos7 MYSQL安装与基础命令运用

    Centos7 MYSQL安装与基础命令运用 1.关闭防火墙,selinux systemctl stop firewalld setenforce 0 2.实现虚拟机能够上网,所以说要两块网卡,一块 ...

  5. Katalon Studio自动化测试框架使用【1】--- 环境安装以及基础配置(MacOS)

    一.Katalon Studio简介 Katalon Studio是一款免费的自动化测试工具,可以安装在windows.macOS.Linux操作系统上,结合了selenium和appium测试框架, ...

  6. 已经yum安装的基础上,升级编译安装git

    一. 首先yum安装git # yum install git -y # git --version git version 1.7.1 二. 在已经yum安装的基础上升级git到2.7.4版本 1. ...

  7. Spark快速入门指南 – Spark安装与基础使用

    本文转载自Spark快速入门指南 – Spark安装与基础使用 Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象.Spark 正如其名,最大的特点就是快(Lightni ...

  8. macos下使用aria2_macOS下 ansible简单安装及基础使用

    macOS下 ansible简单安装及基础使用,其实命令是相通的,我这篇测试基本都是在macOS下执行的.在Linux操作系统下几乎同样的办法. ansible是一种自动化运维工具,基于Python开 ...

  9. linux7开放svn,CentOS 7 下SVN的安装及基础配置介绍

    CentOS 7 下SVN的安装及基础配置介绍 一.实践环境 二.安装操作系统 三.安装SVN 四.基础配置 五.启动SVN 六.客户端访问 七.常见问题排查 一.实践环境 CentOS 7操作系统( ...

最新文章

  1. .NET Core微服务之基于Consul实现服务治理(续)
  2. 大神打造生态链,从F2全网通开始
  3. tesklink 管理员项目角色被修改后的解决方法
  4. Git 使用篇一:初步使用GitHub,下载安装git,并上传项目
  5. linux加密文件_如何在Linux上使用Gocryptfs加密文件
  6. spark--环境搭建--4.ZooKeeper345集群搭建
  7. 理解 Linux 配置文件【转】
  8. BS7799标准全面解析(新版)
  9. 机器狗病毒(又称下载者木马病毒)的手工毒杀
  10. 特殊字符图案大全c语言,特殊符号大全
  11. html中加入标题居中,在html标题标记中居中的div元素
  12. 工程数学 傅里叶变换 狄拉克函数
  13. ios修改apn的插件_苹果iPhone查看和编辑APN方法教程
  14. 任泽平最新演讲:从这6个周期,读懂中国经济未来走势
  15. 关于如何区分Android手机是32位还是64位
  16. 使用Datadog在docker环境下监控Java, Tomcat, Nginx, Kfaka, ZooKeeper
  17. SQL注入——SQL注入具体防御方案
  18. 程序员眼中看到的网页是如何制作出来的?
  19. Erlang数据结构
  20. 表单验证 手机号输入框

热门文章

  1. 计算机专业英语词组,计算机专业英语词组.doc
  2. Cartographer(三)思岚雷达rplidar ros驱动使用报错与解决
  3. What?小程序居然可以脱离微信环境运行
  4. 赛卓电子冲刺科创板上市:计划募资11亿元,股东包括尚颀资本等
  5. Android取消选择单选按钮,如何取消选中Android中的单选按钮
  6. 机器学习(周志华) 第十四章概率图模型
  7. Blogbus适用的日志发布工具【超级写手】
  8. has no exported member
  9. 周记:Fifty-eight
  10. Android中图像变换Matrix的原理、代码验证和应用(一)