检索增强生成 RAG 是知识库类大模型应用的主流方案。大量企业落地 RAG 会遭遇一个共性现象:项目初期测试样本效果优秀,上线后持续往知识库新增文档,过一段时间问答效果持续变差。用户提问明明知识库存在对应答案,却检索不到,或者检索出大量无关片段,最终大模型输出幻觉或者错误回答。很多运维直接升级向量数据库、增加算力,但效果提升有限。
召回退化很少是向量数据库单方面故障,是预处理、分块、Embedding 模型、召回策略、重排、后处理多环节累积劣化的结果。想要解决退化,不能只调向量库参数,需要建立全链路观测与排查思路。
1 召回退化典型表现
- 知识库存在目标文档,但 top‑k 召回结果完全不包含相关片段;
- top‑k 列表里面混入大量噪声无关内容,有效信息被淹没;
- 新入库文档检索命中率低,旧文档表现尚可;
- 简单问句效果稳定,长问句、复杂业务问句召回质量明显恶化。
2 全链路根因拆解
2.1 文档预处理与分块策略劣化
分块是 RAG 最容易被忽视的环节。项目初期文档少,人工调整过分块大小,随着业务推进,不同格式文档(PDF、网页、Word)源源不断入库,统一固定分块参数不再适配全部文档类型。 大段表格、长列表被粗暴切分,语义完整单元被拦腰截断;部分文档分块过小丢失上下文,部分分块过大混入多个无关主题。知识库体量小的时候,冲突样本少问题不明显;文档规模扩大,大量低质量切片进入向量库,污染检索池。
2.2 Embedding 向量模型适配问题
很多项目直接选用通用开源 Embedding 模型,没有针对垂直业务领域做评估。通用向量在通用文本表现尚可,面对行业术语、专有名词识别能力不足。知识库规模扩大之后,向量空间里面大量语义距离接近但是业务含义完全不同的切片互相干扰。另外,业务迭代用户查询句式发生变化,Query 和文档切片分布发生偏移,原先的 Embedding 匹配能力下降。
2.3 向量库召回策略缺陷
单纯依靠相似度 top‑k 检索存在固有短板。相似度只能衡量语义接近,不等价于业务相关性。随着知识库膨胀,容易出现 "语义相近但业务无关" 的片段抢占 top‑k 列表。仅靠相似度打分,无法区分哪些切片真正可以回答用户问题。 另外,没有做时间、元数据过滤。历史过期文档和最新有效文档混在一起,旧知识抢占召回位置。部分系统 top‑k 数值写死固定值,没有根据 Query 复杂度动态调整。
2.4 重排模块失效
重排(Reranker)的目标是过滤 top‑k 里面的无关噪声。很多项目重排模块只是简单接入,缺少监控。当知识库增加大量新类型文档,重排模型面对陌生领域样本打分错乱,噪声无法过滤。同时很多业务没有设置重排分数阈值,无论分数高低全部送入大模型,低质量片段直接参与生成。
2.5 没有脏数据治理机制
知识库持续导入,重复文档、残缺解析片段、乱码文本、过期知识不断积累。小体量知识库脏数据占比低,影响有限;数据量上涨,脏切片持续累积,干扰向量检索。多数 RAG 系统缺少定期巡检、去重、过期文档下线流程。
3 全链路排查流程
- 收集大量线上真实用户 Query,标记哪些问答出现召回失败;
- 针对 Bad case 做链路拆解:拿到用户 query,完整记录预处理后的 query 向量、向量库 top‑k 原始召回列表、重排之后结果;观察相关文档处在什么位置,是根本没召回,还是被噪声挤到后排被过滤;
- 如果相关文档完全不在 top‑k,排查分块质量、Embedding 适配;
- 如果相关文档存在 top‑k 但是重排后被过滤或者排名靠后,排查重排模型与阈值;
- 检查知识库脏数据、重复、过期文档占比。
注意排查不要使用自己构造的测试问句,必须使用线上真实用户问题。
4 工程化优化方案
文档分块不能一套参数走全部文档。针对 PDF 表格、网页、普通文本设置差异化分块策略;优先按照语义单元分割,而不是单纯固定字符切割;开启分块重叠,保证语义完整性。
定期评估 Embedding 模型在本业务数据集上召回指标。垂直领域,如果通用 Embedding 效果不足,考虑领域微调向量模型。
召回策略层面,不要完全依赖相似度,引入元数据过滤,支持时间过滤、文档类别过滤;可采用混合检索:向量检索 + 关键词 BM25,结果做融合,弥补向量语义匹配缺陷。
重排模块必须设置分数阈值,低于阈值直接丢弃片段,不送入 LLM;持续收集 Bad case 评估重排效果。
建立知识库运维机制:文档去重、过期知识下线、残缺解析片段过滤,定期巡检知识库切片质量。
业务上引入召回质量观测指标:真实业务 query 下相关片段是否进入 top‑k、重排后保留率,定期统计指标变化,提早发现退化苗头,而不是等到用户大量投诉才发现问题。
RAG 召回退化是知识库规模增长过程中非常普遍的现象。问题分散在预处理、分块、向量化、检索、重排各个环节,向量数据库只是存储载体,大部分退化根源不在存储层。想要长期稳定运行 RAG,不能只关注大模型生成效果,必须把文档预处理、知识库治理、召回链路观测纳入日常运维。很多 RAG 项目上线后缺少知识库运维,随着数据积累效果持续滑坡,最终业务价值大打折扣。