类 faiss::IndexReplicasTemplate
-
template<typename IndexT>
class IndexReplicasTemplate : public faiss::ThreadedIndex<IndexT> 获取单独的 faiss::Index 实例,并拆分查询以发送到每个 Index 实例,并在完成后将结果连接在一起。每个索引都由单独的 CPU 线程管理。
公共类型
公共函数
-
explicit IndexReplicasTemplate(bool threaded = true)
所有子索引必须共享的维度将是添加的第一个子索引的维度
- 参数:
threaded – 我们是否为每个子索引使用一个线程,或者按顺序查询?
-
explicit IndexReplicasTemplate(idx_t d, bool threaded = true)
- 参数:
d – 所有子索引必须共享的维度
threaded – 我们是否为每个子索引使用一个线程,或者按顺序查询?
-
explicit IndexReplicasTemplate(int d, bool threaded = true)
int 版本,因为 int 作为维度的隐式 bool 转换存在歧义
-
inline void add_replica(IndexT *index)
addIndex() 的别名
-
inline void remove_replica(IndexT *index)
removeIndex() 的别名
-
void train(idx_t n, const component_t *x) override
faiss::Index API 所有索引接收相同的调用
-
void add(idx_t n, const component_t *x) override
faiss::Index API 所有索引接收相同的调用
-
void search(idx_t n, const component_t *x, idx_t k, distance_t *distances, idx_t *labels, const SearchParameters *params = nullptr) const override
faiss::Index API 查询被分割成每个子索引的切片,分割方式为 ceil(n / #indices) (对于我们的子索引)。
-
void reconstruct(idx_t, component_t *v) const override
从第一个索引重建。
-
void syncWithSubIndexes()
将顶层索引 (IndexShards) 与子索引中的数据同步。
-
virtual void addIndex(IndexT *index)
覆盖由我们自己管理的索引。警告:一旦添加了索引,从任何其他线程(而不是管理它的线程)访问它都是不安全的,直到我们关闭。请改用 runOnIndex 在其上执行工作。
-
void reset() override
faiss::Index API 所有索引接收相同的调用
-
inline int count() const
返回子索引的数量。
公共成员
-
bool own_indices = false
我们是否负责删除包含的索引。
受保护的函数
-
explicit IndexReplicasTemplate(bool threaded = true)