美文网首页
faiss学习笔记(一)

faiss学习笔记(一)

作者: jinjin1009 | 来源:发表于2021-04-22 21:27 被阅读0次

1、构建训练数据和测试数据

import numpy as np

d = 64
nb = 100000
nq = 10000
np.random.seed(1234)

# 产生0-1之间的随机数,xb为100000*64数组,每个值在0-1之间
xb = np.random.random((nb, d)).astype('float32')

# np.arange()为从0开始,步长为1,截止到100000-1,一个长度为100000的数组
# xb[:, 0]=xb[:, 0]+np.arange(nb)
# 最终得到的xb[:, 0]为一个长度为100000的数组,值是0-1随机数+[0,1,2,3...99999]
xb[:, 0] += np.arange(nb) / 1000.

xq = np.random.random((nq, d)).astype('float32')
xq[:, 0] += np.arange(nq) / 1000.

上面我们构建了shape为[100000,64]的训练数据xb和shape为[10000,64]的查询数据xq
对于xb和xq的第一列进行了差异化的处理

2、构建索引

import faiss
index = faiss.IndexFlatL2(d)
print(index.is_trained)
index.add(xb)
print(index.ntotal)

faiss创建索引是为了对向量进行预处理,提高查询效率
IndexFlatL2是通过L2 欧式距离进行计算
创建索引时必须指定向量的维度d
大部分索引需要训练这一步,但是IndexFlatL2跳过这一步,默认索引为训练好的
当索引创建并训练好之后,我们就可以用add和search方法了
add方法是添加训练时的样本

output
True
100000

3、查找搜索

k = 4
D, I = index.search(xq, k)
print(D.shape)
print(I.shape)
print(I[:5])
print(D[-5:])

search方法主要是寻找相似向量,基于索引便可以进行k近邻查询了,结果矩阵为xq*k,其中第i行表示第i个查询向量,每行包含k个最近邻的ID,同时会返回相同维度的距离矩阵,可以看到距离依次递增

output
(10000, 4)
(10000, 4)
[[ 381  207  210  477]
 [ 526  911  142   72]
 [ 838  527 1290  425]
 [ 196  184  164  359]
 [ 526  377  120  425]]
[[6.5315704 6.97876   7.0039215 7.013794 ]
 [4.335266  5.2369385 5.3194275 5.7032776]
 [6.072693  6.5767517 6.6139526 6.7323   ]
 [6.637512  6.6487427 6.8578796 7.0096436]
 [6.2183685 6.4525146 6.548767  6.581299 ]]

相关文章

  • faiss学习笔记(一)

    1、构建训练数据和测试数据 上面我们构建了shape为[100000,64]的训练数据xb和shape为[1000...

  • faiss学习笔记(二)

    加速搜索 如果需要存储的向量太多,通过暴力搜索索引IndexFlatL2速度很慢,这里介绍一种加速搜索的方案,索引...

  • Faiss学习:一

    在多个GPU上运行Faiss以及性能测试 一、Faiss的基本使用 1.1在CPU上运行 Faiss的所有算法都是...

  • faiss 学习笔记(二) | index 学习

    前言 faiss 的索引种类很多, 并且可以嵌套使用. 不同的索引有不同的实现方式及试用条件,根据数据集的特性和运...

  • faiss的安装使用

    1. Faiss简介 Faiss是Facebook开源的一款用于大规模P维向量最近邻检索的工具。 Faiss is...

  • Ubuntu 16.04 下 faiss 安装笔记

    前言 faiss 简介 三月初,Facebook AI Research(FAIR)开源了一个名为 Faiss 的...

  • faiss 学习笔记(一) | 三种基础索引方式学习

    前言 不同的索引方式是faiss的核心内容, 他们以不同的方式构建,基于不同的算法与数据结构. 选择合适的inde...

  • Faiss那点事~

    最近看了下Faiss的原因,今天让我们来Faiss那点事~全名叫Facebook AI Similarity Se...

  • 记一记faiss安装

    背景 近期服务迁移到阿里云,发现一个服务依赖faiss,本以为简单的pip install faiss 即可解决,...

  • 手把手教你安装Faiss(Linux)

    前言 由于最近项目组引用Faiss库(Faiss是由Facebook AI Research研发的为稠密向量提供高...

网友评论

      本文标题:faiss学习笔记(一)

      本文链接:https://www.haomeiwen.com/subject/evofrltx.html