结构体 faiss::BinaryInvertedListScanner

struct BinaryInvertedListScanner

公共函数

virtual void set_query(const uint8_t *query_vector) = 0

从此之后我们处理这个查询。

virtual void set_list(idx_t list_no, uint8_t coarse_dis) = 0

以下代码来自这个倒排列表

virtual uint32_t distance_to_code(const uint8_t *code) const = 0

计算单个查询到代码的距离

virtual size_t scan_codes(size_t n, const uint8_t *codes, const idx_t *ids, int32_t *distances, idx_t *labels, size_t k) const = 0

计算到代码的距离。(distances, labels) 应该组织成最小或最大堆

参数:
  • n – 要扫描的代码数量

  • codes – 要扫描的代码 (n * code_size)

  • ids – 相应的 IDs(如果 store_pairs 则忽略)

  • distances – 堆距离 (大小 k)

  • labels – 堆标签 (大小 k)

  • k – 堆大小

virtual void scan_codes_range(size_t n, const uint8_t *codes, const idx_t *ids, int radius, RangeQueryResult &result) const = 0
inline virtual ~BinaryInvertedListScanner()