Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions src/core/algorithm/hnsw/hnsw_algorithm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -106,28 +106,6 @@ int HnswAlgorithm::search(HnswContext *ctx) const {
return 0;
}

int HnswAlgorithm::fast_search(HnswContext *ctx) const {
auto max_level = entity_.cur_max_level();
auto entry_point = entity_.entry_point();

dist_t dist = ctx->dist_calculator().dist(entry_point);
for (level_t cur_level = max_level; cur_level >= 1; --cur_level) {
select_entry_point(cur_level, &entry_point, &dist, ctx);
}

auto &topk_heap = ctx->topk_heap();
topk_heap.clear();

search_neighbors(0, &entry_point, &dist, topk_heap, ctx);

if (ctx->group_by_search()) {
expand_neighbors_by_group(topk_heap, ctx);
}

return 0;
}


//! select_entry_point on hnsw level, ef = 1
void HnswAlgorithm::select_entry_point(level_t level, node_id_t *entry_point,
dist_t *dist, HnswContext *ctx) const {
Expand Down
6 changes: 1 addition & 5 deletions src/core/algorithm/hnsw/hnsw_algorithm.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,10 @@ class HnswAlgorithm {
//! return 0 on success, or errCode in failure
int add_node(node_id_t id, level_t level, HnswContext *ctx);

//! do knn search in graph with lock
//! do knn search in graph
//! return 0 on success, or errCode in failure. results saved in ctx
int search(HnswContext *ctx) const;

//! do knn search in graph without lock
//! return 0 on success, or errCode in failure. results saved in ctx
int fast_search(HnswContext *ctx) const;

//! Initiate HnswAlgorithm
int init() {
level_probas_.clear();
Expand Down
2 changes: 1 addition & 1 deletion src/core/algorithm/hnsw/hnsw_searcher.cc
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ int HnswSearcher::search_impl(const void *query, const IndexQueryMeta &qmeta,
ctx->resize_results(count);
for (size_t q = 0; q < count; ++q) {
ctx->reset_query(query);
int ret = alg_->fast_search(ctx);
int ret = alg_->search(ctx);
if (ailego_unlikely(ret != 0)) {
LOG_ERROR("Hnsw searcher fast search failed");
return ret;
Expand Down
22 changes: 0 additions & 22 deletions src/core/algorithm/hnsw_sparse/hnsw_sparse_algorithm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -108,28 +108,6 @@ int HnswSparseAlgorithm::search(HnswSparseContext *ctx) const {
return 0;
}

int HnswSparseAlgorithm::fast_search(HnswSparseContext *ctx) const {
auto max_level = entity_.cur_max_level();
auto entry_point = entity_.entry_point();

dist_t dist = ctx->dist_calculator().dist(entry_point);
for (level_t cur_level = max_level; cur_level >= 1; --cur_level) {
select_entry_point(cur_level, &entry_point, &dist, ctx);
}

auto &topk_heap = ctx->topk_heap();
topk_heap.clear();

search_neighbors(0, &entry_point, &dist, topk_heap, ctx);

if (ctx->group_by_search()) {
expand_neighbors_by_group(topk_heap, ctx);
}

return 0;
}


//! select_entry_point on hnsw level, ef = 1
void HnswSparseAlgorithm::select_entry_point(level_t level,
node_id_t *entry_point,
Expand Down
6 changes: 1 addition & 5 deletions src/core/algorithm/hnsw_sparse/hnsw_sparse_algorithm.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,10 @@ class HnswSparseAlgorithm {
//! return 0 on success, or errCode in failure
int add_node(node_id_t id, level_t level, HnswSparseContext *ctx);

//! do knn search in graph with lock
//! do knn search in graph
//! return 0 on success, or errCode in failure. results saved in ctx
int search(HnswSparseContext *ctx) const;

//! do knn search in graph without lock
//! return 0 on success, or errCode in failure. results saved in ctx
int fast_search(HnswSparseContext *ctx) const;

//! Initiate HnswAlgorithm
int init() {
level_probas_.clear();
Expand Down
2 changes: 1 addition & 1 deletion src/core/algorithm/hnsw_sparse/hnsw_sparse_searcher.cc
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ int HnswSparseSearcher::search_impl(const uint32_t *sparse_count,
ctx->reset_query(sparse_query_buffer.data());
}

int ret = alg_->fast_search(ctx);
int ret = alg_->search(ctx);
if (ailego_unlikely(ret != 0)) {
LOG_ERROR("Hnsw searcher fast search failed");
return ret;
Expand Down