RAG 常见失败模式
四种典型 RAG 系统失败模式及其解决方案:提示词注入、上下文搜索失效、跨文档推理失败、上下文窗口溢出。
Key Points
- 提示词注入:必须在流程前端增加毒性/边界检测节点
- 多轮对话上下文失效:检索前加入问题重写(Revise Question)机制
- 跨文档推理失败:引入 GraphRAG 多层检索,召回率从 60% 提升至 95%+
- 上下文窗口溢出:动态裁剪消息列表,仅保留最近相关历史
Details
失败模式 1:提示词注入(Jailbreaking)
表现:客服机器人被用户绕过系统限制,回答无关话题
解决方案:
- 不能仅靠 System Prompt 要求"不要回答无关问题"
- 在流程最前端增加毒性/边界检测节点
- 使用 Few-Shot 示例让 LLM 预判用户输入是否属于业务范围
- 越界问题立即切入异常流程委婉拒绝
失败模式 2:多轮对话上下文搜索失效
表现:用户追问时因代词缺失,向量检索找不到相关文档
解决方案:
- 检索前加入问题重写机制
- LLM 根据多轮历史将当前提问改写为包含完整实体信息的独立问题
- 再进行知识库检索
失败模式 3:跨文档推理失败
表现:传统 RAG 对需要全局视角的复杂问题召回率不足 60%
解决方案:
- 引入 GraphRAG 多层检索机制
- 局部精准检索(Local)+ 全局语义扩展检索(Global)
- 双层检索跨越语义鸿沟,召回率提升至 95%+
失败模式 4:上下文窗口溢出
表现:聊天轮数增加导致 Token 限制报错或内存崩溃
解决方案:
- 使用 trim_messages 对消息列表动态裁剪
- 仅保留最近相关的历史 Token
- 生产环境务必将向量数据存入持久化组件
Related Pages
- [[patterns/intelligent-customer-service]]
- [[patterns/production-deployment]]
- [[patterns/rag-implementation]]
- [[concepts/rag]]