文件 generic-inl.h

namespace faiss

具有多种变体的 k-means 聚类实现。

版权所有 (c) Facebook, Inc. 及其附属公司。

此源代码已获得 MIT 许可,可在该源代码树的根目录下的 LICENSE 文件中找到。

IDSelector旨在定义要处理的向量子集(用于移除或作为搜索的子集)

PQ4 SIMD 封装和累积函数

基本内核使用 bbs = nb * 2 * 16 向量累积 nq 查询向量,并为此生成输出矩阵。对于 nq * nb <= 4 来说,这很有趣,否则寄存器溢出会变得太大。

这些函数的实现分布在 3 个 cpp 文件中,以减少并行编译时间。模板被显式实例化。

此文件包含用于计算距离的内核的回调。

在整个库中,向量以 float * 指针的形式提供。当批量处理(添加/搜索)多个向量时,大多数算法都可以得到优化。在这种情况下,它们作为矩阵传入。当大小为 d 的 n 个向量以 float * x 的形式提供时,向量 i 的分量 j 是

x[ i * d + j ]

其中 0 <= i < n 且 0 <= j < d。换句话说,矩阵始终是紧凑的。当指定矩阵的大小时,我们称其为 n*d 矩阵,这意味着行优先存储。

I/O 函数可以读/写到文件名、文件句柄或抽象介质的对象。

读取函数返回应该使用 delete 释放的对象。这些对象中的所有引用都归对象所有。

反向列表的定义 + 一些实现该接口的常用类。

由于 IVF(倒排文件)索引在大规模用例中非常有用,因此我们将与它们相关的一些函数分组到这个小库中。大多数函数都适用于 IndexIVF 和嵌入在 IndexPreTransform 中的 IndexIVF。

在此文件中,实现了 L2 和内积之外的额外度量标准

实现了一些神经网络层,主要用于支持 QINCo

定义了一些对向量集应用转换的对象。这些通常是预处理步骤。

struct HammingComputer4
struct HammingComputer8
struct HammingComputer16
struct HammingComputer20
struct HammingComputer32
struct HammingComputer64
struct HammingComputerDefault
struct GenHammingComputer8
struct GenHammingComputer16
struct GenHammingComputer32
struct GenHammingComputerM8