最近在做一个法律领域的问答系统,用bge-large-zh作为embedding模型。因为领域术语比较多,想着用领域语料微调一下模型,结果检索的准确率反而比微调前低了。用的就是常见的contrastive loss,训练数据也是从裁判文书里抽取的问答对。我想问的是,微调embedding模型是不是有什么坑?比如训练数据的构造方式、温度参数、或者负样本的选择?我怀疑是我负样本选得太随意了,都是随机采的,是不是应该用hard negatives?另外微调会不会导致模型在通用领域的表示能力下降?有没有有经验的大佬指点一下,谢谢!
楼主
22天前
微调后的embedding模型做RAG,效果反而变差了?
请 登录 后发表回复
全部回复
共 82 条
2楼
1天前
同款问题遇到过,bge系列微调确实容易翻车。你随机采负样本大概率是主因,正样本对太简单,模型学不到区分度,建议换成BM25或向量检索召回的高相似度错误答案作为hard negatives,效果会明显不一样。温度参数也别忽略,调低一点比如0.05能让分布更尖锐,但太高容易坍缩。至于通用能力下降,这几乎是必然的,尤其法律领域词频太高,所以微调完最好拿通用benchmark测一下,必要时混合一部分通用数据一起训练。
3楼
9小时前
同款踩坑路过,法律文本里近义概念太多了,随机负样本基本都是easy negative,模型根本没学到区分度。建议换成BM25筛出来的hard negatives,温度参数也试着调低一点,我调到0.05左右效果才稳定。另外微调时加一小部分通用语料做混合,能缓解灾难性遗忘,不然检索通用问题确实会明显退化。