跳转至

第 16 章 RAG 常见问题与解法

只要 RAG 进入真实任务,问题几乎立刻会出现。模型答错时,团队第一反应往往是“检索没做好”,但真实原因并不止一种。RAG 的失败模式相对固定,因此也值得系统化拆解。

16.1 检索不到

最常见的问题是没召回到真正相关片段。可能的原因包括文档没入库、切分破坏语义、embedding 不适合该领域、查询表达和文档表达差异过大。面对“检索不到”,系统不应该只调一个参数,而要沿链路逐段排查。

16.2 检索错了

另一类问题是召回了内容,但不是当前问题最该看的内容。这通常和重排不足、chunk 粒度不合适、元数据过滤缺失有关。错召回往往比没召回更危险,因为系统会在错误依据上自信作答。

16.3 检索内容冲突

知识源多了之后,内容冲突几乎必然出现。版本不同、文档过期、流程更新未同步,都会导致多个片段互相矛盾。系统需要决定如何处理冲突,例如优先最新版本、优先权威来源、明确向用户暴露冲突,而不是让模型自行拍板。

16.4 引用不可溯源

很多 RAG 系统看似“引用了资料”,但引用只是文本拼接,没有稳定来源标识。一旦用户追问依据,系统无法回指具体文档、版本和段落。这会直接削弱可信度,也让调试变得困难。

16.5 时效性问题

知识会过期,这是 RAG 系统最容易被低估的问题之一。即使召回正确,如果文档本身已经失效,系统仍然会给出错误结论。因此知识系统必须设计版本、更新时间和失效策略。

16.6 本章小结

RAG 最典型的问题无非是找不到、找错了、找到了但彼此冲突、找到了却没法追踪来源,或者找到了过期内容。只有把这些失败模式视为系统问题,而不是模型偶然发挥失常,RAG 才可能进入稳定迭代。

下一章会继续讨论 RAG 真正进入生产环境后会面临的额外要求:权限、版本、混合检索和评测。