方法与工具 / PRACTICE NOTE
RAG 落地效果差的五个真实原因:先排数据,再调模型
RAG 答错,七成以上根因在检索而非模型。本文给出排查清单:先建 30 到 50 题的测量集,再按摄入结构、切块上下文、混合检索、rerank、引用兜底的顺序逐一排查。
摘要
RAG 答错七成以上是检索问题而非模型问题,按摄入结构、切块上下文、混合检索、rerank、引用兜底的顺序排查。
- 体裁
- 实践文章
- 适用对象
- AI 落地工程师、知识库项目负责人、企业 AI 实践者
- 参考来源
- 3 项 · 详见文末
答案先行
RAG 答错时,七成以上的根因不在模型,而在检索:正确的证据根本没送到模型手里,再强的模型也只能对着错误的证据一本正经地输出。排查 RAG 永远先查数据链路,最后才轮到模型。
零、先量化:没有测量就没有排查
动手改之前,先准备 30 到 50 个带标准答案的真实问题,跑一遍,记下"检索失败率"(正确答案的文档没进 Top-K 的比例)。这是你唯一的北极星:Anthropic 公开的检索实验、以及后来第三方的独立复测,量的都是这个指标。改完任何一处,重跑一遍。没有这一步,所有优化都是玄学。
原因一:文档摄入时结构就丢了
症状:表格、标题层级进系统后变成一坨纯文本,"退款政策"那一节的表格丢了列名,答案自然对不上。
验证:随机抽 10 篇源文档,对比原文和入库后的文本,看标题、表格、列表是否完整。
修法:摄入阶段保留结构信息(标题路径、表格转 Markdown);扫描件先过 OCR 再谈别的。结构丢在摄入,后面切块、向量化再怎么做都补不回来。
原因二:切块把上下文切没了
症状:单个块写着"满 30 天后免除费用",但不写这是哪个产品、哪个套餐的规则——块本身是对的,离了文档就没法用。
验证:随机抽 50 个块,不看原文,只看块文本,问自己"这段话能独立回答问题吗"。
修法:两种成熟做法——按标题层级切块并保留标题路径;或给每个块加一段模型生成的上下文说明(Anthropic 的 Contextual Retrieval 实测把 Top-20 检索失败率降低约 49%,注意这是官方自测口径)。2026 年 10 月一份独立复测还发现,对稠密检索,按标题切块的效果甚至好于加上下文说明——先试最便宜的方案。
原因三:纯向量检索漏掉了精确词
症状:用户问订单号、报错码、产品型号,语义相近的块排在前面,写着精确编号的块沉底。
验证:构造 20 个含精确词(编号、代码、人名)的问题,看召回率。
修法:向量检索加关键词检索(BM25)双路并行,结果融合。语义归语义,精确词归精确词,这是生产 RAG 的标配,不是选配。
原因四:没有 rerank,排序靠运气
症状:正确的块在候选里(比如 Top-50),但没进最终给模型的 Top-5。
验证:对比"正确答案在 Top-50 的比例"和"在 Top-5 的比例",差距大就是排序问题。
修法:加一层 reranker,对候选做精排。Anthropic 的实验里,rerank 是单步收益最大的一环;独立复测也证实 reranker 能把失败率砍半。代价是延迟,先在真实候选数下测好再承诺响应时间。
原因五:没有引用和兜底,答错了也理直气壮
症状:检索没命中,模型照样输出一个看起来很对的答案。
验证:故意问 10 个知识库里没有的问题,看系统是拒绝还是编造。
修法:强制引用来源(每个论断挂出处),检索无命中时明确拒绝回答而不是猜。引用不是装饰,它是让答案"可核查"的唯一机制。
排查顺序总结:先建测量集,再查摄入结构、查切块上下文、上混合检索、加 rerank,最后补引用兜底。按这个顺序走,大部分 RAG 的问题在第三步之前就现形了。