下载
中文
注册

SearchWithExtraMask

API定义

APP_ERROR SearchWithExtraMask(uint32_t count, const void *features, const AttrFilter *attrFilter, bool shareAttrFilter, uint32_t topk,

const uint8_t *extraMask, uint64_t extraMaskLenEachQuery, bool extraMaskIsAtDevice, int64_t *labels,

float *distances, uint32_t *validNums, bool enableTimeFilter = true);

功能描述

计算输入特征和经过AttrFilter和外部Mask过滤后的底库向量的距离并将距离进行TopK排序,返回对应的距离和下标。

输入

uint32_t count:待比较的特征数量。

void *features:待比较的特征,汉明距离为uint8_t类型的数据,Int8Flat为int8_t类型,Fp16Flat为float类型。

const AttrFilter *attrFilter:属性过滤信息,具体请参见AttrFilter

bool shareAttrFilter:同一个query是否共享一个Mask。

uint32_t topk:计算余弦距离后需要保存的TopK大小。

const uint8_t *extraMask:外部输入的额外的过滤Mask,以bit为单位,0和1分别代表过滤或者选中该条特征。

uint64_t extraMaskLenEachQuery:外部输入Mask的长度,单位为字节。

bool extraMaskIsAtDevice:用户外部输入的Mask是否已存在Device侧。

bool enableTimeFilter:时间戳属性过滤开关,默认为“true”,当enableTimeFilter = false时,不进行对时间戳属性的过滤。

输出

int64_t *labels:TopK特征的Label。

float *distances:TopK特征的距离。

uint32_t *validNums:每个query向量经过比对后得到的有效结果个数。

返回值

APP_ERROR:调用返回状态,具体请参见接口调用返回值参考

约束说明

  • “count”取值在[1, 10240]区间。
  • “topk”取值在[1, 100000]区间。
  • “features”长度为count * 向量维度dim,否则可能出现越界读写的错误并引起程序崩溃。
  • “attrFilter”shareAttrFilter为true时,长度为1;当shareAttrFilter为false时,长度为count,否则可能出现越界读写的错误并引起程序崩溃。
  • “distances”长度为count * topk,否则可能出现越界读写的错误并引起程序崩溃。
  • “validNums”长度为count,否则可能出现越界读写的错误并引起程序崩溃。
  • “labels”长度为count * topk,否则可能出现越界读写的错误并引起程序崩溃。
  • “extraMask”:当shareAttrFilter为true时,长度为“extraMaskLenEachQuery”;当shareAttrFilter为false时,长度为count * extraMaskLenEachQuery,否则可能出现越界读写的错误并引起程序崩溃。