Template Class HnswSearchImpl

Inheritance Relationships

Base Type

Class Documentation

template<typename DistFuncType>
class n2::HnswSearchImpl : public n2::HnswSearch

Public Functions

HnswSearchImpl(std::shared_ptr<const HnswModel> model, size_t data_dim, DistanceKind metric)
void SearchByVector(const std::vector<float> &qvec, size_t k, int ef_search, bool ensure_k, std::vector<int> &result) override
void SearchByVector(const std::vector<float> &qvec, size_t k, int ef_search, bool ensure_k, std::vector<std::pair<int, float>> &result) override
void SearchById(int id, size_t k, int ef_search, bool ensure_k, std::vector<int> &result) override
void SearchById(int id, size_t k, int ef_search, bool ensure_k, std::vector<std::pair<int, float>> &result) override

Protected Functions

template<typename ResultType>
void SearchByVector_(const std::vector<float> &qvec, size_t k, int ef_search, bool ensure_k, ResultType &result)
void CallSearchById_(int cur_node_id, float cur_dist, const float *qraw, size_t k, size_t ef_search, bool ensure_k, std::vector<int> &result)
void CallSearchById_(int cur_node_id, float cur_dist, const float *qraw, size_t k, size_t ef_search, bool ensure_k, std::vector<std::pair<int, float>> &result)
template<typename ResultType>
void SearchById_(int cur_node_id, float cur_dist, const float *qraw, size_t k, size_t ef_search, bool ensure_k, ResultType &result)
template<typename ResultType>
void SearchByIdV1_(int cur_node_id, float cur_dist, const float *qraw, size_t k, size_t ef_search, bool ensure_k, ResultType &result)
template<typename ResultType>
void SearchByIdV2_(int cur_node_id, float cur_dist, const float *qraw, size_t k, size_t ef_search, bool ensure_k, ResultType &result)
bool PrepareEnsureKSearch(int cur_node_id, std::vector<int> &result, IdDistancePairMinHeap &visited_nodes)
bool PrepareEnsureKSearch(int cur_node_id, std::vector<std::pair<int, float>> &result, IdDistancePairMinHeap &visited_nodes)
void MakeSearchResult(size_t k, IdDistancePairMinHeap &candidates, IdDistancePairMinHeap &visited_nodes, std::vector<int> &result)
void MakeSearchResult(size_t k, IdDistancePairMinHeap &candidates, IdDistancePairMinHeap &visited_nodes, std::vector<std::pair<int, float>> &result)

Protected Attributes

std::shared_ptr<const HnswModel> model_
std::unique_ptr<VisitedList> visited_list_
size_t data_dim_
DistanceKind metric_
DistFuncType dist_func_
std::vector<float> normalized_vec_
std::vector<std::pair<int, float>> ensure_k_path_
char *model_higher_level_ = nullptr
char *model_level0_ = nullptr
char *model_level0_node_base_offset_ = nullptr
uint64_t memory_per_node_level0_
uint64_t memory_per_node_higher_level_