结构体 faiss::ZnSphereCodecAlt

struct ZnSphereCodecAlt : public faiss::ZnSphereCodec

如果维度是 2 的幂,则使用递归编解码器;否则使用常规编解码器

公共函数

ZnSphereCodecAlt(int dim, int r2)
virtual uint64_t encode(const float *x) const override

接受不需要是质心的向量

virtual void decode(uint64_t code, float *c) const override

解码

uint64_t search_and_encode(const float *x) const
float search(const float *x, float *c) const

查找最近的质心。x 不需要归一化

float search(const float *x, float *c, float *tmp, int *tmp_int, int *ibest_out = nullptr) const

完整调用。需要外部分配的临时空间

void search_multi(int n, const float *x, float *c_out, float *dp_out)
void encode_multi(size_t nc, const float *c, uint64_t *codes) const
void decode_multi(size_t nc, const uint64_t *codes, float *c) const
void find_nn(size_t n, const uint64_t *codes, size_t nq, const float *xq, int64_t *idx, float *dis)

公共成员

bool use_rec
ZnSphereCodecRec znc_rec
std::vector<CodeSegment> code_segments
uint64_t nv
size_t code_size
int dimS
int r2
int natom
std::vector<float> voc

大小为 dim * ntatom

int dim