RAG 知识库回答不准、出现幻觉,怎么系统排查?

直接回答

按三层排查:先看**检索层**——把 query 放进检索管道,看召回的片段对不对(不对则调切块、加混合检索与重排序);再看**生成层**——片段对了但答案没用上或跑偏,调提示词与上下文组装;最后看**知识层**——知识库本身缺这条或内容过期,补文档。实践中约六成问题出在知识层(内容缺失或过期),三层按顺序过一遍,绝大多数问题能定位。

核心要点

  • 排查顺序固定:检索层 → 生成层 → 知识层,跳步会浪费时间
  • 检索层三件套:切块策略、混合检索(向量+关键词)、重排序
  • 生成层问题看提示词:是否约束「只基于提供的片段回答」
  • 六成问题根源是知识库本身:缺内容、过期、版本混乱
  • 每个 badcase 归类登记,聚类的 badcase 指向系统性修复方向

一图速览:RAG 三层排查

三层排查检索层看召回片段混合检索重排序生成层收紧提示词强制引用控上下文知识层缺失/过期/混乱版本元数据更新责任人管理机制badcase 登记表每周清理月度看分布

第一层:检索对了吗

拿一个出错案例,把用户问题手动送进检索管道,看返回的 Top 片段。检索不到或排序差:检查切块是否破坏语义(跨段落截断)、是否只做了纯向量检索(叠加关键词检索能救回产品型号类查询)、有没有重排序模型。型号、编号类查询纯向量召回很差,混合检索是必配项。

    第二层:生成用上了吗

    检索对了但回答跑偏,问题在生成层:提示词是否明确「仅基于以下资料回答,资料中没有就说明不知道」;上下文是否被过长历史或无关片段挤占;模型是否过大导致「自由发挥」。把提示词改成强制引用片段编号的形式,能同时压幻觉、方便定位来源。

      第三层:知识本身对吗

      检索和生成都对,答案还是错——去知识库找这条内容的出处:多半是没有(没人写过)、过期(制度改了文档没改)、版本混乱(新旧两版都在库里)。给文档加版本与有效期元数据,建立「谁负责哪类文档」的更新责任表。RAG 是镜子,知识烂照出来的答案就烂——这句判断在绝大多数排障场景里成立。

        RAG 三层排查对照表

        层级典型症状修复动作
        检索层召回片段与问题无关调切块、加混合检索、上重排序
        生成层片段正确但答案跑偏收紧提示词、强制引用片段、控上下文长度
        知识层知识缺失/过期/版本混乱补文档、加版本元数据、定更新责任人

        常见追问

        幻觉完全能消除吗?

        不能完全消除,但能压到可接受水位:强制基于片段回答、答案标注来源、对「资料中没有」的问题诚实拒答。把「拒答」当正常行为设计,比强求全知全能更符合企业场景。

        换更大的模型能解决问题吗?

        只在生成层有效且边际有限。如果检索层没把对的片段送进来,再大的模型也是无米之炊。先修检索与知识层,最后才考虑换模型。

        badcase 要管理到什么程度?

        建一张表:问题、正确答案、错误回答、归类(三层之一)、状态。每周清一次,月度看分布——如果知识层占比持续超过一半,说明运营机制有问题而不是技术问题。

        信息来源

        本页数据均来自上述公开信源,如与官方最新文档不一致,以官方为准。

        需要针对你的行业做一次 AI 可见度诊断?

        免费诊断