[RAG] RAG知识库方案的常见问题、工程实践
0 序言
1 RAG知识库方案的常见问题、工程实践
Q: 如何将RAG知识库的准确率从60%提升到85%? *
Step1 【精准定位】问题环节
别盲目一来就调参,先要看清楚问题出现在哪一层。
- 上下文召回率(Content Recall) => 说明问题在:检索环节
指标意义:衡量该找回的相关信息是否都找到了
召回率低,说明问题出在 embedding 模型 或 切分策略上。
[AI] 智能系统的评估方法 - 博客园/数据知音
查全率 := 召回率/Recall、灵敏度(通俗意义的“检出率”)
查准率 := 准确率/Precision(常被混淆为“检出率”)
- 忠实度(Failthness) => 生成环节
指标意义:衡量生成的答案是否严格基于检索到的内容
忠实度低,说明大模型在"瞎编"信息,也就是幻觉。
- 小结:IF 召回率低 => 修复检索管线;IF 忠实度低 => 修复生成管线
Step2 【数据切分】优化
性价比最高的优化环节,收益最直接
- X/不要: 固定 Token 一刀切
- 按固定字数强行切断
- 关键实时任意被拆成2个chunk
- 上下文语义断裂
- √/建议: NLP 语义感知动态切分
- 按句子/ 段落自然边界切分
- 识别语义完整的最小单元
- 保留信息的完整性
- 工程经验:保留10-20%的重叠窗口
相邻chunk之间保留一部分重叠内容,避免关键信息恰好落在切分边界上,而被“腰斩”
Step3 【用户提问】的预处理
真实用户的提问往往模糊、不完整
-
用户模糊提问 => 大模型扩写补全 => 相似度校验 => 进入检索
-
为什么要检验?(避免:大模型扩写的幻觉风险)
扩写可能“脑补”出原本用户不存在的限定条件,导致检索方向严重跑偏,反而拉低准确率。
- 余弦相似度的门控机制 (校验扩写版的阈值)
计算原始提问与扩写版提问的向量相似度,低于阈值则直接丢弃扩写结果,宁可保守也不引入噪声。
阈值可根据业务容忍度在 0.65 - 0.85 之间调整。
Step4 【混合检索】(向量检索 + 关键词检索) + 重排序
多路召回分数不在同一量纲上,怎么统一?
- 向量检索 Dense
- 擅长语义相似匹配
- 擅长同义 / 泛化表达
- 关键词检索 Spare
- 擅长精确匹配
- 擅长专有名词 / 代码
- 实现思路:
- 可使用 LambdaMART 统一打分维度
[AI/算法] LambdaMART:一种用于排序学习(Learning to Rank)的算法 - 博客园/数据知音
用梯队提升树学习一个统一的排序函数,把BM25、向量相似度、实体匹配度等特征融合成一个最终排序
可解释、工程成熟、延迟可控
Step5 【策略路由】的分流
准确性和并发性能,从来是一对矛盾,需要进行权衡。
- 意图识别,先分流 —— 前置判断
用轻量分类器,先判断查询的复杂程度,决定走哪条检索通道。
- IF 简单查询
- 纯向量检索
- 跳过重排序
- 低延迟通道
- IF 复杂查询
- 混合检索
- 叠加重排序
- 高精度通道
- 效果 : 工程效益
不用所有请求都跑最重的管线,整体响应延迟可控,同时保持住了复杂问题的准确率。
效果总览
4个环节协同作用,共同拉高准确率。
- 语义切分 => Query校验 => 混合重排序 => 策略路由
- 语义切分:解决数据质量问题
- Query校验:解决 Prompt 扩写幻觉问题
- 混合重排序:多路检索(向量检索、关键词检索)的统一与打分
- 策略路由:平衡准确率和性能延迟
浙公网安备 33010602011771号