Struct faiss::InvertedListScanner
-
struct InvertedListScanner
Object that handles a query. The inverted lists to scan are provided externally. The object has a lot of state, but distance_to_code and scan_codes can be called in multiple threads
Public Functions
-
inline InvertedListScanner(bool store_pairs = false, const IDSelector *sel = nullptr)
-
virtual void set_query(const float *query_vector) = 0
from now on we handle this query.
-
virtual void set_list(idx_t list_no, float coarse_dis) = 0
following codes come from this inverted list
-
virtual float distance_to_code(const uint8_t *code) const = 0
compute a single query-to-code distance
-
virtual size_t scan_codes(size_t n, const uint8_t *codes, const idx_t *ids, float *distances, idx_t *labels, size_t k) const
scan a set of codes, compute distances to current query and update heap of results if necessary. Default implementation calls distance_to_code.
- Parameters:
n – number of codes to scan
codes – codes to scan (n * code_size)
ids – corresponding ids (ignored if store_pairs)
distances – heap distances (size k)
labels – heap labels (size k)
k – heap size
- Returns:
number of heap updates performed
-
virtual size_t iterate_codes(InvertedListsIterator *iterator, float *distances, idx_t *labels, size_t k, size_t &list_size) const
-
virtual void scan_codes_range(size_t n, const uint8_t *codes, const idx_t *ids, float radius, RangeQueryResult &result) const
scan a set of codes, compute distances to current query and update results if distances are below radius
(default implementation fails)
-
virtual void iterate_codes_range(InvertedListsIterator *iterator, float radius, RangeQueryResult &result, size_t &list_size) const
-
inline virtual ~InvertedListScanner()
Public Members
-
idx_t list_no = -1
remember current list
-
bool keep_max = false
keep maximum instead of minimum
-
bool store_pairs
store positions in invlists rather than labels
-
const IDSelector *sel
search in this subset of ids
-
size_t code_size = 0
used in default implementation of scan_codes
-
inline InvertedListScanner(bool store_pairs = false, const IDSelector *sel = nullptr)