Struct faiss::IndexShardsTemplate
-
template<typename IndexT>
struct IndexShardsTemplate : public ThreadedIndex<IndexT> Index that concatenates the results from several sub-indexes
Public Types
-
using component_t = typename IndexT::component_t
-
using distance_t = typename IndexT::distance_t
Public Functions
-
explicit IndexShardsTemplate(bool threaded = false, bool successive_ids = true)
The dimension that all sub-indices must share will be the dimension of the first sub-index added
- Parameters:
threaded – do we use one thread per sub_index or do queries sequentially?
successive_ids – should we shift the returned ids by the size of each sub-index or return them as they are?
-
explicit IndexShardsTemplate(idx_t d, bool threaded = false, bool successive_ids = true)
- Parameters:
threaded – do we use one thread per sub_index or do queries sequentially?
successive_ids – should we shift the returned ids by the size of each sub-index or return them as they are?
-
explicit IndexShardsTemplate(int d, bool threaded = false, bool successive_ids = true)
int version due to the implicit bool conversion ambiguity of int as dimension
-
inline void add_shard(IndexT *index)
Alias for addIndex()
-
inline void remove_shard(IndexT *index)
Alias for removeIndex()
-
void add(idx_t n, const component_t *x) override
supported only for sub-indices that implement add_with_ids
-
void add_with_ids(idx_t n, const component_t *x, const idx_t *xids) override
Cases (successive_ids, xids):
true, non-NULL ERROR: it makes no sense to pass in ids and request them to be shifted
true, NULL OK: but should be called only once (calls add() on sub-indexes).
false, non-NULL OK: will call add_with_ids with passed in xids distributed evenly over shards
false, NULL OK: will call add_with_ids on each sub-index, starting at ntotal
-
void search(idx_t n, const component_t *x, idx_t k, distance_t *distances, idx_t *labels, const SearchParameters *params = nullptr) const override
-
void train(idx_t n, const component_t *x) override
-
void syncWithSubIndexes()
Synchronize the top-level index (IndexShards) with data in the sub-indices
Public Members
-
bool successive_ids
-
using component_t = typename IndexT::component_t