第四篇:HNSW 参数调优 —— efSearch 从默认 50 降到 32 的完整消融实验

默认参数是给"通用场景"的,你的场景需要自己的数据说话。

为什么要在 Milvus 上跑,不能用 Faiss 结论?

Faiss HNSW 和 Milvus HNSW有本质差异,以下两点是 Milvus 特有、Faiss 不存在的:

  • Milvus Segment 架构:N 个 Segment 各搜各的 → 归并排序,efSearch 增大时延迟斜率更陡
  • Milvus 混合检索:Dense + Sparse BM25 并行,Sparse 侧带入候选,改变了 Dense 侧 efSearch 的边际收益

实测验证了这一点:efSearch=8/16 出现"高召回+高延迟"反常模式(7ms),Milvus 特有,Faiss 完全不会出现。


实验设计与完整数据

5049 文档,50 条 query × 10 repeats:

efSearch Recall@5 Recall@10 p50 p99
8 0.996 0.996 7.0ms 12.7ms
16 0.996 0.996 6.4ms 11.8ms
24 0.968 0.958 1.43ms 2.74ms
32 0.984 0.970 1.41ms 2.58ms
50 0.984 0.980 1.43ms 2.12ms
128 0.996 0.994 1.52ms 2.81ms

四条核心结论

  1. 拐点识别:efSearch=24 是 Recall 首次显著下降点
  2. 最优值:efSearch=32------比默认 50 略优,Recall 持平
  3. 代码建议:efSearch = max(32, top_k*2)
  4. Milvus 特有发现:低 efSearch 反常模式侧面验证必须在实际环境做消融

HNSW 内存增长模型
#mermaid-svg-hUL64kXjMY24ttwN{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hUL64kXjMY24ttwN .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hUL64kXjMY24ttwN .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hUL64kXjMY24ttwN .error-icon{fill:#552222;}#mermaid-svg-hUL64kXjMY24ttwN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hUL64kXjMY24ttwN .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hUL64kXjMY24ttwN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hUL64kXjMY24ttwN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hUL64kXjMY24ttwN .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hUL64kXjMY24ttwN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hUL64kXjMY24ttwN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hUL64kXjMY24ttwN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hUL64kXjMY24ttwN .marker.cross{stroke:#333333;}#mermaid-svg-hUL64kXjMY24ttwN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hUL64kXjMY24ttwN p{margin:0;}#mermaid-svg-hUL64kXjMY24ttwN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} HNSW 索引内存占用 vs 向量规模 10万50万100万500万 242220181614121086420 内存 (GB)

相关推荐
阳明山水1 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
Dawson Zhu1 小时前
大语言模型的本质:从条件概率预测到能力涌现的技术剖析
人工智能·语言模型·架构·aigc·agi
deepseek231 小时前
GPT-6 Astra 发布拆解:Computer Use 产品化时刻、CoT 监控失守与 AGI 契约的终结
大模型·openai·ai agent
数字孪生视频孪生3 小时前
空间智能技术|跨镜轨迹全域可溯,无感定位无扰赋能落地
大数据·运维·人工智能·重构·架构
MetaLite3 小时前
微服务认证选型-SpringSecurity-SaToken与自研方案
微服务·云原生·架构
秋名RG3 小时前
2026/6/15 系统故障复盘与整改方案
java·架构
资深技术分享员3 小时前
技术赋能降本增效:Geejing WebBuilder 企业级低代码平台的专业化研发与运维便利价值解析
运维·低代码·架构
ting94520003 小时前
Hey Noah 主动式 AI 执行助理全栈技术深度剖析 —— 从被动对话 LLM 到 FSD 级自主 Agent 工程实现
人工智能·架构
超级架构师3 小时前
让业务架构可执行:ORCHADYN 为什么把规划建模为“编译”
人工智能·架构·ai编程·哲学
范桂飓3 小时前
AWS Kiro Agent 架构解析
架构·云计算·aws