昇腾社区首页
中文
注册

Search

实现多个Index的搜索,当前仅支持AscendIndexSQ。

API定义

void Search(std::vector<AscendIndex *> indexes, Index::idx_t n, const float *x, Index::idx_t k,float *distances, Index::idx_t *labels, bool merged)

功能描述

多indexes执行检索。

输入

std::vector<AscendIndex *> indexes:待执行检索的多个Index。

Index::idx_t n:执行检索的query数。

const float *x:执行检索的query特征向量。

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

bool merged:是否要合并多个Index上执行检索的结果。

输出

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

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

返回值

约束说明

  • 当前“indexes”仅支持类型为AscendIndexSQ且slim = true的指针,并且需满足indexes.size() > 0
  • 此处“n”通常不允许超过1e9。
  • 此处“k”通常不允许超过1024。
  • 此处“x”需要为非空指针,且长度应该为dim * n,否则可能出现越界读写的错误并引起程序崩溃。
  • “distances”/“labels”需要为非空指针。
  • merged = true,长度应该为k * n,否则可能出现越界读写的错误并引起程序崩溃。
  • merged = false,长度应该为indexes.size() * k * n,否则可能出现越界读写的错误并引起程序崩溃。