大家好,我是刘聪NLP。
上周五,Qwen团队又开源了Embedding模型,真是人民需要什么,它开源什么呀!
现在好了,文本、多模态、embedding都齐了,别人没得玩了!
上周朋友就问,作为Qwen课代表的我,咋没分享Qwen3-Embedding,哈哈哈哈!
这不就来了嘛,主要是前两天我还在测试。
Embedding模型的测试,并不像LLM那样直观,给了问题之后直接看答案就可以分辨出好坏,Embedding模型还是要测试在某个数据集下整体得召回率。
虽然这次Qwen开源了3个尺寸的模型,0.6B、4B和8B,但对于我个人来说,0.6B尺寸还可以,4B、8B为向量还是有点重的,工业使用上对召回速度要求还是比较高的。
PS:不知道大家真实使用时是不是,开源的Embedding,虽然很多榜单效果很猛,但是还在用之前的BGE-M3模型,哈哈哈。
所以我这两天也是在自己内部数据集上实测了一把,确实有提高,但没有那么多,top30的召回率高了1%左右,但是top5没什么明显提高。
但是Embedding模型需要调一下Instruct,这个很重要,敲重点!
因为这个内部数据没法给大家看,我又找了个比较新的领域数据,测了一下,主要是bge-m3和Qwen3-Embedding0.6B,尺寸差不多。
模型结构
Qwen3 Embedding系列模型有两种,Embedding模型和Reranking模型,模型尺寸均涉及0.6B、4B、8B三种,是由Qwen3基模(不确定是Base还是Instruct)初始化而来。
Embedding模型接受单文本输入,将最后一层的[EOS] Token 的隐藏状态向量,作为文本的语义向量,支持MRL动态维度,但最小为32维;也支持根据不同任务定制输入指令。 Reranking模型接受文本对输入,经过chat template拼接后,输入到模型中,预测下一个Token是“是”或“否”的概率,来判断两个文本的相关性。
模型训练
Embedding模型由3阶段组成,
- 第一阶段,利用150M 个弱监督合成Pair对数据,对比学习预训练;
- 第二阶段,从150M 个弱监督数据中筛选12M 个高质量Pair对数据,再加上7M榜单数据,进行二次训练;
- 第三阶段,模型融合,将第二阶段的多个checkpoint进行参数融合(之前比赛的策略,现在已经成为了常用手段)。
训练方法就是InfoNCE,就是硬负例和batch内负例,模型训练用的LoRA 微调,就不多说了。
这里想说的一点是,Qwen-Embedding模型与常规的方法不一样,它的数据全部都是LLM合成数据。
这里没想通的是为啥不利用开源数据,一般之前的做法,都是开源数据+合成数据。难道是开源数据的质量不行,不好过滤?由于没有相关的对比实验,所有这个部分暂不清楚。
不过合成数据这个部分,Qwen应该是下来大功夫的,我之前做,就是写几个不同的模板,直接利用开源文本数据合成一些query,构成pair对。
Qwen3-Embedding的数据合成,有个角色库,每次从角色库中利用模型找到最相关的5个角色,再利用不同角色生成数据,还融合了Query类型(例如关键词、事实、摘要、判断)、长度、难度、语言等信息。有点意思的,相比我10个固定的prompt,这种数据合成的方法,多样性、质量要好的多。
模板选择
问题生成
第二阶段高质量Pair对,是通过余弦相似度过滤过的,保留相似度大于0.7的数据。
Embedding模型效果如下,Qwen3-Embedding-0.6B多语言仅次于Gemini-Embedding,在单独的英文、中文、Code上,跟开源Top gte-Qwen2-7B-instruct也有一拼;Qwen3-Embedding-4B、8B 模型优于其他模型。
Reranker就不说了,直接看测试结构吧,不过训练只有2、3两个阶段。
领域数据评测
因为内部数据没法公开,为了快速实验,随便找了一个中文农林牧渔领域数据集,做个简单测试,涵盖农业、林业、畜牧业、渔业,数据量 900K+。
HF:Mxode/Chinese-QA-Agriculture_Forestry_Animal_Husbandry_Fishery
将回答作为文档,去重后800K+,random了1k个问题,没测全。
只是简单测试,不同领域数据不同,使用时还需自己实测!
写在最后
2023年的时候,就一直在优化embedding模型,因为你会发现rag落地过程当中,有很多时候,不是LLM不行,是根本没有检索到合适的文档、或没检索全所有的文档内容。
当然不止RAG,需要进行过滤的模块,都会有Embedding模型,比如Agent里,100个工具,全放到提示词中也不是不可以,但考虑成本和模型本身能力,是不是通过检索过滤掉一些无用的会更好呢?
Embedding模型现在算法上已经没有什么好的优化手段了,基本上全靠基模,和构造的数据了。
最后说一下,无论什么模型,都要看自己业务上的真实数据!!
PS:看到这里,如果觉得不错,可以来个点赞 、在看 、关注 。 给公众号添加【星标⭐️】不迷路!您的支持是我坚持的最大动力!
欢迎多多关注公众号「刘聪NLP」,加入交流群,交个朋友吧,一起学习,一起进步!