13 #ifndef FAISS_INDEX_PQ_H
14 #define FAISS_INDEX_PQ_H
21 #include "ProductQuantizer.h"
22 #include "PolysemousTraining.h"
50 virtual void set_typename ()
override;
52 virtual void train (
idx_t n,
const float *x)
override;
54 virtual void add (
idx_t n,
const float *x)
override;
58 float *distances,
idx_t *labels)
const override;
60 virtual void reset()
override;
96 void search_core_polysemous (
idx_t n,
const float *x,
idx_t k,
97 float *distances,
idx_t *labels)
const;
104 idx_t nb,
const float *xb,
105 long *dist_histogram);
125 size_t n_hamming_pass;
144 virtual void set_typename ();
150 float *distances,
idx_t *labels)
const;
153 virtual void add (
idx_t n,
const float *x);
154 virtual void reset ();
std::vector< uint8_t > codes
Codes. Size ntotal * pq.code_size.
Hamming distance on codes.
bool do_polysemous_training
false = standard PQ
virtual void train(idx_t n, const float *x) override
void hamming_distance_histogram(idx_t n, const float *x, idx_t nb, const float *xb, long *dist_histogram)
Search_type_t
how to perform the search in search_core
Filter on generalized Hamming.
virtual void reset()
removes all elements from the database.
long idx_t
all indices are this type
virtual void train(idx_t n, const float *x)
virtual void add(idx_t n, const float *x)
add and reset will crash at runtime
ProductQuantizer pq
The product quantizer used to encode the vectors.
virtual void add(idx_t n, const float *x) override
optimizes the order of indices in a ProductQuantizer
void hamming_distance_table(idx_t n, const float *x, int32_t *dis) const
virtual void search(idx_t n, const float *x, idx_t k, float *distances, idx_t *labels) const
virtual void reconstruct(idx_t key, float *recons) const override
virtual void reconstruct_n(idx_t i0, idx_t ni, float *recons) const override
asymmetric product quantizer (default)
HE filter (using ht) + PQ combination.
virtual void reset() override
removes all elements from the database.
virtual void reconstruct(idx_t key, float *recons) const
virtual void search(idx_t n, const float *x, idx_t k, float *distances, idx_t *labels) const override
symmetric product quantizer (SDC)
int polysemous_ht
Hamming threshold used for polysemy.
PolysemousTraining polysemous_training
parameters used for the polysemous training
MetricType
Some algorithms support both an inner product vetsion and a L2 search version.