From 7c8c909f8027d106e14497575812b67e1d7df66c Mon Sep 17 00:00:00 2001 From: xiaofan-luan Date: Tue, 11 Apr 2023 18:58:47 -0700 Subject: [PATCH] Change EF Limit to be larger if topk is tuned Signed-off-by: xiaofan-luan --- knowhere/index/vector_index/ConfAdapter.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/knowhere/index/vector_index/ConfAdapter.cpp b/knowhere/index/vector_index/ConfAdapter.cpp index 676725678..59c90b87b 100644 --- a/knowhere/index/vector_index/ConfAdapter.cpp +++ b/knowhere/index/vector_index/ConfAdapter.cpp @@ -235,7 +235,14 @@ HNSWConfAdapter::CheckTrain(Config& cfg, const IndexMode mode) { bool HNSWConfAdapter::CheckSearch(Config& cfg, const IndexType type, const IndexMode mode) { - CheckIntegerRange(cfg, indexparam::EF, GetMetaTopk(cfg), HNSW_MAX_EF); + auto topk = GetMetaTopk(cfg); + if (topk < HNSW_MAX_EF) { + // normal case if topk is not large + CheckIntegerRange(cfg, indexparam::EF, GetMetaTopk(cfg), HNSW_MAX_EF); + } else { + // if topk is large + CheckIntegerRange(cfg, indexparam::EF, topk, topk * 2); + } return ConfAdapter::CheckSearch(cfg, type, mode); }