最近在做一个企业知识库问答,流程是先用BGE-M3做向量检索,再丢给LLM生成答案。因为领域术语比较多,检索召回一直不太准,我就想着用业务数据微调一下Embedding模型。数据集大概构造了八千多条query-positive-negative三元组,用sentence-transformers的MultipleNegativesRankingLoss训了三个epoch。结果微调完之后,在自建的评测集上Recall@5涨了大概六七个点,但端到端的问答准确率反而掉了。排查发现是模型把一些语义相近但实际不相关的文档也召回了,噪声变多,LLM被带偏。想问下这种情况是微调数据构造有问题,还是损失函数选得不对?有没有人踩过类似的坑,一般怎么定位和解决?