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

#include <IndexBinary.h>

Inheritance diagram for faiss::IndexBinary:
faiss::gpu::GpuIndexBinaryFlat faiss::IndexBinaryFlat faiss::IndexBinaryFromFloat faiss::IndexBinaryHNSW faiss::IndexBinaryIVF

Public Types

using idx_t = Index::idx_t
 all indices are this type
 
using component_t = uint8_t
 
using distance_t = int32_t
 

Public Member Functions

 IndexBinary (idx_t d=0, MetricType metric=METRIC_L2)
 
virtual void train (idx_t n, const uint8_t *x)
 
virtual void add (idx_t n, const uint8_t *x)=0
 
virtual void add_with_ids (idx_t n, const uint8_t *x, const long *xids)
 
virtual void search (idx_t n, const uint8_t *x, idx_t k, int32_t *distances, idx_t *labels) const =0
 
virtual void range_search (idx_t n, const uint8_t *x, int radius, RangeSearchResult *result) const
 
void assign (idx_t n, const uint8_t *x, idx_t *labels, idx_t k=1)
 
virtual void reset ()=0
 Removes all elements from the database.
 
virtual long remove_ids (const IDSelector &sel)
 
virtual void reconstruct (idx_t key, uint8_t *recons) const
 
virtual void reconstruct_n (idx_t i0, idx_t ni, uint8_t *recons) const
 
virtual void search_and_reconstruct (idx_t n, const uint8_t *x, idx_t k, int32_t *distances, idx_t *labels, uint8_t *recons) const
 
void display () const
 

Public Attributes

int d
 vector dimension
 
int code_size
 number of bytes per vector ( = d / 8 )
 
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
 

Detailed Description

Abstract structure for a binary index.

Supports adding vertices and searching them.

All queries are symmetric because there is no distinction between codes and vectors.

Definition at line 36 of file IndexBinary.h.

Member Function Documentation

virtual void faiss::IndexBinary::add ( idx_t  n,
const uint8_t *  x 
)
pure virtual

Add n vectors of dimension d to the index.

Vectors are implicitly assigned labels ntotal .. ntotal + n - 1

Parameters
xinput matrix, size n * d / 8

Implemented in faiss::IndexBinaryIVF, faiss::gpu::GpuIndexBinaryFlat, faiss::IndexBinaryHNSW, faiss::IndexBinaryFromFloat, and faiss::IndexBinaryFlat.

void faiss::IndexBinary::add_with_ids ( idx_t  n,
const uint8_t *  x,
const long *  xids 
)
virtual

Same as add, but stores xids instead of sequential ids.

The default implementation fails with an assertion, as it is not supported by all indexes.

Parameters
xidsif non-null, ids to store for the vectors (size n)

Reimplemented in faiss::IndexBinaryIVF.

Definition at line 34 of file IndexBinary.cpp.

void faiss::IndexBinary::assign ( idx_t  n,
const uint8_t *  x,
idx_t labels,
idx_t  k = 1 
)

Return the indexes of the k vectors closest to the query x.

This function is identical to search but only returns labels of neighbors.

Parameters
xinput vectors to search, size n * d / 8
labelsoutput labels of the NNs, size n*k

Definition at line 28 of file IndexBinary.cpp.

void faiss::IndexBinary::display ( ) const

Display the actual class name and some more info.

Definition at line 72 of file IndexBinary.cpp.

void faiss::IndexBinary::range_search ( idx_t  n,
const uint8_t *  x,
int  radius,
RangeSearchResult result 
) const
virtual

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 / 8
radiussearch radius
resultresult table

Definition at line 23 of file IndexBinary.cpp.

void faiss::IndexBinary::reconstruct ( idx_t  key,
uint8_t *  recons 
) const
virtual

Reconstruct a stored vector.

This function may not be defined for some indexes.

Parameters
keyid of the vector to reconstruct
reconsreconstucted vector (size d / 8)

Reimplemented in faiss::IndexBinaryIVF, faiss::gpu::GpuIndexBinaryFlat, faiss::IndexBinaryHNSW, and faiss::IndexBinaryFlat.

Definition at line 43 of file IndexBinary.cpp.

void faiss::IndexBinary::reconstruct_n ( idx_t  i0,
idx_t  ni,
uint8_t *  recons 
) const
virtual

Reconstruct vectors i0 to i0 + ni - 1.

This function may not be defined for some indexes.

Parameters
reconsreconstucted vectors (size ni * d / 8)

Reimplemented in faiss::IndexBinaryIVF.

Definition at line 47 of file IndexBinary.cpp.

long faiss::IndexBinary::remove_ids ( const IDSelector sel)
virtual

Removes IDs from the index. Not supported by all indexes.

Reimplemented in faiss::IndexBinaryIVF, and faiss::IndexBinaryFlat.

Definition at line 38 of file IndexBinary.cpp.

virtual void faiss::IndexBinary::search ( idx_t  n,
const uint8_t *  x,
idx_t  k,
int32_t *  distances,
idx_t labels 
) const
pure virtual

Query n vectors of dimension d to the index.

return at most k vectors. If there are not enough results for a query, the result array is padded with -1s.

Parameters
xinput vectors to search, size n * d / 8
labelsoutput labels of the NNs, size n*k
distancesoutput pairwise distances, size n*k

Implemented in faiss::IndexBinaryIVF, faiss::gpu::GpuIndexBinaryFlat, faiss::IndexBinaryHNSW, faiss::IndexBinaryFromFloat, and faiss::IndexBinaryFlat.

void faiss::IndexBinary::search_and_reconstruct ( idx_t  n,
const uint8_t *  x,
idx_t  k,
int32_t *  distances,
idx_t labels,
uint8_t *  recons 
) const
virtual

Similar to search, but also reconstructs the stored vectors (or an approximation in the case of lossy coding) for the search results.

If there are not enough results for a query, the resulting array is padded with -1s.

Parameters
reconsreconstructed vectors size (n, k, d)

Reimplemented in faiss::IndexBinaryIVF.

Definition at line 53 of file IndexBinary.cpp.

void faiss::IndexBinary::train ( idx_t  n,
const uint8_t *  x 
)
virtual

Perform training on a representative set of vectors.

Parameters
nnb of training vectors
xtraining vecors, size n * d / 8

Reimplemented in faiss::IndexBinaryIVF, faiss::IndexBinaryFromFloat, and faiss::IndexBinaryHNSW.

Definition at line 19 of file IndexBinary.cpp.


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