RAG检索增强生成详解:架构、评测与常见失败模式
- RAG要解决什么问题
- 标准架构拆解
- 文档处理与切分策略
- 检索、重排与上下文组装
- 评测指标怎么定
- 十个常见失败模式
- 从Demo到生产的检查表
RAG(Retrieval-Augmented Generation,检索增强生成)是当前企业落地大模型最主流的架构之一:先从企业知识库检索相关片段,再让模型基于这些片段生成回答。它的价值在于把「可变知识」从模型参数中剥离,提高时效性与可审计性,并降低微调成本。
但现实中大量「向量库+Chat」项目表现不佳:答非所问、张冠李戴、引用空洞、权限穿透。原因通常不在模型本身,而在检索链路设计与评测缺失。本文按工程视角拆解全流程。
一、RAG要解决什么问题
纯LLM回答企业私有问题有三类硬伤:知识未写入训练语料;知识会过期;无法证明答案依据。RAG用外部检索补这三块,同时带来新复杂度:检索错了,生成再流畅也是错的;检索对了,提示组装不当仍可能忽略证据。
因此,请把RAG看成搜索系统+生成系统,而不是「给模型加点记忆」。
二、标准架构拆解
一条可上线的RAG链路通常包含:
- 接入层:身份认证、租户隔离、限流。
- 查询理解:改写、补全、意图分类、是否需要检索。
- 检索层:关键词、向量、混合检索,可选多路召回。
- 重排层:用交叉编码器或业务规则精排。
- 上下文组装:去重、截断、按来源标注、注入系统约束。
- 生成层:要求基于证据回答,无法支持则明确说不知道。
- 后处理:引用校验、敏感过滤、格式检查。
- 观测层:记录检索命中、引用率、用户反馈、延迟与成本。
若你的系统缺少重排、引用校验与评测集,它仍停留在概念验证阶段。
三、文档处理与切分策略
垃圾进,垃圾出。入库前至少完成:
- 格式解析:PDF扫描件需OCR;表格尽量保留结构。
- 清洗:页眉页脚、水印、重复目录、无意义导航文本。
- 元数据:来源系统、更新时间、权限级别、文档类型、适用产品线。
- 版本:同一政策多版本并存时,必须能按生效日期过滤。
切分(chunking)没有万能参数。可参考:
- 政策问答:按条款/标题切,保留上下条款编号。
- 技术手册:按小节切,块长400–800汉字或对应Token,重叠10%–15%。
- FAQ:一问一答保持完整,不要把答案切开。
- 代码:按函数/类切,附文件路径。
切太碎会丢语境;切太大则检索粒度粗、噪声多。应准备20–50个真实问题,对比不同切分方案的检索命中率,而不是凭感觉选「512」。
四、检索、重排与上下文组装
向量检索擅长语义相近但用词不同的问题;对专有名词、错误拼写、精确编号,关键词检索(如BM25)往往更稳。生产环境推荐混合检索:两路召回后融合。
重排用更强但更贵的模型对Top-K精排,通常能显著提升准确率。若预算有限,至少用规则:标题命中加权、更新时间加权、同文档多块聚合。
上下文组装建议强制:
- 每段证据带来源ID与标题。
- 总Token设硬上限,优先保留重排分数高的块。
- 系统提示写明:只能依据证据;证据不足则拒答;输出引用列表。
| 环节 | 常见默认 | 更稳妥做法 |
|---|---|---|
| 召回 | 只用向量Top5 | 混合检索Top20再重排到5–8 |
| 提示 | 「请结合以下内容回答」 | 明确拒答条件+引用格式模板 |
| 权限 | 检索后再过滤 | 检索时按用户ACL过滤(防侧信道) |
五、评测指标怎么定
至少同时跟踪检索与生成两侧:
- 检索:Recall@K、MRR、业务专家标注的「是否包含充分证据」。
- 生成:忠于证据率(是否编造)、完整性、可读性、拒答正确率。
- 产品:人工接管率、点踩率、首次解决率、平均成本/会话。
自动指标(BLEU等)对开放问答帮助有限。更有效的是:固定评测集+抽样人工复核+线上反馈闭环。没有评测集就优化RAG,等于闭眼调参。
六、十个常见失败模式
- 文档未清洗,页眉被当成答案。
- 切分切断关键条件句(「仅适用于……」丢失)。
- 只用向量,订单号/政策编号检索失败。
- Top-K过小,证据根本没进入上下文。
- Top-K过大,模型在噪声中「自由发挥」。
- 多租户未按权限过滤,造成信息越权。
- 提示未要求引用,用户无法核验。
- 知识更新后未重建索引,回答过期政策。
- 把聊天历史无限制塞进检索查询,意图漂移。
- 用开放域闲聊模型设定,导致即使有证据也爱补充训练记忆。
七、从Demo到生产的检查表
- 是否有文档Owner与更新SLA?
- 是否有按权限过滤的索引策略?
- 是否有黄金问题集(建议≥100)并定期回归?
- 是否记录每次回答的检索片段便于复盘?
- 是否有拒答与转人工路径?
- 是否监控延迟、空检索率、引用缺失率?
RAG不是插件,而是内容工程+搜索工程+生成约束的组合。把它当成可持续运营的知识服务,而不是一次性接入,效果才会随时间变好而不是随文档膨胀变差。
相关阅读:Prompt工程方法论、LLMOps、可行性评估。