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

#include <IndexIVFFlat.h>

Inheritance diagram for faiss::IndexIVFFlat:
faiss::IndexIVF faiss::Index faiss::Level1Quantizer faiss::IndexIVFFlatDedup

Public Member Functions

 IndexIVFFlat (Index *quantizer, size_t d, size_t nlist_, MetricType=METRIC_L2)
 
virtual void add_core (idx_t n, const float *x, const long *xids, const long *precomputed_idx)
 same as add_with_ids, with precomputed coarse quantizer
 
void add_with_ids (idx_t n, const float *x, const long *xids) override
 implemented for all IndexIVF* classes
 
void encode_vectors (idx_t n, const float *x, const idx_t *list_nos, uint8_t *codes) const override
 
InvertedListScannerget_InvertedListScanner (bool store_pairs) const override
 get a scanner for this index (store_pairs means ignore labels)
 
void range_search (idx_t n, const float *x, float radius, RangeSearchResult *result) const override
 
virtual void update_vectors (int nv, idx_t *idx, const float *v)
 
void reconstruct_from_offset (long list_no, long offset, float *recons) const override
 
- 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 reset () override
 removes all elements from the database.
 
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.
 
virtual void train_residual (idx_t n, const float *x)
 
virtual 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
 
virtual void search (idx_t n, const float *x, idx_t k, float *distances, idx_t *labels) const override
 
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
 
long remove_ids (const IDSelector &sel) override
 Dataset manipulation functions.
 
void check_compatible_for_merge (const IndexIVF &other) const
 
virtual void merge_from (IndexIVF &other, idx_t add_id)
 
virtual void copy_subset_to (IndexIVF &other, int subset_type, long a1, long a2) const
 
size_t get_list_size (size_t list_no) const
 
void make_direct_map (bool new_maintain_direct_map=true)
 
double imbalance_factor () const
 1= perfectly balanced, >1: imbalanced
 
void print_stats () const
 display some stats about the inverted lists
 
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)
 

Additional Inherited Members

- Public Types inherited from faiss::Index
typedef long idx_t
 all indices are this type
 
- 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
 
bool maintain_direct_map
 map for direct access to the elements. Enables reconstruct().
 
std::vector< long > direct_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
 

Detailed Description

Inverted file with stored vectors. Here the inverted file pre-selects the vectors to be searched, but they are not otherwise encoded, the code array just contains the raw float entries.

Definition at line 25 of file IndexIVFFlat.h.

Member Function Documentation

void faiss::IndexIVFFlat::encode_vectors ( idx_t  n,
const float *  x,
const idx_t list_nos,
uint8_t *  codes 
) const
overridevirtual

Encodes a set of vectors as they would appear in the inverted lists

Parameters
list_nosinverted list ids as returned by the quantizer (size n). -1s are ignored.
codesoutput codes, size n * code_size

Implements faiss::IndexIVF.

Definition at line 83 of file IndexIVFFlat.cpp.

void faiss::IndexIVFFlat::range_search ( idx_t  n,
const float *  x,
float  radius,
RangeSearchResult result 
) const
overridevirtual

query n vectors of dimension d to the index.

return all vectors with distance < radius. Note that many indexes do not implement the range_search (only the k-NN search is mandatory).

Parameters
xinput vectors to search, size n * d
radiussearch radius
resultresult table

Reimplemented from faiss::Index.

Reimplemented in faiss::IndexIVFFlatDedup.

Definition at line 171 of file IndexIVFFlat.cpp.

void faiss::IndexIVFFlat::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::IndexIVF.

Reimplemented in faiss::IndexIVFFlatDedup.

Definition at line 259 of file IndexIVFFlat.cpp.

void faiss::IndexIVFFlat::update_vectors ( int  nv,
idx_t idx,
const float *  v 
)
virtual

Update a subset of vectors.

The index must have a direct_map

Parameters
nvnb of vectors to update
idxvector indices to update, size nv
vvectors of new values, size nv*d

Reimplemented in faiss::IndexIVFFlatDedup.

Definition at line 223 of file IndexIVFFlat.cpp.


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