最近在做一个企业知识库问答,基础流程是 bge-m3 + 向量召回 + rerank + LLM。因为业务语料里有很多内部缩写和黑话,通用 embedding 召回率一直不太行,就想着用 LoRA 微调一下 embedding 模型。构造了大概 8000 条 query-passage 正样本,负样本用 in-batch 随机采的,跑了几个 epoch,loss 降得挺正常。但上线后发现问题:微调后的模型在内部黑话 query 上确实变好了,但通用问题的召回反而崩了,感觉是把原来预训练学到的语义空间给带偏了。想问下大家,RAG 里微调 embedding 是不是都容易过拟合业务数据?负样本到底该怎么构造才合理,需不需要混一些通用数据一起训?有没有踩过类似坑的朋友,求指点一下方向。