遲來!解讀Qwen開源的Embedding模型中的細(xì)節(jié)!附實(shí)測(cè)結(jié)果!
上周五,Qwen團(tuán)隊(duì)又開源了Embedding模型,真是人民需要什么,它開源什么呀!
現(xiàn)在好了,文本、多模態(tài)、embedding都齊了,別人沒得玩了!
上周朋友就問,作為Qwen課代表的我,咋沒分享Qwen3-Embedding,哈哈哈哈!
這不就來了嘛,主要是前兩天我還在測(cè)試。
Embedding模型的測(cè)試,并不像LLM那樣直觀,給了問題之后直接看答案就可以分辨出好壞,Embedding模型還是要測(cè)試在某個(gè)數(shù)據(jù)集下整體得召回率。
雖然這次Qwen開源了3個(gè)尺寸的模型,0.6B、4B和8B,但對(duì)于我個(gè)人來說,0.6B尺寸還可以,4B、8B為向量還是有點(diǎn)重的,工業(yè)使用上對(duì)召回速度要求還是比較高的。
PS:不知道大家真實(shí)使用時(shí)是不是,開源的Embedding,雖然很多榜單效果很猛,但是還在用之前的BGE-M3模型,哈哈哈。
所以我這兩天也是在自己內(nèi)部數(shù)據(jù)集上實(shí)測(cè)了一把,確實(shí)有提高,但沒有那么多,top30的召回率高了1%左右,但是top5沒什么明顯提高。
但是Embedding模型需要調(diào)一下Instruct,這個(gè)很重要,敲重點(diǎn)!
因?yàn)檫@個(gè)內(nèi)部數(shù)據(jù)沒法給大家看,我又找了個(gè)比較新的領(lǐng)域數(shù)據(jù),測(cè)了一下,主要是bge-m3和Qwen3-Embedding0.6B,尺寸差不多。
模型結(jié)構(gòu)
Qwen3 Embedding系列模型有兩種,Embedding模型和Reranking模型,模型尺寸均涉及0.6B、4B、8B三種,是由Qwen3基模(不確定是Base還是Instruct)初始化而來。
Embedding模型接受單文本輸入,將最后一層的[EOS] Token 的隱藏狀態(tài)向量,作為文本的語義向量,支持MRL動(dòng)態(tài)維度,但最小為32維;也支持根據(jù)不同任務(wù)定制輸入指令。 Reranking模型接受文本對(duì)輸入,經(jīng)過chat template拼接后,輸入到模型中,預(yù)測(cè)下一個(gè)Token是“是”或“否”的概率,來判斷兩個(gè)文本的相關(guān)性。
模型訓(xùn)練
Embedding模型由3階段組成,
- 第一階段,利用150M 個(gè)弱監(jiān)督合成Pair對(duì)數(shù)據(jù),對(duì)比學(xué)習(xí)預(yù)訓(xùn)練;
- 第二階段,從150M 個(gè)弱監(jiān)督數(shù)據(jù)中篩選12M 個(gè)高質(zhì)量Pair對(duì)數(shù)據(jù),再加上7M榜單數(shù)據(jù),進(jìn)行二次訓(xùn)練;
- 第三階段,模型融合,將第二階段的多個(gè)checkpoint進(jìn)行參數(shù)融合(之前比賽的策略,現(xiàn)在已經(jīng)成為了常用手段)。
訓(xùn)練方法就是InfoNCE,就是硬負(fù)例和batch內(nèi)負(fù)例,模型訓(xùn)練用的LoRA 微調(diào),就不多說了。
這里想說的一點(diǎn)是,Qwen-Embedding模型與常規(guī)的方法不一樣,它的數(shù)據(jù)全部都是LLM合成數(shù)據(jù)。
這里沒想通的是為啥不利用開源數(shù)據(jù),一般之前的做法,都是開源數(shù)據(jù)+合成數(shù)據(jù)。難道是開源數(shù)據(jù)的質(zhì)量不行,不好過濾?由于沒有相關(guān)的對(duì)比實(shí)驗(yàn),所有這個(gè)部分暫不清楚。
不過合成數(shù)據(jù)這個(gè)部分,Qwen應(yīng)該是下來大功夫的,我之前做,就是寫幾個(gè)不同的模板,直接利用開源文本數(shù)據(jù)合成一些query,構(gòu)成pair對(duì)。
Qwen3-Embedding的數(shù)據(jù)合成,有個(gè)角色庫,每次從角色庫中利用模型找到最相關(guān)的5個(gè)角色,再利用不同角色生成數(shù)據(jù),還融合了Query類型(例如關(guān)鍵詞、事實(shí)、摘要、判斷)、長(zhǎng)度、難度、語言等信息。有點(diǎn)意思的,相比我10個(gè)固定的prompt,這種數(shù)據(jù)合成的方法,多樣性、質(zhì)量要好的多。
模板選擇
問題生成
第二階段高質(zhì)量Pair對(duì),是通過余弦相似度過濾過的,保留相似度大于0.7的數(shù)據(jù)。
Embedding模型效果如下,Qwen3-Embedding-0.6B多語言僅次于Gemini-Embedding,在單獨(dú)的英文、中文、Code上,跟開源Top gte-Qwen2-7B-instruct也有一拼;Qwen3-Embedding-4B、8B 模型優(yōu)于其他模型。
Reranker就不說了,直接看測(cè)試結(jié)構(gòu)吧,不過訓(xùn)練只有2、3兩個(gè)階段。
領(lǐng)域數(shù)據(jù)評(píng)測(cè)
因?yàn)閮?nèi)部數(shù)據(jù)沒法公開,為了快速實(shí)驗(yàn),隨便找了一個(gè)中文農(nóng)林牧漁領(lǐng)域數(shù)據(jù)集,做個(gè)簡(jiǎn)單測(cè)試,涵蓋農(nóng)業(yè)、林業(yè)、畜牧業(yè)、漁業(yè),數(shù)據(jù)量 900K+。
HF:Mxode/Chinese-QA-Agriculture_Forestry_Animal_Husbandry_Fishery
將回答作為文檔,去重后800K+,random了1k個(gè)問題,沒測(cè)全。
只是簡(jiǎn)單測(cè)試,不同領(lǐng)域數(shù)據(jù)不同,使用時(shí)還需自己實(shí)測(cè)!
寫在最后
2023年的時(shí)候,就一直在優(yōu)化embedding模型,因?yàn)槟銜?huì)發(fā)現(xiàn)rag落地過程當(dāng)中,有很多時(shí)候,不是LLM不行,是根本沒有檢索到合適的文檔、或沒檢索全所有的文檔內(nèi)容。
當(dāng)然不止RAG,需要進(jìn)行過濾的模塊,都會(huì)有Embedding模型,比如Agent里,100個(gè)工具,全放到提示詞中也不是不可以,但考慮成本和模型本身能力,是不是通過檢索過濾掉一些無用的會(huì)更好呢?
Embedding模型現(xiàn)在算法上已經(jīng)沒有什么好的優(yōu)化手段了,基本上全靠基模,和構(gòu)造的數(shù)據(jù)了。
本文轉(zhuǎn)載自???NLP工作站???,作者:NLP工作站
