下载
中文
注册

search_with_masks

API定义

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

功能描述

AscendIndexFlat的特征向量查询接口,根据输入的特征向量返回最相似的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为底库特征数量。
  • mask是按照底库的顺序来设置的,如果调用此接口前有调用remove_ids删除特征向量,会导致底库特征顺序改变,请先通过调用getIdxMap接口获取底库特征的ID,进而设置mask。
  • 使用该接口要求底库存储在一个device中,否则可能导致过滤结果有误。