search_with_masks

API定义

void search_with_masks(Index::idx_t n, const float *x, Index::idx_t k, float *distances, Index::idx_t *labels, const void *mask) const;

功能描述

AscendIndexSQ的特征向量查询接口,根据输入的特征向量返回最相似的k条特征的ID。mask为01比特串,每个比特代表底库中对应顺序的特征是否参与距离计算,1参与,0不参与。

输入

idx_t n:查询的特征向量的条数。

const float *x:特征向量数据。

idx_t k:需要返回的最近似的结果的个数。

const void *mask: 特征底库掩码。

输出

float *distances:查询向量与距离最近的前“k”个向量间的距离值。

idx_t *labels:查询的距离最近的前“k”个向量的ID。

返回值

约束说明

  • 此处“n”的取值范围:0 < n < 1e9。
  • 此处“k”通常不允许超过4096。
  • 此处指针“x”需要为非空指针,且长度应该为dim * n,否则可能出现越界读写的错误并引起程序崩溃。
  • 此处指针“distances”/“labels”需要为非空指针,且长度应该为k * n,否则可能出现越界读写的错误并引起程序崩溃。
  • 此处指针“mask”需要为非空指针,且长度应该为n*ceil(ntotal/8),否则可能出现越界读写的错误并引起程序崩溃,其中ntotal为底库特征数量。