如果 RAG 检索结果不相关,你会从哪些环节排查?

如果 RAG 检索结果不相关,你会从哪些环节排查?
面试问到这道题,考察的是你能不能系统性地定位 RAG 问题。说白了就是:检索效果不好,你从哪儿下手查?这道题答案不唯一,但核心思路是一样的——按"检索→生成→系统"的顺序逐层排查。
下面给你拆开讲。
板块1:像"医生看病"一样理解 RAG 排查思路
先把 RAG 当成一个完整 pipeline,每个环节都可能出问题。常见的 RAG 流程长这样:用户提问 → 查询改写 → 分块 → 嵌入向量 → 向量检索 → 上下文组装 → LLM 生成。
排查思路很简单:先确认问题出在哪个环节。
类比一下:就像去医院看病,你得先挂号分诊,确认是外科还是内科,再针对性检查。RAG 排查也是这个逻辑——是检索端的问题,还是生成端的问题,或者是系统层面的问题。
检索端问题:用户问"A",检索回来的内容都是"B"、"C",完全不沾边。
生成端问题:检索回来的内容是对的,但模型生成的时候跑偏了,开始瞎编。
系统层问题:单独看每个环节都正常,但组合起来效果就是差,可能是评估体系不完善,或者架构设计有问题。
先把问题定位到哪一段,后面的排查才有方向。

板块2:检索环节——四招锁定问题源头
大多数 RAG 问题出在检索端。检索想成"图书馆找书",查不到可能是:问得太模糊、书架分类乱、索引标签不准、搜索工具弱。
对应到 RAG,就是四个排查方向:
1. 查询层面——问得清不清楚
用户提问可能太口语化、太模糊、或者缺少关键信息。比如用户问"那个政策怎么说的",系统根本不知道是哪个政策。
排查方向:查询改写、查询扩展、同义替换。把用户的口语问法转成检索友好的表达。
2. 分块策略——切得合不合理
分块太大,关键信息被淹没;分块太小,上下文割裂。
排查方向:调整分块大小(256、512、1024 tokens)、重叠比例、考虑语义分块而不是固定长度分块。
3. 嵌入优化——向量准不准确
Embedding 模型可能对特定领域词汇理解不准确。比如用通用模型处理医疗、法律文档,很多专业术语的向量表示就会失真。
排查方向:领域数据微调 Embedding、混合 Embedding(不同类型内容用不同模型)。
4. 检索技术——搜得全不全面
单纯向量检索有局限,高维空间中相似度计算容易受到噪声影响。
排查方向:混合搜索(向量检索 + 关键词检索 BM25)、重排序(Rerank)、元数据过滤。


板块3:生成环节——让模型"听话地读答案"
检索没问题,但生成跑偏,这种坑最容易被忽视。就像你找到了参考资料,结果抄错了答案。
生成环节三个排查点:
1. 模型本身的问题
LLM 可能没有充分学习到"以检索结果为依据"的优先级。模型更相信自己训练时的知识,而不是你喂给它的上下文。
排查方向:用强化学习或微调,让模型学会"看上下文答题";或者用 RAG-FLAN 这样专门为 RAG 训练的模型。
2. 上下文组装的问题
检索结果太多或太少、上下文顺序混乱、重要信息被截断,都会影响生成质量。
排查方向:限制上下文 token 数量、关键信息放前面、检索结果排序(用 Rerank 把最相关的放前面)。
3. 提示词约束不够
模型生成太自由,没有强约束就会hallucinate。
排查方向:提示词里明确要求"仅基于以下内容回答"、"不知道就说不知道"、结构化输出格式。

板块4:系统级排查——让 RAG 跑得更稳更准
单独环节调优还不够,有时候问题出在系统架构层面。
性能优化
检索太慢、生成太慢,整体体验就差。可以做分层检索(粗排+精排)、结果缓存、异步生成。
评估体系
没有评估就没有优化方向。RAG 评估要关注几个维度:检索质量(召回率、相关性)、生成质量(准确性、连贯性、幻觉率)、响应速度。
可以用 RAGAS 这样的框架,自动化评估整个 pipeline。
架构升级
前沿方向是联合训练——让检索器和生成器一起训练,互相适应。单独的检索器和生成器可能各自最优,但组合起来不是最优的。联合训练能打破这个瓶颈。

面试怎么答?
基础版:
排查 RAG 检索不相关,我按"检索→生成→系统"三层来定位。检索端查四个点:查询改写、分块策略、嵌入优化、混合搜索。生成端看上下文组装和提示词约束,看模型有没有充分参考检索结果。系统层看性能优化和评估体系。分层排查,逐个验证。
加分版:
可以引用 RAG 失败的七大场景框架:缺少相关文档、检索不到、排名靠后、上下文截断、信息提取错误、格式错误、精度不够。从这七个维度覆盖问题全貌。另外提到嵌入微调的领域适配和联合训练是当前优化趋势。
一句话总结
RAG 排查的核心是分层定位:先确认问题在检索还是生成,再逐个环节验证,最后从系统层面优化整体效果。
