Microsoft | 利用LLM本身訓練SoTA embedding模型
大家好,我是HxShine
今天分享一篇Microsoft公司的一篇文章,Title: Improving Text Embeddings with Large Language Models:使用大型語言模型改善文本嵌入。
這篇文章探索了直接利用LLM來做embedding模型,其只需要利用合成數據和少于1000次的訓練步驟就能獲得高質量文本表征。
該方法分為兩步:1)利用LLM生成文本embedding任務合成數據集:利用專有的大型語言模型(LLM)生成近100種語言的數十萬個文本嵌入任務的多樣化合成數據。2)對比損失微調:使用標準對比損失對開源的decoder-only LLM進行微調。
該方法特點總結如下:1)充分挖掘了大模型生成數據多樣性還不錯的特點,利用這個特點,可以利用LLM生成多樣性比較好、類型豐富、以及多語言的文本表征模型數據集。2)相對于之前例如SimCSE等模型,需要在大量語料上繼續做預訓練以及微調,本文發現自回歸的LLM只需少量監督數據就能獲得一個非常不錯的效果。3)多語言的檢索能力也不錯。
一、概述
Title:Improving Text Embeddings with Large Language Models
論文地址:???https://arxiv.org/abs/2401.00368??
1 Motivation
- 現有的文本嵌入方法依賴于多階段預訓練和少量標注數據的微調【大量數據->弱監督預訓練,少量標注數據->fine-tuning】,需要構建復雜的訓練流程,且數據集通常受限于任務多樣性和語言覆蓋范圍。
- 本文提出了一種新的方法:利用大型語言模型生成多樣化的合成數據,通過簡單但有效的訓練步驟改善文本嵌入的質量,特別在多種語言環境中效果非常不錯。
2 Methods
省流版總結:
- 合成數據生成:分兩步生成合成數據,第一步生成檢索任務主題,第二步根據主題生成問題、正樣本、負樣本。其特點是生產的檢索任務多樣性不錯、同時還可以生成多語言的數據集。
- 對比學習訓練:利用常規的對比學習loss InfoNCE函數訓練模型,只是用合成數據,只需要1k步左右訓練就能有一個不錯的效果,疊加監督數據效果更佳 。
2.1 利用LLM生成訓練樣本
通常訓練embedding模型強烈依賴正負樣本數據,標注成本比較高。這里本文嘗試利用專有LLM(如GPT-4)生成近100種語言的多樣化合成數據,用于訓練embedding模型。
背景:使用LLM合成數據,增強文本嵌入模型的多樣性和魯棒性。
方法:設計了多種任務類型和語言的模板,通過LLM生成合成數據。
特點: 能夠覆蓋廣泛的任務和語言類型,提高數據的多樣性和質量。
1)利用LLM列舉檢索任務:
2)針對每個任務,利用LLM按照要求生成訓練樣本:
2.2 模型訓練
要點一:需要指定任務task_definition,輸入用戶問題。其中合成的數據用2.1中第一步LLM生成的任務定義,其他數據集人工設置固定的模版。
要點二:相似度計算方式為cos相似度,并結合溫度系數超參數來調節具體值。
要點三:Loss函數為標準的InfoNCE函數,其懲罰了負樣本,提升正樣本的相似度分數。
3 Conclusion
結論1: 使用LLM生成的合成數據可以顯著提升文本嵌入的性能。
結論2: 方法在多語言環境下表現良好,特別是在BEIR和MTEB基準上。
結論3: 本方法提供了一種更高效的文本嵌入訓練策略,避免了復雜的多階段訓練。
4 Limitation
- 盡管在多種語言中表現良好,但對低資源語言的支持仍有待改進,利用LLM做文本embedding成本還比較高。
- 未來工作將探索使用開源LLM生成合成數據,并提高模型在長文本處理方面的效率。
二、詳細內容
2.1 合成數據的統計分析
結論1: 生成了500k個樣例,涵蓋了150k個獨特指令。包括非對稱任務(query和doc不對稱):short-long代表query是短文本,doc為長文本,其他可以反推。另一類任務是對稱任務(query和doc語義相近,但是不對等):sts代表單語言語義相似度計算、bitext代表雙語言檢索任務。
結論2: 生成數據中覆蓋93種語言。語言多樣性不錯,英語占大多數,其他語言占比也不少。
2.2 模型微調與評估
試驗設置:基座模型為Mistral-7b,微調方法為Lora,rank=16。
結論1: "E5mistral-7b + full data"模型在MTEB基準上超過先前最佳模型2.4分。
結論2: 使用混合數據微調的模型在MTEB基準上取得了最高平均得分。
結論3: w/synthetic data only代表僅使用合成數據訓練的模型表現仍然競爭力十足。
結論4: 該方法的實驗結果顯示了生成語言建模和文本嵌入之間的潛在聯系。
2.3 與商業閉源模型對比
結論:在BEIR Retrieval數據集和MTEB數據集都取得了SoTa。
2.4 LLM只需要少量數據做微調即可取得比較好的效果
結論一:傳統數據利用大量數據結合對比學習做無監督訓練可以帶來不錯的提升。
結論二:經過大量語料訓練的自回歸LLM模型已經不需要繼續做預訓練了,只需要少量的數據微調即可取得比較好的效果。
2.5 多語言任務上也非常有競爭力
結論一:高資源(數據量多)任務例如英語,效果比之前的mE5模型效果好,低資源任務效果相對mE5也非常有競爭力。
2.6 消融實驗:instruction設置比較關鍵
結論一:基座模型選擇也比較重要,選擇LLaMA-2的基座模型比Mistral-7b作為基座模型差。
結論二:instruction的設置也非常重要,對最終結果的影響可能差4個點以上。
2.7 context長度對檢索質量的影響:4k左右上下文文本表征都還不錯,隨后效果急劇下降。
結論:引入了一項名為個性化密碼檢索的新型合成任務,此任務需要在長上下文中將密鑰信息編碼到嵌入中。通過更改圖5中的滑動窗口大小和RoPE旋轉底座來比較不同變體的性能。結果顯示,帶有4k滑動窗口的默認配置在4k token數達到100%的準確性,但隨著上下文長度的增長,準確性會迅速下降。
三、總結
結論1:利用LLM生成的合成數據可以顯著提升文本嵌入的性能。 這種方法在處理多種語言時尤其有效,能夠生成高質量、多樣化的合成數據。
結論2:利用LLM訓練Embedding模型可以非常高效。 與現有多階段方法相比,其只需要少于1000次的訓練步驟就可以拿到比較好的效果,而現有方法可能要先利用大量數據做自監督訓練,然后再使用有監督數據訓練,效率不高。
結論3:本文利用LLM做embedding是一個突破,但產業界還不太適用。 本文首次探索LLM做embedding,效果還不錯,但模型大,推理成本也高,產業界實用性不高(bge相關模型只有400M左右,本文方法模型達到7B以上),后續可以探索LLM生成和挖掘正負樣本數據,利用傳統方法例如雙塔+SimCSE系列等模型進行訓練,然后再應用到產業界。
本文轉載自 ??NLP PaperWeekly??,作者: NLP PaperWeekly?
