Faiss
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
Public Member Functions | Public Attributes | List of all members
faiss::IndexIVFPQR Struct Reference

#include <IndexIVFPQ.h>

Inheritance diagram for faiss::IndexIVFPQR:
faiss::IndexIVFPQ faiss::IndexIVF faiss::Index faiss::Level1Quantizer

Public Member Functions

 IndexIVFPQR (Index *quantizer, size_t d, size_t nlist, size_t M, size_t nbits_per_idx, size_t M_refine, size_t nbits_per_idx_refine)
 
void reset () override
 removes all elements from the database.
 
long remove_ids (const IDSelector &sel) override
 Dataset manipulation functions.
 
void train_residual (idx_t n, const float *x) override
 trains the two product quantizers
 
void add_with_ids (idx_t n, const float *x, const long *xids) override
 default implementation that calls encode_vectors
 
void add_core (idx_t n, const float *x, const long *xids, const long *precomputed_idx=nullptr)
 same as add_with_ids, but optionally use the precomputed list ids
 
void reconstruct_from_offset (long list_no, long offset, float *recons) const override
 
void merge_from (IndexIVF &other, idx_t add_id) override
 
void search_preassigned (idx_t n, const float *x, idx_t k, const idx_t *assign, const float *centroid_dis, float *distances, idx_t *labels, bool store_pairs, const IVFSearchParameters *params=nullptr) const override
 
- Public Member Functions inherited from faiss::IndexIVFPQ
 IndexIVFPQ (Index *quantizer, size_t d, size_t nlist, size_t M, size_t nbits_per_idx)
 
void encode_vectors (idx_t n, const float *x, const idx_t *list_nos, uint8_t *codes) const override
 
void add_core_o (idx_t n, const float *x, const long *xids, float *residuals_2, const long *precomputed_idx=nullptr)
 
void train_residual_o (idx_t n, const float *x, float *residuals_2)
 same as train_residual, also output 2nd level residuals
 
size_t find_duplicates (idx_t *ids, size_t *lims) const
 
void encode (long key, const float *x, uint8_t *code) const
 
void encode_multiple (size_t n, long *keys, const float *x, uint8_t *codes, bool compute_keys=false) const
 
void decode_multiple (size_t n, const long *keys, const uint8_t *xcodes, float *x) const
 inverse of encode_multiple
 
InvertedListScannerget_InvertedListScanner (bool store_pairs) const override
 get a scanner for this index (store_pairs means ignore labels)
 
void precompute_table ()
 build precomputed table More...
 
- Public Member Functions inherited from faiss::IndexIVF
 IndexIVF (Index *quantizer, size_t d, size_t nlist, size_t code_size, MetricType metric=METRIC_L2)
 
void train (idx_t n, const float *x) override
 Trains the quantizer and calls train_residual to train sub-quantizers.
 
void add (idx_t n, const float *x) override
 Calls add_with_ids with NULL ids.
 
void search (idx_t n, const float *x, idx_t k, float *distances, idx_t *labels) const override
 
void range_search (idx_t n, const float *x, float radius, RangeSearchResult *result) const override
 
void range_search_preassigned (idx_t nx, const float *x, float radius, const idx_t *keys, const float *coarse_dis, RangeSearchResult *result) const
 
void reconstruct (idx_t key, float *recons) const override
 
void reconstruct_n (idx_t i0, idx_t ni, float *recons) const override
 
void search_and_reconstruct (idx_t n, const float *x, idx_t k, float *distances, idx_t *labels, float *recons) const override
 
void check_compatible_for_merge (const IndexIVF &other) const
 
virtual void copy_subset_to (IndexIVF &other, int subset_type, idx_t a1, idx_t a2) const
 
size_t get_list_size (size_t list_no) const
 
void make_direct_map (bool new_maintain_direct_map=true)
 
void replace_invlists (InvertedLists *il, bool own=false)
 replace the inverted lists, old one is deallocated if own_invlists
 
- Public Member Functions inherited from faiss::Index
 Index (idx_t d=0, MetricType metric=METRIC_L2)
 
void assign (idx_t n, const float *x, idx_t *labels, idx_t k=1)
 
void compute_residual (const float *x, float *residual, idx_t key) const
 
void display () const
 
- Public Member Functions inherited from faiss::Level1Quantizer
void train_q1 (size_t n, const float *x, bool verbose, MetricType metric_type)
 Trains the quantizer and calls train_residual to train sub-quantizers.
 
 Level1Quantizer (Index *quantizer, size_t nlist)
 

Public Attributes

ProductQuantizer refine_pq
 3rd level quantizer
 
std::vector< uint8_t > refine_codes
 corresponding codes
 
float k_factor
 factor between k requested in search and the k requested from the IVFPQ
 
- Public Attributes inherited from faiss::IndexIVFPQ
bool by_residual
 Encode residual or plain vector?
 
ProductQuantizer pq
 produces the codes
 
bool do_polysemous_training
 reorder PQ centroids after training?
 
PolysemousTrainingpolysemous_training
 if NULL, use default
 
size_t scan_table_threshold
 use table computation or on-the-fly?
 
int polysemous_ht
 Hamming thresh for polysemous filtering.
 
int use_precomputed_table
 if by_residual, build precompute tables More...
 
std::vector< float > precomputed_table
 
- Public Attributes inherited from faiss::IndexIVF
InvertedListsinvlists
 Acess to the actual data.
 
bool own_invlists
 
size_t code_size
 code size per vector in bytes
 
size_t nprobe
 number of probes at query time
 
size_t max_codes
 max nb of codes to visit to do a query
 
int parallel_mode
 
bool maintain_direct_map
 map for direct access to the elements. Enables reconstruct().
 
std::vector< idx_tdirect_map
 
- Public Attributes inherited from faiss::Index
int d
 vector dimension
 
idx_t ntotal
 total nb of indexed vectors
 
bool verbose
 verbosity level
 
bool is_trained
 set if the Index does not require training, or if training is done already
 
MetricType metric_type
 type of metric this index uses for search
 
- Public Attributes inherited from faiss::Level1Quantizer
Indexquantizer
 quantizer that maps vectors to inverted lists
 
size_t nlist
 number of possible key values
 
char quantizer_trains_alone
 
bool own_fields
 whether object owns the quantizer
 
ClusteringParameters cp
 to override default clustering params
 
Indexclustering_index
 to override index used during clustering
 

Additional Inherited Members

- Public Types inherited from faiss::Index
using idx_t = long
 all indices are this type
 
using component_t = float
 
using distance_t = float
 
- Static Public Attributes inherited from faiss::IndexIVFPQ
static size_t precomputed_table_max_bytes = ((size_t)1) << 31
 2G by default, accommodates tables up to PQ32 w/ 65536 centroids
 

Detailed Description

Index with an additional level of PQ refinement

Definition at line 155 of file IndexIVFPQ.h.

Member Function Documentation

void faiss::IndexIVFPQR::merge_from ( IndexIVF other,
idx_t  add_id 
)
overridevirtual

moves the entries from another dataset to self. On output, other is empty. add_id is added to all moved ids (for sequential ids, this would be this->ntotal

Reimplemented from faiss::IndexIVF.

Definition at line 1353 of file IndexIVFPQ.cpp.

void faiss::IndexIVFPQR::reconstruct_from_offset ( long  list_no,
long  offset,
float *  recons 
) const
overridevirtual

Reconstruct a vector given the location in terms of (inv list index + inv list offset) instead of the id.

Useful for reconstructing when the direct_map is not maintained and the inv list offset is computed by search_preassigned() with store_pairs set.

Reimplemented from faiss::IndexIVFPQ.

Definition at line 1338 of file IndexIVFPQ.cpp.

void faiss::IndexIVFPQR::search_preassigned ( idx_t  n,
const float *  x,
idx_t  k,
const idx_t assign,
const float *  centroid_dis,
float *  distances,
idx_t labels,
bool  store_pairs,
const IVFSearchParameters params = nullptr 
) const
overridevirtual

search a set of vectors, that are pre-quantized by the IVF quantizer. Fill in the corresponding heaps with the query results. The default implementation uses InvertedListScanners to do the search.

Parameters
nnb of vectors to query
xquery vectors, size nx * d
assigncoarse quantization indices, size nx * nprobe
centroid_disdistances to coarse centroids, size nx * nprobe
distanceoutput distances, size n * k
labelsoutput labels, size n * k
store_pairsstore inv list index + inv list offset instead in upper/lower 32 bit of result, instead of ids (used for reranking).
paramsused to override the object's search parameters

Reimplemented from faiss::IndexIVF.

Definition at line 1250 of file IndexIVFPQ.cpp.


The documentation for this struct was generated from the following files: