第一步:确认答案是否在知识库中
排查方法:针对回答错误的 bad case,人工在知识库中搜索答案。若人工无法找到,说明问题出在数据源(如文档未完整导入、格式解析失败(PDF 表格、扫描件文字提取错误)、知识库未及时更新等),需优先解决数据源问题,否则后续优化无效。
第二步:检查 chunking 是否切碎答案
问题表现:
- chunk size 过小导致语义不完整(如退货政策被切分为条件和流程两个 chunk,相关性评分低);
- chunk size 过大导致多个话题混杂,相关性稀释。
排查方法:查看 recall 失败的 case 对应的 chunk,若答案被切断或淹没在无关内容中,需调整 chunking 策略。
第三步:判断 query 与 document 是否存在语义鸿沟
问题表现:
- 用户提问与文档表述差异大(如用户问 “手机发烫怎么办”,文档写 “设备温度异常的处理方案”),导致 embedding 模型无法捕捉语义关联。
解决方法:query 改写 / 扩展、HyDE(让 LLM 生成假设性回答再检索)、混合检索(向量检索 + 关键词检索,互补语义相似与精确匹配)。
第四步:评估 embedding 模型是否适用
问题表现:
- 通用 embedding 模型在垂直领域(医疗、法律、金融等)因专业术语多可能表现不佳。
排查方法:构建小规模评测集(标注 query 与对应正确文档),计算 recall。若 recall 低,可通过正负样本微调模型或更换领域适配的模型。
第五步:排查排序问题
问题表现:
- 相关文档被检索到但排序靠后(如取 top5 时相关文档排第 8)。
解决方法:二次精排,初始检索放宽范围(取 top20 或 top50),用 cross encoder 对候选文档重新打分后截取 top5。注意:cross encoder 精度高但计算量大,仅适合小范围候选精排,不适合全库检索。
排查链路总结
按 “数据源→chunking→query 理解→embedding 模型→排序” 从上游到下游逐个排查,每个环节需明确诊断方法和对应解法。面试官关注的是系统性定位瓶颈的排查思维,而非单纯罗列优化技巧。