先说结论:RAG 项目里,模型选型对最终效果的影响通常不到三成,剩下七成在“怎么切、怎么召回、怎么约束”。上线后答不准,先别急着换模型,按下面五条顺序排查,能解决大部分问题。
一、切片把语义切断了
按固定字数切是最常见的做法,也是最容易出问题的做法。一份制度文件在“第 3.2 条”中间被切断,检索出来的片段就只有半句话,模型只能猜。
修法:按结构切(标题层级、条款号、表格行),保留章节标题作为上下文前缀;片段之间留 10%–20% 重叠;单个片段控制在 300–600 字。
二、只用向量检索,专有名词全部漏掉
向量擅长语义相近,不擅长精确匹配。产品型号“BT-9000”、合同编号、人名,向量检索经常召回一堆“意思差不多”的无关内容。
修法:混合检索——向量 + 关键词(BM25)各取前 N 条合并,再做重排。这一步通常能带来最明显的提升。
三、没有重排序(Rerank)
初步召回 20 条,直接全塞给模型,模型会被噪声带偏。加一个轻量重排模型,把真正相关的 5 条挑出来,效果差别很明显,成本也不高。
| 症状 | 更可能的原因 | 优先修法 |
|---|---|---|
| 答非所问,但检索到了相关文档 | 切片太长、噪声多 | 缩短片段 + 加重排 |
| 专有名词、编号查不到 | 纯向量召回 | 改混合检索 |
| 回答一半对一半编 | Prompt 没约束“无依据不作答” | 加强约束 + 输出引用 |
| 同一问题两次答案不一样 | 温度高、无固定上下文 | 降温度、固定检索结果 |
| 线上问题复现不了 | 没有评测集 | 先建 100–300 条回归集 |
四、Prompt 没有“不知道就说不知道”的出口
这是最便宜也最有效的改动。明确要求:只能依据给定资料回答;资料不足时直接说明缺什么,并给出可联系的人。同时要求输出引用来源(文件名 + 段落),既方便核对,也方便后续排查。
五、没有评测集,所有优化都靠感觉
准备 100–300 条真实问题,标注“标准答案要点”与“必须引用的文档”。每次改切片、改 Prompt、换模型,都跑一遍,看命中率变化。没有这一步,团队会陷入“改一版好像好点、再改一版又回去了”的循环。
效果预期要现实一点
企业内部知识库问答,在资料质量尚可的前提下,首年做到常见问题 80%–90% 可自助解决、复杂问题转人工是合理目标。指望 100% 替代人工,通常会在验收阶段翻车。给一个“转人工”的明确出口,反而更容易通过验收。



