search_with_masks

API定义

void search_with_masks(Index::idx_t n, const int8_t *x, Index::idx_t k, float *distances, Index::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”需要为非空指针,且长度应该为dim * n,否则可能出现越界读写的错误并引起程序崩溃。
  • 指针“distances”/“labels”需要为非空指针,且长度应该为k * n,否则可能出现越界读写的错误并引起程序崩溃。
  • 指针“mask”需要为非空指针,需保证传入的掩码长度为⌈ntotal / 8⌉ * n(“ntotal”为底库向量的条数)。