真实面经题目 · 原创解析

RAG rerank 后 TopK 与上下文长度预算如何选择,过短或过长时怎么处理?

这题考的是 rerank 之后的证据选择策略:TopK 不是固定返回几个 chunk,而是在相关性、证据覆盖、去重多样性、父子扩展、token 预算、模型长上下文能力、延迟成本和拒答策略之间做动态取舍。

出现于:快手 · 后端开发

60 秒回答模板

我会把 rerank 后返回几个块理解成上下文组装问题,而不是一个固定 K 的经验值。召回和 rerank 之后,系统拿到的是一批带相关性分数、来源、长度、位置和证据类型的候选。接下来要先过滤掉低于阈值或与第一名差距过大的候选,再做同文档去重、相邻 chunk 合并、父子索引回填和多来源多样性控制。TopK 可以有固定上限,例如最多 5 到 8 个证据包,但真正放入 prompt 的数量应由 token 预算决定:短证据可以多放几个,长证据要裁剪为命中窗口、父摘要或关键段落;高分证据足够回答时不必继续堆上下文,多跳问题则需要保证每个子问题都有证据覆盖。上下文过长时,优先删重复、删低分、删只提供背景但不支撑结论的内容,再做证据压缩或二次 rerank;上下文不够或证据不足时,应扩大召回、调整 query、补相邻块、回填父节点,仍不足就让模型说明证据不足,而不是编答案。最后用答案忠实度、引用准确率、无依据回答率、token 成本、延迟和用户采纳来评估 TopK 策略。

考点 动态 K
难度 真实面经题
回答目标 让候选人能把 rerank 后 TopK 选择讲成证据预算管理:基于分数阈值、覆盖、多样性、去重合并、父子扩展、过长裁剪、不足拒答和最终答案指标来动态选择上下文。

深入解析

01

TopK 是预算策略不是常数

面试里常有人回答 rerank 后返回 3 个或 5 个 chunk,但生产系统更关心的是这些 chunk 是否能覆盖问题、是否重复、是否超出上下文预算。固定 K 可以作为上限或兜底参数,但最终选择应由 token 长度、分数分布、问题复杂度和证据覆盖决定。

02

先看 rerank 分数和阈值

rerank 输出通常包含相关性分数或排序名次。可以设置最低分阈值、与第一名的分差阈值、相邻候选的 margin,过滤明显不相关片段。若第一名分数也低,说明证据可能不足,应触发扩大召回、改写 query 或拒答,而不是强行取固定 K。

03

去重和合并优先于截断

上下文超预算时,第一步不是粗暴截断尾部,而是按 documentId、parentId、chunk hash 和语义相似度去重。同一文档的相邻 chunk 可以合并成一个证据窗口,同一父节点下多个命中可以回填成父级证据包。这样既减少重复 token,也保留更完整的语义边界。

04

证据覆盖比单点高分更重要

有些问题只需要一个定义,高分第一条就够;有些问题需要原因、步骤、限制条件或多个实体对比,只取最高分 chunk 会丢信息。TopK 选择要看问题是否多跳、是否有多个子问题、是否需要不同来源交叉验证,以及候选集合是否覆盖所有关键槽位。

05

用多样性控制避免同质证据

如果 top 结果都来自同一章节或表达同一个事实,继续放入只会浪费 token。可以用 MMR、多来源约束、章节覆盖、实体覆盖或父节点去重来提升多样性。但多样性不能牺牲相关性,低相关的不同来源不应为了凑数进入上下文。

06

父子和相邻扩展要受预算约束

rerank 命中短 chunk 后,常需要补父标题、相邻段落或完整步骤。但扩展要按预算进行:先补标题路径和必要前后文,再补父摘要或完整父章节。对表格、代码和流程步骤要尽量保持完整边界;对长背景段落可以只保留结论和关键限制。

07

上下文过长先裁低价值内容

过长时的处理顺序应是:删重复内容,删低分候选,删只提供背景的段落,压缩冗长证据,保留标题路径和关键原文,最后才考虑减少证据数量。不能简单按排序截断到窗口上限,否则可能把后面的限制条件、反例或关键表格截掉。

08

上下文不足要允许拒答

如果 rerank 后候选很少、分数低或证据不覆盖问题,不能让模型自由补全。系统可以扩大召回 K、改写查询、拆子问题、多路召回、回填相邻块;仍不足时应明确证据不足,要求用户补充信息或返回无法确定。拒答是 RAG 质量控制的一部分。

09

上下文排序影响模型使用

放入 prompt 的顺序也很关键。可以把最高置信证据、问题直接相关证据和约束性证据放在更醒目的位置,按来源或子问题分组,并给每段证据编号。这样便于模型引用证据,也降低长上下文中间部分被忽略的风险。

10

评估要连到最终答案

TopK 策略不能只用 rerank 分数评估。应看答案忠实度、引用准确率、无依据回答率、证据覆盖率、上下文冗余率、平均 token 消耗、延迟和成本。一个策略如果多放证据但让模型更容易冲突或超时,整体效果可能更差。

易错点

  • 把答案固定成 rerank 后返回 3 个或 5 个,不讨论 token 预算、问题复杂度和证据覆盖。
  • 只按分数排序截断,不做同文档去重、相邻合并和父子回填。
  • 上下文过长时直接砍尾部,导致限制条件、反例或关键步骤被删除。
  • 上下文不足时让模型继续生成,没有扩大召回、改写查询或拒答机制。
  • 把多样性理解成随便多放几个来源,忽略候选与问题的真实相关性。
  • 证据压缩只保留自然语言摘要,丢失数字、否定条件、引用位置和原文依据。
  • 只看 rerank 分数,不评估最终答案忠实度、引用准确率和无依据回答率。
  • 认为长上下文模型可以替代检索选择,忽略噪声、冲突、成本和延迟问题。

面试官追问

rerank 后固定返回 5 个 chunk 可以吗?

可以作为初始上限,但不应作为最终策略。若 2 个证据已经完整回答问题,继续放 5 个会增加噪声;若问题需要多跳推理,5 个又可能不够。更合理的是固定最大候选数,再按分数、覆盖和 token 预算动态选择。

上下文超长时能不能直接截断最后几个 chunk?

不建议。排序靠后的 chunk 可能包含限制条件、反例或多跳问题的另一个关键证据。应先去重、合并相邻块、删除低价值背景、压缩长段落,再由 rerank 或覆盖规则决定删哪些证据。

如何判断证据不足?

可以看最高 rerank 分、候选数量、关键实体是否覆盖、子问题是否都有证据、证据之间是否冲突,以及模型能否引用到直接支持结论的片段。若这些都不满足,就应补召回或拒答。

MMR 在这里有什么作用?

MMR 用来在相关性和多样性之间取平衡,避免 top 结果全是同一事实的重复表述。它适合多来源、多章节和多要点问题,但参数要谨慎,不能为了多样性引入低相关内容。

证据压缩会不会损失事实?

会有风险,所以压缩应保留原文关键句、数字、条件、否定词、引用编号和来源位置。对高风险问题尽量少做抽象摘要,优先用裁剪窗口和结构化摘取,而不是让模型自由总结后再回答。

长上下文模型是不是就不需要 TopK 控制?

仍然需要。长窗口降低了硬性长度限制,但无关和重复证据会增加成本、延迟和冲突,还可能让模型忽略关键片段。TopK 控制的目标不只是塞得下,而是让上下文更干净、更可用。