You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ElasticSearch K近邻搜索API中num_candidates参数作用解析

Elasticsearch K近邻搜索num_candidates参数解析

针对你的问题,直接给出结论:设置num_candidates=10000时,Elasticsearch不会遍历索引中全部50万条记录,只会从每个分片的候选集中选取最多10000条进行相似度计算,最终返回你指定的top-k(这里是10)个结果。

下面详细解释这个参数的作用逻辑:

  • Elasticsearch的KNN搜索基于近似近邻(ANN)算法,目的是在海量数据场景下平衡搜索速度和结果准确性,num_candidates就是实现这个平衡的核心参数之一。
  • 这个参数是按分片生效的:如果你的索引包含多个分片,每个分片都会独立筛选出num_candidates条与查询向量最相似的记录,然后将所有分片的候选结果汇总到协调节点,再在全局候选集中计算出最相似的k条返回给你。
    举个例子:假设你的50万条记录分布在5个分片上,设置num_candidates=10000后,每个分片会各自选出10000条候选,总共50000条记录会进入最终的全局相似度排序,从中挑出top10返回。
  • 数值大小的影响:num_candidates越大,候选样本池越广,最终结果越接近精确搜索的效果,但同时会增加计算和网络传输的开销,拖慢搜索速度;反之,数值越小,搜索速度越快,但存在漏掉真正最相似记录的风险。通常建议设置num_candidates为k的10~100倍,根据业务对精度和速度的要求调整。

内容的提问来源于stack exchange,提问作者James Parker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:01:35