Appearance
8.1 为什么检索结果不能原样全塞给模型
先给结论:RAG 的问题从来不只是“有没有找到资料”,还包括“找到之后怎样把资料组织成模型能稳定使用的上下文”。如果把检索结果原样全塞给模型,系统往往不会更准,只会更乱。
很多人第一次做 RAG 时,容易自然地觉得:
- 检索已经找回来了
- 那就把这些结果全部拼进 Prompt
- 给模型看得越多,回答应该越完整
这条直觉只在很理想、很小规模的场景里偶尔成立。到了真实系统里,原样拼接通常会带来一连串问题:
- 重复结果占满上下文
- 边缘相关内容压过关键证据
- 新旧版本混在一起
- 说明性材料和直接证据混在一起
- 长文档中真正关键的几句被埋在一大段背景里
所以这一节要建立的第一个判断是:
- 上下文构造不是机械拼接材料,而是在做证据组织
它的目标不是“尽量多给”,而是:
- 尽量让模型先看到真正关键、足够完整、彼此不冲突的内容
学这一节时,最值得先建立的判断
- 检索结果不等于最终上下文,中间还需要筛选和组织
- 给模型的材料越多,不一定越好,很多时候反而会降低答案稳定性
- 去重、排序、压缩和结构化,不是附属优化,而是上下文构造本身的一部分
- 有些问题该多给,有些问题反而应该少给
这一节会回答什么问题
读完这一节后,你最好能更稳地判断:
- 当前系统的问题更像出在检索阶段,还是出在上下文构造阶段
- 给模型的材料是“更多更好”,还是“更准更好”
- 去重、排序、压缩哪些应该发生在进入 Prompt 之前
- 为什么很多回答不稳的问题,本质上是上下文组织失败,而不是模型能力不足