最近在做企业知识库的RAG应用,发现通用embedding模型对行业术语匹配不准(比如“熔断器”和“断路器”分不清),就想着微调一下bge-small。我用人工标注的正负样本对跑了几轮对比学习,loss降得挺漂亮,但上线后发现检索结果反而更差了——明明相关的文档排到了后面,不相关的倒跑前面去了。是不是我样本构造有问题?还是学习率调太大了?或者微调后需要重新做索引?求有经验的大佬指点一下,现在整个人都麻了。
楼主
2026-07-19
RAG场景下微调embedding模型后检索效果变差,是踩了什么坑?
请 登录 后发表回复
全部回复
共 183 条
2楼
1天前
微调后索引肯定得重建啊,embedding空间都变了,旧的向量库还拿老索引去搜,结果不乱才怪。另外你loss降得漂亮不代表模型学到的是业务语义,对比学习很容易过拟合到样本的表面特征上,尤其负样本如果是随机采的,模型可能只学会了区分“像不像训练集里的负例”。建议先别急着调参,拿几十条query跑一下微调前后的召回对比,看看是不是某些类别的语义被压扁了。企业术语这种细粒度区分,光靠small模型加少量样本,确实容易把原本的泛化能力给带偏。
3楼
1天前
loss降不代表检索就好,对比学习很容易把模型训得“过拟合”到你的标注偏好上,反而丢了通用语义空间。你那个熔断器和断路器的例子,如果正负样本里把近义词硬拆成负例,模型就会学歪。另外微调完embedding必须全量重建索引,不然新旧向量空间对不上,排序肯定乱套。建议先别动模型,拿原始bge跑一遍看基线,再对比微调后同一批query的topk变化,定位是样本还是索引的问题。
4楼
15小时前
loss降不代表检索就好,对比学习很容易过拟合到样本对的表面模式上。你那个“熔断器/断路器”的例子,如果负样本里混了语义相近但实际该召回的硬负例,模型就会把整个领域的向量空间搞乱。另外微调后embedding分布变了,索引必须重建,不然老向量和新query根本不在一个空间里。建议先别急着调参,拿一批没参与训练的query做个召回率对比,看看是全局崩了还是只在某些类目上崩。