無需人工標注!LLM加持文本嵌入學習:輕松支持100種語言,適配數十萬下游任務
文本嵌入(word embedding)是自然語言處理(NLP)領域發展的基礎,可以將文本映射到語義空間中,并轉換為稠密的矢量,已經被廣泛應用于各種自然語言處理(NLP)任務中,如信息檢索(IR)、問答、文本相似度計算、推薦系統等等,
比如在IR領域,第一階段的檢索往往依賴于文本嵌入來進行相似度計算,先在大規模語料庫中召回一個小的候選文件集,再進行細粒度的計算;基于嵌入的檢索也是檢索增強生成(RAG)的關鍵組成部分,使大型語言模型(LLM)可以訪問動態的外部知識,而無需修改模型參數。
早期的文本嵌入學習方法如word2vec,GloVe等大多是靜態的,無法捕捉自然語言中豐富的上下文信息;隨著預訓練語言模型的出現,Sentence-BERT和SimCSE等方法在自然語言推理(NLI)數據集上通過微調BERT來學習文本嵌入。
為了進一步增強文本嵌入的性能和魯棒性,最先進的方法如E5和BGE采用了更復雜的多階段訓練范式,先對數十億個弱監督文本對進行預訓練,然后再在數個標注數據集上進行微調。
現有的多階段方法仍然存在兩個缺陷:
1. 構造一個復雜的多階段訓練pipeline,需要大量的工程工作來管理大量的相關性數據對(relevance pairs)。
2. 微調依賴于人工收集的數據集,而這些數據集往往受到任務多樣性和語言覆蓋范圍的限制。
3. 大多數現有方法采用BERT-style的編碼器作為主干,忽略了訓練更好的LLM和相關技術(諸如上下文長度擴展)的最新進展。
最近,微軟的研究團隊提出了一種簡單且高效的文本嵌入訓練方法,克服了上述方法的缺陷,無需復雜的管道設計或是人工構建的數據集,只需要利用LLM來「合成多樣化的文本數據」,就可以為為近100種語言的數十萬文本嵌入任務生成高質量的文本嵌入,整個訓練過程還不到1000步。
論文鏈接:https://arxiv.org/abs/2401.00368
具體來說,研究人員使用兩步提示策略,首先提示LLM頭腦風暴候選任務池,然后提示LLM從池中生成給定任務的數據。
為了覆蓋不同的應用場景,研究人員為每個任務類型設計了多個提示模板,并將不同模板生成的數據進行聯合收割機組合,以提高多樣性。
實驗結果證明,當「僅對合成數據」進行微調時,Mistral-7B在BEIR和MTEB基準上獲得了非常有競爭力的性能;當同時加入合成和標注數據進行微調時,即可實現sota性能。
用大模型提升文本嵌入
1. 合成數據生成
利用GPT-4等最先進的大型語言模型(LLM)來合成數據越來越受到重視,可以增強模型在多任務和多語言上的能力多樣性,進而可以訓練出更健壯的文本嵌入,在各種下游任務(如語義檢索、文本相似度計算、聚類)中都能表現良好。
為了生成多樣化的合成數據,研究人員提出了一個簡單的分類法,先將嵌入任務分類,然后再對每類任務使用不同的提示模板。
非對稱任務(Asymmetric Tasks)
包括查詢(query)和文檔在語義上相關但彼此不互為改寫(paraphrase)的任務。
根據查詢和文檔的長度,研究人員進一步將非對稱任務分為四個子類別:短-長匹配(短查詢和長文檔,商業搜索引擎中的典型場景),長-短匹配,短-短匹配和長-長匹配。
對于每個子類別,研究人員設計了一個兩步提示模板,首先提示LLM頭腦風暴的任務列表,然后生成一個具體的例子的任務定義的條件;從GPT-4的輸出大多連貫一致,質量很高。
在初步實驗中,研究人員還嘗試使用單個提示生成任務定義和查詢文檔對,但數據多樣性不如上述的兩步方法。
對稱任務
主要包括具有相似語義但不同表面形式的查詢和文檔。
文中研究了兩個應用場景:單語種(monolingual)語義文本相似性(STS)和雙文本檢索,并且為每個場景設計了兩個不同的提示模板,根據其特定目標進行定制,由于任務的定義比較簡單,所以頭腦風暴步驟可以省略。
為了進一步提高提示詞的多樣性,提高合成數據的多樣性,研究人員在每個提示板中加入了幾個占位符,在運行時隨機采樣,例如「{query_length}」代表從集合「{少于5個單詞,5-10個單詞,至少10個單詞}」中采樣的。
為了生成多語言數據,研究人員從XLM-R的語言列表中采樣「{language}」的值,給予高資源語言更多的權重;任何不符合預定義JSON格式的生成數據都將在解析過程中被丟棄;還會根據精確的字符串匹配刪除重復項。
2. 訓練
給定一個相關的查詢-文檔對,先使用原始查詢q+來生成一個新的指令q_inst,其中「{task_definition}」是嵌入任務的一句話描述的占位符。
對于生成的合成數據,使用頭腦風暴步驟的輸出;對于其他數據集,例如MS-MARCO,研究人員手動創建任務定義并將其應用于數據集中的所有查詢,不修改文件端的任何指令前綴。
通過這種方式,可以預先構建文檔索引,并且可以通過僅更改查詢端來自定義要執行的任務。
給定一個預訓練的LLM,將一個[EOS]標記附加到查詢和文檔的末尾,然后饋送到LLM中,通過獲取最后一層[EOS]向量來獲得查詢和文檔嵌入。
然后采用標準的InfoNCE loss對批內negatives和hard negatives進行損失計算。
其中?表示所有negatives的集合,用來計算查詢和文檔之間的匹配分數,t是一個溫度超參數,在實驗中固定為0.02
實驗結果
合成數據統計
研究人員使用Azure OpenAI服務生成了500k個樣本,包含150k條獨特指令,其中25%由GPT-3.5-Turbo生成,剩余由GPT-4生成,總共消耗了1.8億個token。
主要語言是英語,一共覆蓋93種語言;對于75種低資源語言,平均每種語言約有1k個樣本。
在數據質量方面,研究人員發現GPT-3.5-Turbo的部分輸出沒有嚴格遵循提示模板中規定的準則,但盡管如此,總體質量仍然是可以接受的,初步實驗也證明了采用這一數據子集的好處。
模型微調和評估
研究人員對預訓練Mistral-7B使用上述損失微調1個epoch,遵循RankLLaMA的訓練方法,并使用秩為16的LoRA。
為了進一步降低GPU內存需求,采用梯度檢查點、混合精度訓練和DeepSpeed ZeRO-3等技術。
在訓練數據方面,同時使用了生成的合成數據和13個公共數據集,采樣后產生了約180萬個示例。
為了與之前的一些工作進行公平比較,研究人員還報告了當唯一的標注監督是MS-MARCO篇章排序數據集時的結果,還在MTEB基準上對模型進行了評估。
主要結果
下表中可以看到,文中得到的模型「E5mistral-7B + full data」在MTEB基準測試中獲得了最高的平均分,比之前最先進的模型高出2.4分。
在「w/ synthetic data only」設置中,沒有使用標注數據進行訓練,但性能仍然很有競爭力。
研究人員還對幾種商業文本嵌入模型進行了比較,但由于這些模型缺乏透明度和文檔,因此無法進行公平的比較。
不過,在BEIR基準上的檢索性能對比結果中可以看到,訓練得到的模型在很大程度上優于當前的商業模型。
多語言檢索
為了評估模型的多語言能力,研究人員在MIRACL數據集上進行了評估,包含18種語言的人工標注查詢和相關性判斷。
結果顯示,該模型在高資源語言上超過了mE5-large,尤其是在英語上,性能表現更出色;不過對于低資源語言來說,該模型與mE5-base相比仍不理想。
研究人員將此歸因于Mistral-7B主要在英語數據上進行了預訓練,預測多語言模型可以用該方法來彌補這一差距。