如何系统地提升 RAG 的召回质量?
先用自己的话答,再看参考说法
60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。
别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。
参考内容当前已显示;开始口述后会暂时隐藏。
面试时怎么答
别用“换更大的 Embedding”概括答案。先建立真实问题与证据的评测集,再沿解析切块、查询理解、多路召回、融合重排、上下文打包逐层优化;每次只改一层,才能知道增益来自哪里。
面试官可能要求给优先级。此时先查零召回和数据问题,再处理排序,最后才调生成;因为生成模型无法使用没有进入上下文的证据。
可以这样答:
提升 RAG 召回质量要先有带证据标注的真实查询集,再定位瓶颈。文档侧检查解析、Chunk 和元数据;查询侧处理指代、改写与多意图;召回侧组合 BM25 和向量检索;候选充足后再用重排模型压低噪声。参数应通过分桶实验调整,并同时看 Recall@K、MRR、最终答案正确率和延迟。若相关文档根本没被召回,单改 Prompt 或生成模型不会解决问题。
核心回答
这是一道系统排查框架题。先建立可复现的评估集,把问题拆成“该召回的内容是否被找到”和“无关内容是否被过滤”。然后依次检查文档解析与切分、Query 改写、稀疏与稠密混合检索、元数据过滤,以及 Rerank。每次只改变一个环节,用 Recall@K、MRR、nDCG 和端到端答案正确率判断收益。
展开说明
可以按以下顺序排查:
- 数据质量:解析是否丢失表格、标题和层级关系,文档是否过期或重复。
- 切分策略:Chunk 是否包含完整语义,大小和重叠是否适合业务文本。
- Query 处理:补全指代、拆解多跳问题、生成多个检索表达。
- 召回策略:组合 BM25 和向量检索,针对专有名词保留关键词能力。
- 排序与过滤:用元数据缩小范围,再用 Cross-Encoder 或 LLM Rerank。
- 上下文组装:去重、合并相邻片段,把最相关证据放在更有效的位置。
工程实践
不要一开始就更换 Embedding 模型。很多召回问题来自解析错误、Chunk 粒度不当或评估集缺失。先建立错误分类表,通常比盲目调参更快找到瓶颈。
常见追问
- Chunk 越小,召回效果一定越好吗? 不一定。小块的主题更集中,却可能丢标题、定义和条件;应同时评估命中率与片段是否足够回答,而非只看相似度。
- 混合检索的分数如何融合? 可用 RRF 按排名融合,或在验证集上校准各路分数后加权;权重应按查询类型和端到端指标选择。
- 如何构造没有人工标注的评估集? 可从文档生成问题与引用作为弱标注,再做去重、难负例构造和人工抽检;最终仍需一小批真实查询黄金集防止合成偏差。
一句话复习
优化 RAG 要先评估和归因,再按数据、Query、召回、重排的链路逐层改进。
参考资料
评论与补充
评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。
正在连接站内评论服务…
正在加载评论…
还没有评论,你可以先写下自己的理解或追问。