下载
中文
注册

search_with_masks

API定义

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

功能描述

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

输入

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

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

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

const void* mask:底库的过滤掩码。

输出

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

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

返回值

约束说明

  • “n”的取值范围:0 < n < 1e9。
  • “k”通常不允许超过4096。
  • 指针“x”需要为非空指针,且长度应该为dims * n,否则可能出现越界读写的错误并引起程序崩溃。
  • 指针“distances”/“labels”需要为非空指针,且长度应该为k * n,否则可能出现越界读写的错误并引起程序崩溃。
  • 指针“mask”需要为非空指针,需保证传入的掩码长度为⌈ntotal / 8⌉ * n(“ntotal”为底库向量的条数)。
  • mask是按照底库的顺序来设置的,如果调用此接口前有调用remove_ids删除特征向量,会导致底库特征顺序改变,请先通过调用getIdxMap接口获取底库特征的ID,进而设置mask。
  • 使用该接口要求底库存储在一个device中,否则可能导致过滤结果有误。