首页/AI/RAG 与向量库速查/top-k 选取与重排配套
Embedding 与检索50 条

top-k 选取与重排配套

top-k 要分成两级看:检索阶段候选池(常取 20~100)供重排挑选,重排或截断后的上下文条数(常取 3~10)再进提示词;候选池过小会让重排没得选。

RAG 与向量库速查AI更新于 2026-10-13

top-k 要分两级看

top-k 在管线里其实有两个:检索阶段的候选池,通常取 20 到 100 条,供重排挑选;重排或截断后真正进入提示词的上下文条数,通常取 3 到 10 条。候选池过小会让重排没有选择余地,上下文条数过大则稀释信息并抬高成本,两者需要分别调优。

基本信息

候选池(retrieve k)20 到 100 条,决定重排的上限
上下文条数(top_n)3 到 10 条,决定生成输入的长度
调参依据召回命中位置分布与答案完整性
联动关系候选池与最终条数要一起调,不能只动一个

两级 top-k 配置示例

两级 top-k 配置示例
RETRIEVE_K = 50        # 向量/混合检索候选池
RERANK_N  = 8          # 重排后进入上下文的片段数

candidates = vector_store.search(q_vec, top_k=RETRIEVE_K)
top_docs = rerank(q, candidates, top_n=RERANK_N)
context = build_context(top_docs)

使用要点

  • 先统计正确答案在召回结果里的排名分布,据此定候选池深度
  • 候选池覆盖 90% 以上正确答案的排名即为合理下限
  • 加入重排后再逐步压缩上下文条数,观察答案完整性变化
  • 按问题类型分别调:多跳与概括类问题往往需要更深的候选池
  • 把两级参数与评测结果一起记录,方便回溯是哪次调整带来的变化

两级参数对照

参数调大的收益调大的代价
候选池正确答案进入重排的机会变大粗排与重排耗时上升
上下文条数信息更全、跨段问题更易答输入变长、成本上升、中间内容被忽略

常见问题

  • 检索只取 3 条再接重排:重排只是在三条里排序,收益有限
  • 只加候选池不看上下文预算:生成端输入超限被截断
  • 所有问题用同一套参数:简单问题浪费预算,复杂问题召回不足
  • 改参数后未重跑评测:无法判断是变好还是变差
升级到重排管线时,候选池要单独重新调;候选池与最终条数同步放大,往往就是上下文超长与成本上升的来源。

易错点

  • 检索 top-k 取 3 再接重排,重排只能三选一排序,收益有限
  • 只加候选池不看上下文预算,生成端因超长被截断或成本上升
  • 把候选池与上下文条数当成同一个参数调,两侧效果互相干扰
  • 参数调整没有评测对照,长期在无效区间反复微调

数据来源与参考

  • Cohere 官方文档(Rerank top_n)
  • LangChain 官方文档(检索器 top_k 与重排)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌