
RAG系统答不准的常见问题检索侧五类、生成侧四类问题逐一排查事实上RAG就两段关键链路离线构建索引、在线检索生成。答案不好要么是检索崩了要么是生成崩了检索侧问题文档质量差噪声、乱码、格式混乱chunk粒度不合理太粗或者太细、语义割裂Embedding选型不当中文弱、领域不匹配召回不足相关文档没做检索到缺少Rerank召回结果精度不足生成侧问题Prompt拼接有问题格式混乱、指令不清晰上下文干扰无关chunk稀释注意力缺少引用约束模型超出资料自由发挥模型理解力弱无法从资料推断答案检索侧五类常见问题文档质量差这是最根本的问题缺页是最容易被忽视掉的如果输入文档本身是扫描件OCR的乱码、格式混乱的PDF解析结果、或者充满模板噪声的HTML那么再好的Embedding模型也无法从噪声中提取有效语义。向量化的质量决定了检索出来的质量典型症状检索结果里出现大量无意义的片段应对思路:在chunking之前加强文档预处理譬如清除页眉页脚、过滤模板噪声、对低质量文档做专项清洗甚至人工校对Chunk粒度不合理Chunk太小会导致每个片段只有一句话语义不完整Embedding向量无法准确表达这段内容的主题导致召回时命中了相关话题但内容不完整Chunk太大会导致每个片段包含多个话题向量表示变成多主题的混合和Query的语义匹配变得模糊召回精准度下降典型症状用相同的中文提问换了说法之后检索结果差异巨大同义句子得分很低应对思路评估几个候选模型在业务数据上跑召回率对比实验选择最适合当前领域的模型召回不足即便Embedding模型本身没有问题也可能因为索引数据问题导致相关文档根本没有被检索到。常见原因包括文档更新了但是索引没有及时重建部分文档在入库时被错误过滤掉、top-k设置太小以至于相关内容被排在k之外典型症状明明知识库里有答案但是RAG系统给不出手动搜搜能找到自动检索找不到缺少Rerank初步召回的top-K片段未必按照真实相关性排序—向量相似的和内容与问题的真实相关性是两个不同的维度有些片段向量很近但未必精准回答了用户的具体问题典型症状最终答案看起来相关但是不准确答案方向对但是细节错Context里面明明有答案但是模型拼接出来的回答不够准确应对思路在召回后加入Cross-Encoder-Rerank让模型对QueryChunk对进行精细评分只保留真正相关度的结果传入LLM生成侧四类常见问题Prompt拼接有问题这是工程上很容易被忽视的问题RAG系统把检索到的chunk拼进Prompt里面但是拼接方式不当—比如多个chunk之间没有分隔符、来源信息缺失、指令和内容混在一起、或者指令表述模糊这些都会让模型难以正确理解输入典型症状模型回答时把多个文档里面的内容混淆了或者对如果资料中没有答案请说不知道这类指令的遵从率很低应对思路明确区分“系统指令”和“参考资料”为不同来源的内容加分隔符并在指令里明确告诉模型如何处理资料不足的情况上下文干扰召回的chunk里面不是每一条都和用户问题高度相关低相关度的chunk混入Context会稀释模型的注意力让模型在大量的无关信息中“迷失”最终给出的答案受到这些干扰项的影响。这个问题在没有Rerank的系统里面尤其突出也和top-K设置过大有关典型症状答案里面混入了一些奇怪的、不相关的细节或者模型给出了一个综合了多个不相关来源的平均答案应对思路用Rerank过滤低相关chunk减少传入Context的chunk数量在Prompt里面明确要求模型只根据提供的资料作答缺少引用约束如果Prompt没有明确限制模型“只基于提供的资料作答”模型会自然把自身参数里面的知识和检索到的内容混合起来回答—这会引入幻觉让但看起来比实际上更完整但准确性存疑应对思路在系统Prompt里面加入明确的引用约束比如请严格根据以下资料回答资料中没有的内容请明确说明无法回答并要求模型在答案里面标注来源模型理解能力不足即便检索结果质量很高模型自身的推理能力也会成为瓶颈尤其是当答案需跨越多个chunk进行综合推断、或者问题本身需要复杂的逻辑推理时。这类问题在使用小模型时尤其明显应对思路对于推理密集型问题升级到推理能力更强的模型优化Prompt明确要求逐步推导或者通过Query拆解把复杂问题分解成多个简单检索任务如何系统地诊断RAG问题第一步判断是检索问题还是升成问题最简单的方法手动查看检索结果。把用户的问题直接查向量库看看返回的top-K chunk里面有没有包含正确答案如果top-K chunk里面有正确答案但最终生成的回答是错误的-生成侧问题如果top-K chunk里面根本没有正确答案-检索侧问题第二步在检索侧进一步定位召回率评估对一批“已知有答案”的问题统计正确chunk是否出现在top-K结果里如果Recallk低进一步分析是Embedding问题还是文档覆盖问题检索结果质量评估查看top-k结果的相似度分数分布—如果分数普遍很低说明Embedding语义空间不匹配如果分数高但是内容无关说明Embedding模型在当前领域理解有偏差第三步在生成侧进一步定位把正确的chunk手动构造Prompt喂给模型看模型能否正确回答如果可以说明是检索问题如果不行说明是Prompt设计或者模型能力问题