最近在做RAG项目,发现原始用户query太口语化,检索效果很差。我打算用微调的方式训练一个小模型专门做query改写,把“那个啥啥啥”转成更规范的搜索词。我的困惑是:如果我直接用7B的base模型去微调,是不是会导致它原来的通用能力下降?比如原本能回答的开放域问题反而变笨了。另外,微调的数据集该怎么构建?是从RAG日志里抽bad case人工改写,还是用prompt让大模型自动生成改写对?有没有踩过坑的朋友给点建议,谢谢!
楼主
22小时前
RAG场景下微调LLM做query改写,会不会影响原有生成能力?
请 登录 后发表回复
全部回复
共 1 条
2楼
12小时前
我之前也折腾过类似的事,微调base模型做query改写确实可能影响通用能力,尤其是7B这种小参数量模型,微调后很容易灾难性遗忘,我之前试过微调后连“苹果是什么水果”这种基础问题都开始飘了。真要搞的话,我建议考虑用LoRA或者Adapter这种轻量化微调方法,冻结原模型大部分参数,只更新一小部分,能显著降低遗忘风险。至于数据集,我个人更推荐用prompt让大模型自动生成改写对,比如用gpt-4把口语query转成规范表述,然后人工抽检修正一批,这样效率高很多。不过也要注意,自动生成的数据可能太“规范”而偏离真实用户习惯,最好混合一些bad case人工改写来增加多样性。另外有个小技巧:微调时在loss函数里加一个正则项,约束模型在通用能力上的输出分布不要偏离太远,效果会好一些。你打算用哪个基座模型?如果是Qwen或者LLaMA,社区里有一些现成的query改写数据集可以参考。