Appearance
10.1.3 什么情况下应该先动 Chunk,什么情况下应该先动 Rerank,什么情况下该动 Prompt?
先给结论:Chunk、Rerank、Prompt 不是三种可以随便互换的优化手段。Chunk 更偏向影响证据怎么被切开和召回,Rerank 更偏向影响候选结果怎么排序和筛选,Prompt 更偏向影响模型如何使用已经给到的证据。先动哪一个,取决于问题卡在哪一层。
很多调优低效,问题不在于“试得不够多”,而在于:
- 一开始就动错杠杆
例如:
- 明明是 chunk 把语义切碎了,却一直在改 Prompt
- 明明是召回结果顺序不稳,却先去改 chunk 大小
- 明明证据都给到了,只是模型没忠实使用,却先去重做检索
所以真正重要的不是“哪个更强”,而是:
- 哪个最符合当前问题的根因
先记住三者分别主要解决什么
Chunk
更主要影响:
- 文档被怎样切开
- 哪些局部信息能作为独立检索单元
- 证据能否完整、连贯地进入候选结果
它更偏底层,会影响召回质量和后续所有环节。
Rerank
更主要影响:
- 候选结果的排序
- 哪些结果最终能进入上下文
- 高相关但初排不稳定的结果能否被拉上来
它更像在“已召回结果”上做第二次筛选。
Prompt
更主要影响:
- 模型怎样理解任务
- 模型怎样使用已有证据
- 模型是否保留限制条件、拒绝无依据外推
它不负责找证据,而负责“怎么基于证据说”。
什么情况下应该先动 Chunk
当你发现问题更像下面这些情况时,优先怀疑 Chunk:
- 正确答案经常被切散到多个块里,单块都不完整
- 召回结果里总是只回来半截信息
- 表格、列表、规则条款一切就断义
- 同类问题在长文档里很难稳定命中关键段落
这些问题说明,检索单元本身设计得不合适。
更具体地说,适合先动 Chunk 的信号通常包括:
- 正确文档能召回,但关键段落表达总是不完整
- 相同问题在不同切块策略下结果差异很大
- 长文档、多层结构文档、FAQ、代码文档共用一套切块后问题很多
这时你更应该先检查:
- 切块粒度是否过大或过小
- overlap 是否合适
- 是否需要结构化切块或语义切块
- 是否需要把检索用块和生成用块拆开
什么情况下应该先动 Rerank
当你发现问题更像下面这些情况时,优先怀疑 Rerank 或结果选择:
- 正确结果其实已经在召回候选里,但排名不稳定
- 候选集里噪声很多,关键结果总被埋没
- 高分结果高度重复,占掉上下文
- 多文档问题里,真正关键的结果排不到前面
这类问题的共同点是:
- 不是“完全没召回”
- 而是“召回到了,但最终没被优先使用”
这时更适合先看:
- 是否需要增加
Reranker top k是否过大或过小- 最终选择逻辑是否只偏向局部相似度高的片段
- 是否需要去重、聚合、相邻块扩展
什么情况下应该先动 Prompt
当你已经确认:
- 正确证据稳定进入最终上下文
- 上下文内容基本完整
- 关键限制条件也已经给到模型
但回答仍然出现下面这些问题时,才更适合优先动 Prompt:
- 模型漏掉已明确给出的条件
- 模型喜欢把证据外推成更绝对的结论
- 资料不足时不愿明确说不知道
- 输出格式混乱,导致关键结论不稳定
这时你要调整的,往往不是“找什么”,而是:
- 怎样要求模型更忠实地用证据
- 怎样减少无依据总结和发挥
- 怎样让回答结构更稳
一个很实用的判断表
如果你想快速建立直觉,可以先按下面这个思路判断:
- 证据经常断裂、不完整:先看
Chunk - 证据已经在候选里,但排序不稳:先看
Rerank - 证据已经在最终上下文里,但回答仍然外推或漏条件:先看
Prompt
三种常见误用
误用一,把 Prompt 当成万能修复器
这会导致:
- 明明是证据没回来,却试图靠话术补救
误用二,把 Chunk 当成通用调参旋钮
有些团队一发现效果不好就改 chunk 大小,但如果问题本质是排序和选择,单改 chunk 往往没法命中根因。
误用三,只加 Rerank,不看候选集质量
Rerank 不能把完全没召回的结果凭空排出来。候选集本身太差时,先加 Rerank 往往收益有限。
一个最小决策示意
python
def choose_optimization_lever(case):
if case["evidence_fragmented_or_incomplete"]:
return "tune_chunking_first"
if case["gold_evidence_in_candidates_but_ranked_low"]:
return "tune_rerank_first"
if case["gold_evidence_in_final_context_but_answer_not_grounded"]:
return "tune_prompt_first"
return "need_more_analysis"这个示意的重点是把三者放回各自最擅长的阶段。
更稳的实践建议
如果你真的准备开始调,不要三者一起上。更稳的顺序通常是:
- 先确认根因主要落在哪一层
- 一次只优先动一类杠杆
- 用第 9 章的评测和错误分桶看目标问题有没有下降
- 再决定是否继续深入这一层,还是转到下一层
这样你后面才知道:
- 是哪根杠杆真的产生了效果
一句话总结
Chunk 主要解决证据怎么被切开和召回,Rerank 主要解决候选结果怎么排序和保留,Prompt 主要解决模型怎么使用已有证据。先动哪一个,必须由根因决定,而不是凭感觉乱试。