生产环境 RAG: 检索为何失败, 又该如何修复
生产环境中大多数 RAG 失败都发生在检索阶段。本指南覆盖切片设计、混合检索、重排序以及 RAGAS 指标, 帮助你在 2026 年构建可上线的 RAG 流水线。
第 01 节 · 问题
为什么大多数 RAG pipeline 在生产里失败
问题几乎不在生成端。当一个 RAG 系统给出错误、幻觉或不完整的答案, 根因通常是检索 — 系统取回了错的 chunks, 或者根本没取到。
快速回答
简短答案: 生产 RAG pipeline 的失败, 是因为检索器返回了无关或不完整的上下文。生成器没有可靠材料可依, 要么幻觉, 要么含糊其辞。先修检索。
2026 年, 朴素 RAG — 定长切块加上单一向量相似度检索 — 大约有 40% 的概率取不回正确上下文。文档集合越大、query 越具体, 这个数字还会更高。生成器在尽职工作。问题是检索器没把它需要的素材给它。
有四个根因。每个对应一种修复, 修复按投资回报排序。从最上面开始。
第 02 节 · 切块
别再按字符数切了
切块策略对检索准确率的约束, 比 embedding 模型选择更大。2025 年的一项临床研究在同一数据集上得到: 自适应切块取得 87% 检索准确率, 而定长 baseline 只有 13%。
定长切块 — 不看内容, 每 512 或 1024 字符切一刀 — 把句子在思维中途切开, 把问题与答案分离, 把让一段话有意义的上下文丢掉。Embedding 模型编码的是不完整的意思。相似度分数比应有的要低。检索器就漏。
语义切块
用 embedding 相似度检测主题边界。当相邻句子的余弦距离越过阈值, 切块器就开新的 chunk。每个 chunk 包含一个连贯的观点。这是 2026 年大多数 RAG 系统的实用默认。
命题切块
把文档拆解为原子化的事实主张, 每条恰好表达一个可验证的陈述。对法务研究、医疗 QA 这类知识密集型应用, 这是精度最高的方案 — 检索一条错误归属的事实都不可接受。
层级切块
同时维护摘要 chunk 和它的子 chunks。查询时系统取摘要做上下文, 取子 chunk 求精度。适合长文档 — 段落级内容的解读需要章节级上下文支撑。
不管选哪种策略, 上线前都用一组样本 query 上的召回率指标做验证。切块质量在你度量它之前是不可见的。
第 03 节 · 检索
混合检索与重排: 两个 ROI 最高的升级
并行跑 BM25 和向量检索, 然后用 Reciprocal Rank Fusion 融合, 是朴素 RAG pipeline 能拿到的最大单项质量提升。
向量检索取回语义相似的段落 — 处理改写和概念匹配很好, 但漏掉精确关键词。BM25 处理精确匹配和稀有词很好, 但漏掉语义关系。对要应付多样 query 类型的生产 RAG 系统, 任一单独都不够。
混合检索把两者并行跑, 然后用 Reciprocal Rank Fusion 把排序列表融合。把混合检索与上下文化技术叠加后, 错误率比朴素的纯向量检索下降约 69%。在任何生产向量库里, 实现都很直接: Weaviate 原生支持混合检索; Pinecone 在 2025 年加入; pgvector 需要手动用 BM25 索引拼装。
| 升级 | 提升 | 实现成本 | 优先级 |
|---|---|---|---|
| 语义切块 | 高 | 低 | 首要做 |
| 混合检索 (BM25 + 向量) | 高 | 低到中 | 其次做 |
| Cross-encoder 重排 | 高 | 中 | 第三步做 |
| 上下文化检索 | 中 | 中 | 第四步做 |
| Adaptive RAG 路由 | 中到高 | 高 | 上规模时做 |
重排这一步值得单独强调。Cross-encoder 模型对每个取回的 chunk 与原始 query 用全注意力重新打分 — 它是一起看 query 和 chunk, 不像 bi-encoder 是分开打分的。一个典型的生产 pipeline 用混合检索取 top-50, 用 cross-encoder 重排到 top-5, 再把这 5 个 chunk 喂给语言模型。代价不大, 精度提升可观。
第 04 节 · 评估
RAGAS: 生产里真正重要的五个数字
RAGAS 提供无参考的评估指标, 你可以在生产流量上跑而不需要人工标注。这五个指标覆盖了从检索到回答的整条 pipeline。
| 指标 | 衡量什么 | 生产目标 |
|---|---|---|
| Faithfulness | 回答里只包含被检索上下文支持的论断吗? | 高于 0.90 |
| Answer relevancy | 回答是否回应了问题真正问的内容? | 高于 0.85 |
| Context precision | 取回的 chunks 是不是真和问题相关? | 高于 0.80 |
| Context recall | 检索是否把回答所需的全部信息都呈上来? | 高于 0.75 |
| Answer correctness | 对照 ground truth, 回答在事实上是否正确? | 高于 0.80 |
Faithfulness 是生产安全里最重要的指标。Faithfulness 低于 0.85 意味着模型经常在生成检索结果不支持的论断 — 按定义就是幻觉。上线前先修检索或调高 top-k。
RAGAS 评估应该异步跑在生产流量的样本上, 不要和用户请求串行。把响应 pipeline 卡在评估上只会增加延迟, 对用户没有任何好处。收集、夜间评估、阈值越界告警。
第 05 节 · 架构
Adaptive RAG: 2026 年的架构标准
Adaptive RAG 在检索之前对每条进来的 query 进行分类, 然后路由到合适的策略。这就是把生产系统和原型分开的架构。
朴素 RAG 系统对每条 query 一视同仁: 取回, 然后生成。Adaptive RAG 在前面加了一层分类。简单事实型 query 走快速向量检索。复杂多步 query 走迭代或层级检索。在知识库以外的 query 直接走模型的参数化知识, 完全跳过检索。
路由逻辑通常是一次小型 LLM 调用或一个分类器。代价很低 — 几毫秒、几个 token — 而精度提升显著。当检索置信度低时跳过检索的系统, 比那种总是检索并把低质量上下文塞进去的系统, 幻觉要少得多。
如果你 2026 年要新建一个 RAG 系统, 一开始就按自适应路由来设计。后期再加要重构整条检索 pipeline, 不是简单包一层就够。
对于把 RAG 当作记忆或知识层的生产 agentic AI 系统, 参见我的 agentic AI 咨询服务 , 了解检索如何嵌入更广的 agentic 架构。
第 06 节 · 成本
不同复杂度下, RAG 每条 query 的成本
升级路径是有真实成本的。从朴素到自适应, 你应该按下面这个表来做预算。
| 架构 | 每条 query 的典型成本 | 质量上限 |
|---|---|---|
| 纯朴素向量 | 0.0005 到 0.002 美元 | 中等 — 在精确匹配和多概念 query 上失败 |
| 混合检索 + 重排 | 0.002 到 0.008 美元 | 良好 — 应付得了大部分生产 query 类型 |
| 带路由的 Adaptive RAG | 0.005 到 0.015 美元 | 高 — 接近基于检索的系统能达到的上限 |
| Agentic RAG (迭代) | 0.02 到 0.10 美元 | 非常高 — 面向研究级和分析师工作流 |
FAQ
常见问题
为什么 chunks 看上去对的, RAG 还是失败?
Chunk 的内容和检索的排序是两个分开的问题。一个 chunk 可以包含正确信息, 但 embedding 相似度比那些不相关却表面相似的 chunks 要低, 所以排在 top-k 之外。修复办法是用一个重排器, 基于实际的问题与 chunk 之间的关系重新打分, 而不是只看 embedding 的接近度。
语义切块和定长切块的区别是什么?
定长切块不看内容, 每隔 N 个字符就切, 经常把句子或观点切成两半。语义切块用相邻句子之间的 embedding 相似度来识别主题边界, 把连贯的观点保留在同一个 chunk 里。在检索准确率的 benchmark 上, 语义切块稳定地优于定长切块。
加一个重排器对 RAG 质量提升多少?
Cross-encoder 重排器能稳定地把正确的 chunk 从第 8 或第 12 位推进到 top 3, 而 top 3 才是语言模型能看到的全部内容。在已有的混合检索 pipeline 上加重排, 团队通常能看到 faithfulness 分数提升 20% 到 40%, 其他组件无需改动。
上线前 RAGAS 分数应该达到多少?
Faithfulness 0.90 以上, answer relevancy 0.85 以上。如果在一组有代表性的生产 query 样本上有任一指标低于这两个阈值, 上线前先把失败原因诊断清楚。生产中 faithfulness 低于 0.85, 大致意味着每 7 条响应里就有 1 条包含一个幻觉式论断。
什么时候用 Adaptive RAG, 什么时候用标准 RAG?
当你的 query 集合是异质的 — 有的需要快速检索、有的需要迭代检索、有的完全在你的知识库以外 — 用 Adaptive RAG。如果所有 query 性质相近、知识库边界清晰, 标准的混合 RAG 加重排就够了。
常见问题
- 切片内容看起来正确, 为什么 RAG 还是会失败?
- 切片内容与检索排名是两个独立的问题。某个切片可能确实包含正确信息, 却因为 embedding 相似度低于其他表面相似但实际无关的切片, 没能进入 top-k。解决办法是引入 reranker, 让它基于问题与切片之间的真实相关性重新打分, 而不是只看 embedding 距离。
- 语义切片和固定长度切片有什么区别?
- 固定长度切片不论内容每隔 N 个字符切一刀, 经常把一个句子或一个观点切成两段。语义切片则用相邻句子之间的 embedding 相似度判断主题边界, 把同一思路完整保留在一个切片中。在检索准确率的基准测试中, 语义切片几乎总是占优。
- 增加 reranker 能提升多少 RAG 质量?
- Cross-encoder 类型的 reranker 能稳定地把本应排在第 8 或第 12 的正确切片提到 top 3。在已有的混合检索流水线上加入 reranker 的团队, 通常能在不修改其他组件的前提下, 让 faithfulness 提升 20% 到 40%。
- 上线前 RAGAS 指标应达到什么水平?
- Faithfulness 应高于 0.90, answer relevancy 应高于 0.85。如果在代表性生产 query 样本上任何一个指标低于该阈值, 就需要在上线前先排查问题。生产环境 faithfulness 低于 0.85 意味着大约每 7 条回答里就有 1 条包含幻觉。
- 什么时候用 adaptive RAG, 什么时候用标准 RAG?
- 如果你的 query 集合差异很大 — 一部分需要快速检索, 一部分需要迭代搜索, 一部分根本不在知识库范围内, 就适合用 adaptive RAG。如果 query 类型同质、知识库边界清晰, 那么带 reranker 的标准混合 RAG 就足够了。