RAG 知识库问答效果差?先检查切块、召回和上下文污染
很多团队做 RAG 知识库问答,第一版效果差时会立刻换模型、换向量数据库、换 embedding。其实大多数问题不在模型,而在文档切块、召回策略、上下文拼接和答案校验。模型只是最后一环,前面任何一步做错,最后都会表现成“模型胡说”。
如果你的知识库问答经常答非所问、找不到资料、引用错文档、或者回答看起来很自信但和原文不一致,先不要急着调 prompt。按下面这个流程查。
先确认问题属于哪一类
RAG 失败不是一种问题,而是一串问题。先分类,才能排查。
| 表现 | 可能原因 |
|---|---|
| 答案完全无关 | 召回错文档 |
| 答案缺关键细节 | 切块太粗或召回数量不够 |
| 答案引用错来源 | chunk 元数据或引用拼接错 |
| 答案编造内容 | prompt 没限制来源,或上下文不足 |
| 答案重复啰嗦 | 召回 chunk 重复,去重不足 |
| 答案前后矛盾 | 多版本文档混在一起 |
不要只看最终回答。RAG 排查必须把中间结果打印出来:用户问题、召回 chunk、分数、来源、拼接后的上下文和最终回答。
文档切块是第一道坑
切块不是把文档按固定长度切开这么简单。切块方式决定模型能不能拿到完整语义。
常见错误有:
- 按固定字符数硬切,打断标题和段落;
- chunk 太大,召回后上下文噪声太多;
- chunk 太小,答案需要的信息被拆散;
- 没保留标题、章节、路径和更新时间;
- PDF / Word 转文本后表格结构丢失;
- FAQ 问题和答案被切到不同 chunk。
比较稳的做法是按文档结构切:标题、段落、列表、表格、FAQ 项。每个 chunk 都带上来源路径、标题层级、更新时间和文档类型。
召回不是越多越好
很多人觉得召回数量越多,模型越不容易漏答案。实际情况是:召回太多会污染上下文,让模型在多个相似片段里摇摆。
排查召回时,至少看三件事:
- Top 1 是否命中正确文档;
- Top 5 是否包含必要信息;
- 是否召回了大量相似但错误的旧文档。
如果 Top 1 经常错,问题在检索;如果 Top 5 有答案但模型没用,问题在重排或 prompt;如果 Top 5 全是旧版本,问题在数据管理。
重排和过滤很关键
向量相似度只能告诉你“语义接近”,不能保证“回答当前问题最合适”。
例如用户问:
这个 API 的免费额度是多少?
向量检索可能召回:
- API 产品介绍;
- 价格页;
- 旧版价格更新;
- FAQ;
- 一篇博客教程。
真正有用的可能只有价格页和最新 FAQ。这里就需要重排、时间过滤、文档类型优先级和去重。
简单规则也有用:
- 价格问题优先官方价格页;
- 安装问题优先文档;
- 报错问题优先 issue / FAQ;
- 概念问题可以用教程和博客;
- 过期文档不要和新版文档同时进入上下文。
上下文污染会让模型变笨
RAG 最常见的误区是:把所有可能相关的 chunk 都塞给模型。上下文越多不等于答案越好。
上下文污染通常来自:
- 相同内容重复召回;
- 不同版本文档混合;
- 搜索结果摘要和正文同时出现;
- 无关但关键词相似的 chunk;
- 长表格被截断后丢失列名;
- 系统提示、工具输出和用户问题混在一起。
拼接上下文时,应该让模型知道每个片段的来源、时间和可信度。不要只拼一大段无标记文本。
答案必须能回到来源
一个可用的 RAG 系统,不应该只返回答案,还应该能解释答案来自哪里。
最基本的输出应该包括:
- 使用了哪些文档;
- 每个关键结论对应哪个 chunk;
- 哪些问题没有找到可靠来源;
- 如果来源冲突,选择了哪个版本;
- 是否需要人工确认。
如果模型回答得很漂亮,但无法指出来源,那不是可靠的知识库问答,而是普通聊天。
一个开发者排查流程
建议你给 RAG 系统加一个 debug 模式,每次查询输出:
query:用户问题
rewritten_query:检索用问题
retrieved_chunks:标题、分数、来源、更新时间
context_tokens:3200
answer:最终回答
citations:引用来源
然后按顺序判断:
- 查询改写有没有改变用户意图;
- 召回结果有没有正确来源;
- chunk 是否完整;
- 是否有旧版本或重复文档;
- 上下文长度是否过大;
- 模型是否只使用了给定来源;
- 答案是否能引用回原文。
这比盲目换模型有效得多。
FAQ
RAG 效果差,先换模型有用吗?
不一定。先看召回和上下文。如果正确资料没进上下文,再强的模型也只能猜。
chunk 多大合适?
没有固定答案。技术文档通常按标题和段落切更稳;FAQ 要保证问题和答案在同一个 chunk。
向量数据库是不是越高级越好?
不是。检索策略、元数据、重排和数据治理往往比数据库品牌更重要。
怎么判断 RAG 是否可靠?
看它能不能把关键结论追溯到来源,并在找不到证据时明确说不知道。




