RAG 检索精度提升的三大陷阱
检索器、生成器、整体架构三层优化手段详解
原题:在RAG(Retrieval-Augmented Generation)系统的实现过程中,有哪些有效的优化手段可以提升检索精度和生成质量?请从检索器、生成器和整体架构三个层面进行分析。
模型微调 · AIlab真题
回答与解析
检索层
- 先建立可复现基线:固定语料、标注 query、相关性定义和 Recall@K/MRR/NDCG。
- 检查知识覆盖、解析、分块、元数据与权限,再比较查询改写、稀疏/稠密/混合召回。
- 只有正确文档已经进入候选集时,Cross-Encoder 等重排器才可能改善高位排序;否则应先修召回。
- Embedding 微调、难负样本和索引参数必须分别做消融,避免同时改动后无法归因。
生成层
- 对候选证据做去重、冲突检测、上下文预算和位置安排。
- Prompt 明确证据边界、引用格式和证据不足时的行为。
- 分开测答案正确性、引用支持率、faithfulness、覆盖率与拒答,不能只看语言流畅度。
- 高风险输出可增加规则、NLI/验证器或人工确认。
系统层
- 记录 query 改写、召回列表、重排分数、最终上下文、模型版本和回答,保证 bad case 可回放。
- 监控 P95/P99、QPS、缓存命中、索引新鲜度、token 与单请求成本。
- 用灰度、版本化索引和回滚控制更新风险。
假设实验
在同一测试集上依次比较:基础向量召回、加入 BM25、加入融合、加入重排、改变上下文组织。每步同时记录质量、延迟和成本,并按 query 类型和文档类型切片。结果用真实实验填写,不能预设某个企业项目或固定提升。
口语版讲法(约4分钟)
- 一句话定位:RAG优化本质是检索质量和生成质量的平衡
- 检索器:混合检索和重排的适用边界
- 生成器:上下文压缩和引用生成的实际效果
- 整体架构:迭代检索的取舍
- 落地风险与收尾
我会先把 RAG 的错误拆成一条漏斗,再决定优化哪一层。检索侧先确认知识库里有没有答案,解析、分块和权限过滤有没有把证据丢掉,再看正确文档是否进入 Top-K。候选里没有答案时,应该修语料覆盖、分块或召回;候选里有答案但排得靠后,才值得比较 BM25、向量召回、RRF 和 Cross-Encoder 重排。查询改写也要测语义是否漂移,不能只看召回数量变多。
生成侧关注模型拿到的到底是什么证据。我会做去重和冲突检测,控制上下文预算与顺序,在 Prompt 里约束引用格式和证据不足时的拒答。评测要把答案正确性、引用支持率、faithfulness、覆盖率和拒答分开,否则一个流畅答案很容易掩盖检索或引用错误。必要时再加规则、验证器或人工确认,但这些也要单独做消融。
系统层要让 bad case 可回放。一次请求至少记录原 query、改写结果、各路候选、融合与重排分数、最终上下文、模型版本和回答。实验在同一语料与标注集上逐步加入组件,同时记录 Recall@K、MRR 或 NDCG、答案质量、P95/P99、QPS、token 和成本,并按 query、文档类型及权限场景切片。上线用影子流量或小流量灰度,语料、索引、reranker、Prompt 和模型都要版本化。这样面试官给出一个错误样本时,我能指出它卡在漏斗哪一步,以及为什么这个改动值得保留。
数据闭环也要按错误类型建设。新收集的线上问题先判断是语料缺失、解析损坏、过滤误删、召回遗漏、排序靠后、上下文冲突,还是模型没有使用证据,再进入对应回归集。相关性标注需要区分“主题相近”和“足以支持答案”,不然 Recall@K 看起来很好,生成端仍然拿不到可用证据。无答案、过期文档、冲突版本和越权文档要单列,平均分无法覆盖这些高风险样本。
我不会把查询改写、混合召回、重排和上下文压缩一次性全上。更稳妥的做法是保留一个简单基线,用同一批 query 做单变量对照,给每个组件设明确的收益门槛和延迟预算。例如重排提升了高位排序,却让尾延迟超出服务目标,就需要减少候选、批处理或只对困难 query 启用。索引或模型升级后继续回放冻结集,若特定切片退化,就回退整套兼容版本。这里真正考察的不是记住多少优化名词,而是能不能从一个错误出发,建立可复现的定位、实验和上线闭环。
关键一句:检索和生成的联合训练,比如Self-RAG,让模型自己学会反思和修正,而不是靠外部规则。
面试官还可能这样问
- 问法 1 · 场景切入
我看你做过客服知识库对吧?假设用户问一个售后问题,系统从文档里捞了5段,结果前3段是废话,后2段有用但没对上关键信息——你一般怎么调检索和生成,才能让回答又准又简洁?
- 问法 2 · 层层追问
RAG系统里检索和生成怎么配合你觉得比较重要?……那检索精度不够的时候,你会在检索器那边下功夫还是生成器这边想办法?……具体从三个层面——检索器、生成器、整体架构——你分别会做什么优化?
- 问法 3 · 直球架构
请从检索器、生成器、整体架构三个层面,讲一下RAG系统提升检索精度和生成质量的有效手段,比如查询改写、重排序、上下文压缩、多路召回这些,你会怎么选型和取舍?