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

#include <IndexIVF.h>

Inheritance diagram for faiss::IndexIVF:
faiss::Index faiss::IndexIVFFlat faiss::IndexIVFPQ faiss::IndexIVFPQCompact faiss::IndexIVFPQR

Public Member Functions

 IndexIVF (Index *quantizer, size_t d, size_t nlist, MetricType metric=METRIC_INNER_PRODUCT)
 
virtual void reset () override
 removes all elements from the database.
 
virtual void train (idx_t n, const float *x) override
 Trains the quantizer and calls train_residual to train sub-quantizers.
 
virtual void add (idx_t n, const float *x) override
 Quantizes x and calls add_with_key.
 
virtual void train_residual (idx_t n, const float *x)
 
virtual void merge_from (IndexIVF &other, idx_t add_id)
 
virtual void merge_from_residuals (IndexIVF &other)=0
 
void make_direct_map ()
 intialize a direct map
 
double imbalance_factor () const
 1= perfectly balanced, >1: imbalanced
 
void print_stats () const
 display some stats about the inverted lists
 
- Public Member Functions inherited from faiss::Index
 Index (idx_t d=0, MetricType metric=METRIC_INNER_PRODUCT)
 
virtual void add_with_ids (idx_t n, const float *x, const long *xids)
 
virtual void search (idx_t n, const float *x, idx_t k, float *distances, idx_t *labels) const =0
 
virtual void range_search (idx_t n, const float *x, float radius, RangeSearchResult *result) const
 
void assign (idx_t n, const float *x, idx_t *labels, idx_t k=1)
 
virtual long remove_ids (const IDSelector &sel)
 
virtual void reconstruct (idx_t key, float *recons) const
 
virtual void reconstruct_n (idx_t i0, idx_t ni, float *recons) const
 
void compute_residual (const float *x, float *residual, idx_t key) const
 
void display () const
 
virtual std::string get_typename () const
 
virtual void set_typename ()=0
 

Public Attributes

size_t nlist
 number of possible key values
 
size_t nprobe
 number of probes at query time
 
Indexquantizer
 quantizer that maps vectors to inverted lists
 
bool quantizer_trains_alone
 just pass over the trainset to quantizer
 
bool own_fields
 whether object owns the quantizer
 
ClusteringParameters cp
 to override default clustering params
 
std::vector< std::vector< long > > ids
 Inverted lists for indexes.
 
bool maintain_direct_map
 map for direct access to the elements. Enables reconstruct().
 
std::vector< long > direct_map
 
- Public Attributes inherited from faiss::Index
std::string index_typename
 
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
 

Additional Inherited Members

- Public Types inherited from faiss::Index
typedef long idx_t
 all indices are this type
 

Detailed Description

Index based on a inverted file (IVF)

In the inverted file, the quantizer (an Index instance) provides a quantization index for each vector to be added. The quantization index maps to a list (aka inverted list or posting list), where the id of the vector is then stored.

At search time, the vector to be searched is also quantized, and only the list corresponding to the quantization index is searched. This speeds up the search by making it non-exhaustive. This can be relaxed using multi-probe search: a few (nprobe) quantization indices are selected and several inverted lists are visited.

Sub-classes implement a post-filtering of the index that refines the distance estimation from the query to databse vectors.

Definition at line 46 of file IndexIVF.h.

Constructor & Destructor Documentation

faiss::IndexIVF::IndexIVF ( Index quantizer,
size_t  d,
size_t  nlist,
MetricType  metric = METRIC_INNER_PRODUCT 
)

The Inverted file takes a quantizer (an Index) on input, which implements the function mapping a vector to a list identifier. The pointer is borrowed: the quantizer should not be deleted while the IndexIVF is in use.

Definition at line 32 of file IndexIVF.cpp.

Member Function Documentation

void faiss::IndexIVF::merge_from ( IndexIVF other,
idx_t  add_id 
)
virtual

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

Definition at line 163 of file IndexIVF.cpp.

virtual void faiss::IndexIVF::merge_from_residuals ( IndexIVF other)
pure virtual

implemented by sub-classes

Implemented in faiss::IndexIVFPQR, faiss::IndexIVFFlat, and faiss::IndexIVFPQ.

void faiss::IndexIVF::train_residual ( idx_t  n,
const float *  x 
)
virtual

Sub-classes that encode the residuals can train their encoders here does nothing by default

Reimplemented in faiss::IndexIVFPQR, and faiss::IndexIVFPQ.

Definition at line 125 of file IndexIVF.cpp.


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