工业级的 RAG 优化选型
这段时间到又开始接触知识库的场景,并且了解了一些企业智库除了rag以外的解决思路,比如wiki,grep等等,但是本质还是离不开rag这种向量匹配的高效手段。并且这段时间收到一些找我简历辅导的同学的简历,发现大家大部分人都是只写“用rag实现XX”,没有实现下面这张真实项目核心的闭...
这段时间到又开始接触知识库的场景,并且了解了一些企业智库除了rag以外的解决思路,比如wiki,grep等等,但是本质还是离不开rag这种向量匹配的高效手段。并且这段时间收到一些找我简历辅导的同学的简历,发现大家大部分人都是只写“用rag实现XX”,没有实现下面这张真实项目核心的闭环:首先是你面对rag场景遇到什么问题(例如你发现切块策略导致上下文不连贯,例如步骤AB被拆分无法一起召回) ——>采用了什么优化策略(例如父子索引,查询重写)——最后用这个策略达到什么业务指标(例如加入父子索引后recall优化了多少多少,加入之前会怎么怎么样)一个能打动面试官的简历,应当有以上闭环。而不是单纯为了华丽炫技堆砌技术,面试官只会觉得是AI优化过的简历,也无法体现你的技术选型思维面试的本质就是考察你解决特定问题的能力——而这个能力能从你遇到过什么问题,如何思考解决,达到什么效果的闭环体现出来
非常推荐用于你简历RAG项目的优化点
1. 概述
总体优化可以拆分为以下四点:
- 首先是基于入库前的知识库建立阶段,要考虑索引的问题,以及知识拆分的问题,文档不能拆分破坏语意,甚至需要考虑打Tag元数据标签
- 高效检索阶段,多路召回,高效的检索算法,HNSW算法,图检索算法,BM25召回
- 排序阶段,需要不止是根据向量本身的相似性去过一遍Rerank模型得到自注意力分数,更需要真实根据业务Tag字段去打分,比如你是医疗问答场景,你可以手动控制什么Tag更高频返回,向量本身的Tag也可以加入到最后Rerank重排序的分数计算中去
- 系统完成后的链路评测,线上数据的反馈回流,跑出真的“知识飞轮”,包括可信评测,推荐开源比较权威的评测框架Deepeval——https://github.com/confident-ai/deepeval
知识生产与治理
→ Query 改写
→ 多路检索
→ Rerank 排序
→ 证据截断
→ 可信生成
→ 自动评测
→ 线上反馈回流
工业级 RAG 的关键,不是“把文档塞进向量库”,而是让知识持续更新、证据稳定召回、模型按证据回答,并且让线上错误自动回流修复。
image.png
2. RAG 优化总览
| 模块 | 解决的问题 | 主要优化手段 |
|---|---|---|
| 知识工程 | 有没有正确知识 | 自动知识生产、语义切分、元数据补全、冲突治理 |
| Query 改写 | 用户问题能不能被搜到 | 主改写、子问题拆解、同义改写、改写模型微调 |
| 检索召回 | 能不能找回相关证据 | 向量检索、BM25、GraphRAG、标签加权、双路检索 |
| Rerank | 正确证据能不能排前 | 多路结果融合、去重、重排序模型 |
| 截断策略 | 关键证据会不会被丢掉 | 证据压缩、8K token 截断、保留高价值片段 |
| 可信生成 | 模型会不会胡编 | 证据约束 RL、安全奖励、URL 校验 |
| 过程评测 | 错误发生在哪一环 | 10 阶段评测、badcase 归因、中间产物保存 |
| 反馈闭环 | 线上错误能不能修复 | 点踩回流、分诊 Agent、知识草稿、评测集回归 |
3. 第一类优化:知识工程优化
image.png
3.1 为什么知识工程重要
RAG 的上限首先取决于知识库。
如果知识库里没有答案,模型只能猜;如果知识库知识过期,模型会输出过时答案;如果知识之间冲突,模型即使检索到了,也可能答错。
所以文章里把第一层底座叫做“知识飞轮”,也就是让知识可以持续生产、清洗、更新、验证和回流。
3.2 自动化知识生产
文章中提到,知识来源不再只依赖人工整理,而是从真实业务场景中自动生产知识。
| 来源 | 价值 |
|---|---|
| 操作寻路类 | 把“怎么操作”“入口在哪”转成步骤型知识 |
| API 参数类 | 把接口、字段、工具说明转成模型可用知识 |
| 转人工 QA 类 | 把客服高频问答沉淀成知识 |
典型链路:
用户问题
→ Agent 发现知识缺口
→ 自动生成知识草稿
→ 校验 Agent 审核
→ 入库
→ 后续问答复用
学习重点:
RAG 的知识库不应该是静态文档库,而应该是一个持续生长的知识系统。
3.3 Chunk 切分优化
原始做法:
Markdown 标题切分 + 递归切分
升级后:
结构化章节切分
+ LLM 语义切分
+ 过长片段拆分
+ 过短片段合并
这样做的好处:
- 保留文档结构;
- 避免 chunk 太碎导致语义不完整;
- 避免 chunk 太长导致召回不精准;
- 提高回答时证据完整性。 学习重点:
Chunk 不是越小越好,也不是越大越好,而是要让每个 chunk 保持一个相对完整的语义单元。
3.4 元数据 Tag 优化
文章中给知识自动补充元数据标签。
| 知识类型 | 标签 |
|---|---|
| 非审核类知识 | 行业、产品、人群 |
| 审核类知识 | 业务、行业、环节、地域 |
这些 tag 不是为了展示,而是直接参与检索:
用户问题
→ 识别产品/行业/业务标签
→ 定向召回相关知识
→ Rerank 时加权
学习重点:
元数据可以显著提升检索的精准度,尤其适合企业知识库、规则知识库、产品知识库。
3.5 知识冲突治理
文章中特别强调,知识冲突是事实问答错误的重要来源。
常见冲突包括:
- 政策变更;
- 活动规则变化;
- 旧文档没有下线;
- 帮助中心历史文档仍被召回;
- URL 或图片链接失效。 对应治理方式:
- 无效 URL 自动识别;
- 过时知识清理;
- 冲突知识校验;
- 历史文档过滤;
- 错误知识停用。 学习重点:
工业 RAG 里,知识冲突往往比模型能力更致命。
4. 第二类优化:Query 改写优化
4.1 为什么要做 Query 改写
真实用户不会按照知识库标题提问。
例如:
这个项目算空耗吗?
每天拉时段会影响模型吗?
金融信贷小程序落地页最近有什么限制?
这些问题可能口语化、模糊、多意图,还带上下文。如果直接拿原问题去检索,很容易召回失败。
4.2 多路 Query 改写
文章中使用了结构化多路动态改写。
| 改写类型 | 作用 |
|---|---|
| 主改写 | 补全语义,规范表达 |
| 子查询改写 | 复杂问题拆成多个子问题 |
| 同义改写 | 扩大召回范围 |
示例:
原问题:
每天拉时段会影响模型吗?
可能改写为:
广告投放中频繁调整投放时段是否会影响模型学习?
子查询可能是:
投放时段调整对模型学习期有什么影响?
广告投放模型稳定性受哪些操作影响?
学习重点:
Query 改写的目标不是“改得更好看”,而是让问题更容易命中知识库。
4.3 改写模型微调
文章中基于线上日志和评测集构建约 1.6 万条 SFT 数据,对小模型做 LoRA 微调。
效果:
- 改写质量优秀率达到 87.6%;
- 合格率达到 95%+。 学习重点:
Query 改写可以用小模型承担,因为它是明确、可评测、可训练的子任务。
5. 第三类优化:检索召回优化
image.png
5.1 从单路检索到混合检索
工业 RAG 不能只依赖向量检索。
文章中使用的是多路并行检索:
GraphRAG 检索
+ BGE 向量检索
+ BM25 关键词检索
+ 标签定向检索
不同检索方式解决不同问题。
| 检索方式 | 适合场景 |
|---|---|
| 向量检索 | 语义相似问题 |
| BM25 | 专有名词、字段、政策词、精确匹配 |
| GraphRAG | 多跳关系、流程、规则依赖 |
| 标签检索 | 行业、产品、业务场景过滤 |
学习重点:
最稳的 RAG 通常是混合检索,而不是只靠 embedding。
5.2 双路并行检索
文章中提到双路并行检索:
定向检索 + 通用检索
定向检索:
- 根据产品、行业、业务标签做精准召回;
- 优点是准确;
- 风险是漏召回。 通用检索:
- 不做强过滤;
- 保留兜底覆盖;
- 优点是召回广;
- 风险是噪声多。 最终再合并、去重、排序。
学习重点:
精准召回和泛化召回要同时存在,不能只押一边。
5.3 GraphRAG 优化
文章中 GraphRAG 不是全量建图,而是选择高价值知识建图。
策略:
选择线上召回频次 Top 10% 的高价值知识
→ 构建 GraphRAG 子图
→ 持续滚动更新
这样做的原因:
- GraphRAG 成本高;
- 全量建图不一定划算;
- 高频知识更值得优化;
- 高频问题对用户体验影响更大。 GraphRAG 适合解决:
- 多跳问题;
- 流程型问题;
- 规则型问题;
- 实体关系问题;
- 条件分支问题。 学习重点:
GraphRAG 不一定要全量上,优先用于高频、高价值、高风险知识。
6. 第四类优化:Rerank 和截断优化
6.1 Rerank 的作用
检索召回只是第一步。
很多 RAG 错误不是“没召回”,而是:
召回了正确知识
但排得太靠后
最终被截断丢掉
所以需要 Rerank。
文章中的链路是:
多路检索
→ 结果融合
→ 去重
→ Qwen3-4B rerank
→ 证据截断
→ 生成回答
学习重点:
Rerank 负责把最有用的证据放到模型最容易看到的位置。
6.2 证据截断
文章中将证据截断到 8K tokens。
截断不是简单砍掉后面的内容,而是要保留:
- 高相关 chunk;
- 关键规则;
- 条件限制;
- 操作步骤;
- URL;
- 安全边界。 学习重点:
截断策略会直接影响答案质量。召回正确但截断错误,最终也会答错。
7. 第五类优化:可信生成优化
image.png
7.1 为什么生成侧还会错
即使证据召回正确,模型仍然可能:
- 没有忠实使用证据;
- 自己补充不存在的信息;
- 编造 URL;
- 混合多个知识片段导致错误;
- 输出不符合客服规范;
- 触碰安全合规风险。 所以文章提出:从 RAG 到可信 RAG。
7.2 证据约束强化学习
文章使用 Qwen3-32B-RL,并通过 GRPO 做证据约束强化学习。
奖励函数包括:
| 奖励项 | 目标 |
|---|---|
| Evidence Faithfulness | 答案必须忠实于检索证据 |
| Style Compliance | 符合广告客服表达规范 |
| Safety | 符合安全合规要求 |
| URL Validity | 链接必须真实可信 |
学习重点:
不能只用 Prompt 要求模型“不要胡说”,要把忠实性、安全性、链接有效性写进训练和规则中。
7.3 URL 幻觉治理
文章中特别重视 URL 幻觉。
校验逻辑:
抽取答案中的 URL
→ 判断是否出现在证据中
→ 如果不在证据中,判断是否命中可信白名单
→ 检查 HTTP 状态码
→ 通过后才允许输出
可信 URL 条件:
- 来自证据;
- 或命中 approved pool;
- 且 HTTP 状态码为 200、301、302。 最终效果:
URL Hallucination 从 0.0041% 降至 0.0003%
下降 92.7%
学习重点:
高风险内容要用确定性规则兜底,不能完全依赖模型自觉。
8. 第六类优化:过程评测优化
image.png
8.1 为什么不能只评最终答案
最终答案错了,原因可能很多:
- Query 改写错;
- 分类路由错;
- 检索没召回;
- Rerank 排错;
- 截断丢证据;
- 模型没按证据回答;
- 知识本身冲突。 如果只看最终答案,就只知道“错了”,不知道“怎么修”。
8.2 10 阶段评测
文章将 RAG 链路拆成 10 个阶段:
prepare
→ rewrite
→ classify
→ route
→ retrieval
→ rerank
→ boundary
→ truncation
→ answer
→ judge
每次评测保存中间产物。
这样可以做到:
- 只改 answer prompt,就从 answer 阶段复跑;
- 只改截断策略,就从 truncation 阶段复跑;
- 只改 tag 权重,就跑 retrieval/rerank 对比。 学习重点:
分阶段评测可以把实验周期从天级压缩到分钟级。
8.3 Badcase 归因
文章中的错因归因示例:
| 归因项 | 占比 |
|---|---|
| 知识冲突 | 45.8% |
| 检索问题 | 32.4% |
| Reranker 问题 | 3.1% |
| LLM 问题 | 18.7% |
这个结果很重要。
它说明错答不一定是 LLM 的问题。很多错误应该修知识库、检索、排序,而不是盲目改 prompt。
学习重点:
RAG 优化要先定位错误环节,再选择修复手段。
9. 第七类优化:Agentic RAG 优化
image.png
9.1 什么是 Agentic RAG
普通 RAG:
用户问题 → 检索 → 生成答案
Agentic RAG:
用户问题
→ Agent 规划
→ 判断要不要检索
→ 拆分子问题
→ 多轮检索
→ 观察结果
→ 继续推理
→ 输出答案
它适合复杂问题、多跳问题、需要工具调用的问题。
9.2 路径级奖励
文章中的 Search-P1 核心思想是:
不只奖励最终答案,也奖励中间路径。
奖励包括:
| 奖励 | 作用 |
|---|---|
| Path Reward | 奖励合理推理路径和检索路径 |
| Soft Outcome Reward | 最终答案错了,也给部分正确奖励 |
| Format Reward | 保证输出轨迹结构可解析 |
学习重点:
Agentic RAG 的关键不是只看答案,而是训练模型学会正确地检索和推理。
10. 第八类优化:线上反馈闭环
10.1 为什么需要反馈闭环
离线评测集永远覆盖不了全部线上问题。
线上真实反馈包括:
- 用户点踩;
- 内部反馈;
- AI 巡检;
- 众测问题;
- 客服反馈;
- 群聊截图。 如果这些问题不能进入系统,RAG 就不会持续变好。
10.2 反馈处理链路
文章中的反馈闭环:
线上点踩 / 内部反馈 / AI 巡检
→ 统一反馈表
→ 分诊 Agent
→ 处理 Skill
→ 知识草稿 / Bug 单 / Prompt 建议 / 评测 case
→ 回流评测集
重点是:
每一条线上错误,都应该沉淀为下一次上线前的回归测试。
10.3 分诊 Agent
分诊 Agent 只做简单分类,不直接判断复杂根因。
分类包括:
- 知识缺失;
- 回答有误;
- 数据错误;
- 分析偏差;
- 产品需求;
- 功能 Bug;
- 体验问题;
- 无效反馈。 真正的根因分析交给后续 Skill。
学习重点:
分诊 Agent 不要越权。入口处信息不完整,只适合做粗分类。
11. 一套可复用的 RAG 优化方法论
可以把文章中的经验整理成一个标准优化框架:
第一步:检查知识
有没有知识?知识是否过期?是否冲突?
第二步:检查改写
用户问题是否被正确理解和拆解?
第三步:检查召回
正确知识是否被召回?
第四步:检查排序
正确知识是否排在前面?
第五步:检查截断
关键证据是否进入上下文?
第六步:检查生成
模型是否忠实基于证据回答?
第七步:检查安全
URL、合规、敏感内容是否有规则兜底?
第八步:检查评测
错误是否被归因到具体环节?
第九步:检查反馈
线上 badcase 是否回流到知识库和评测集?
12. 学习路线建议
阶段一:基础 RAG
掌握:
- chunk 切分;
- embedding;
- 向量检索;
- BM25;
- rerank;
- prompt grounding。 目标:
能搭建一个基础知识问答 RAG。
阶段二:知识工程
掌握:
- 知识清洗;
- 文档结构化;
- 元数据 tag;
- 知识冲突检测;
- 知识更新机制。 目标:
明白 RAG 的核心资产不是模型,而是知识库。
阶段三:检索优化
掌握:
- query rewrite;
- 多路召回;
- 混合检索;
- GraphRAG;
- rerank;
- 截断策略。 目标:
能定位并修复“搜不到”“搜错了”“排错了”的问题。
阶段四:可信生成
掌握:
- 证据约束;
- 引用校验;
- URL 校验;
- 安全护栏;
- hallucination 评估。 目标:
让模型不是“看起来会答”,而是“按证据可靠地答”。
阶段五:评测闭环
掌握:
- 分阶段评测;
- badcase 归因;
- 自动评估员;
- 线上反馈回流;
- 回归测试集。 目标:
让 RAG 系统能够持续迭代,而不是靠感觉调 prompt。
13. 最终记忆版总结
这篇文章里的 RAG 优化可以浓缩成 8 个关键词:
知识飞轮
语义切分
Query 改写
混合检索
GraphRAG
证据约束
过程评测
反馈闭环
再浓缩成一句话:
好的 RAG 系统,不是一次性搭出来的,而是靠知识、检索、生成、评测、反馈五个环节持续转起来的。