wordpress加一個(gè)字段seo外鏈推廣
文章目錄
- Jina Embedding: 從v1到v3
- Jina Embedding v1
- 數(shù)據(jù)集準(zhǔn)備
- 訓(xùn)練過(guò)程
- Jina Embedding v2
- 預(yù)訓(xùn)練修改版BERT
- 在文本對(duì)上微調(diào)
- 在Hard Negatives上微調(diào)
- Jina Embedding v2 雙語(yǔ)言
- 預(yù)訓(xùn)練修改版BERT
- 在文本對(duì)上微調(diào)
- 用多任務(wù)目標(biāo)微調(diào)
- Jina Embedding v3
- 預(yù)訓(xùn)練
- 在文本對(duì)上微調(diào)
- 訓(xùn)練任務(wù)相關(guān)的適配器
- 分類(lèi)適配器
- 文本匹配適配器
- Separation適配器
- 非對(duì)稱(chēng)檢索適配器
- 參考資料
Jina Embedding: 從v1到v3
基座模型 | 支持語(yǔ)言 | 模型大小 | 編碼長(zhǎng)度 | 向量維度 | 下載鏈接 | |
---|---|---|---|---|---|---|
Jina Embedding v1 | T5 | 英語(yǔ) | 14M/35M/110M/330M | 512 | 512/512/768/1024 | huggingface |
Jina Embedding v2 | BERT | 英語(yǔ) | 33M/137M/435M | 8192 | 512/768/1024 | huggingface |
Jina Embedding v3 | XLM-RoBERTa | 多語(yǔ)言 | 572M | 8192 | 1024(可變大小) | huggingface |
Jina Embedding v1
jina embedding v1 對(duì)應(yīng)的論文為2023年7月的《Jina Embeddings: A Novel Set of High-Performance Sentence Embedding Models》,在這篇論文里強(qiáng)調(diào)了數(shù)據(jù)清洗在數(shù)據(jù)集準(zhǔn)備過(guò)程中很重要,一個(gè)更小但質(zhì)量高的數(shù)據(jù)集比一個(gè)很大但是質(zhì)量差的數(shù)據(jù)集訓(xùn)練的模型效果更好。
數(shù)據(jù)集準(zhǔn)備
數(shù)據(jù)集來(lái)源包括公共數(shù)據(jù)集和自有數(shù)據(jù)集。
在數(shù)組的組織方式上,分為數(shù)據(jù)對(duì)和三元組,根據(jù)源數(shù)據(jù)集的類(lèi)型分別采用不同的數(shù)據(jù)提取方法,比如QA數(shù)據(jù)集用問(wèn)題作為query字符串,用答案作為目標(biāo)字符串。
- 數(shù)據(jù)對(duì),記為 ( q , p ) ∈ D pairs (q, p) \in D_{\text{pairs}} (q,p)∈Dpairs?,每一個(gè)數(shù)據(jù)對(duì)包括query字符串q和相關(guān)的目標(biāo)字符串p。
- 三元組,記為 ( q , p , n ) ∈ D triplets (q,p,n) \in D_{\text{triplets}} (q,p,n)∈Dtriplets?,每一個(gè)三元組包括了query字符串q和一個(gè)匹配字符串p (positive) 和 不匹配字符串n (negative)
在準(zhǔn)備數(shù)據(jù)對(duì)時(shí),進(jìn)行如下的清洗步驟:
- 去重(De-Duplication):用hash函數(shù)來(lái)識(shí)別去掉重復(fù)的數(shù)據(jù)對(duì)。在檢查重復(fù)數(shù)據(jù)之前將空格字符串歸一化,并進(jìn)行大小寫(xiě)轉(zhuǎn)換。
- 語(yǔ)言過(guò)濾(Language Filterring):用fasttext-language-identification模型只保留英文數(shù)據(jù)。
- 一致性過(guò)濾(Consistency Filtering):去掉相似性比較低數(shù)據(jù)對(duì)。用all-MiniLM-L6-v2 model模型來(lái)進(jìn)行一致性過(guò)濾:從 D pairs D_{\text{pairs}} Dpairs?數(shù)據(jù)集中隨機(jī)采樣1M個(gè)數(shù)據(jù)對(duì) ( q i , p i ) i (q_i, p_i)_i (qi?,pi?)i?,并為它們生成embedding。對(duì)于數(shù)據(jù)集中的每一個(gè)數(shù)據(jù)對(duì) ( q , p ) ∈ D pairs (q, p) \in D_{\text{pairs}} (q,p)∈Dpairs?,檢查 p p p與所有passages p i , i = 1 , … , 1 M p_i, i=1,\ldots,1M pi?,i=1,…,1M相比是不是與 q q q最相似的top 2(基于向量余弦相似度)。經(jīng)過(guò)這一步驟后,數(shù)據(jù)集大小從1.5B減少到了385M。
數(shù)據(jù)對(duì)來(lái)源于32個(gè)數(shù)據(jù)集,過(guò)濾前的數(shù)據(jù)量為1.6 billion,過(guò)濾完之后為385 million。
在準(zhǔn)備三元組數(shù)據(jù)時(shí),沒(méi)有進(jìn)行去重和語(yǔ)言過(guò)濾步驟,但采用了與一致性過(guò)濾類(lèi)似的步驟來(lái)校驗(yàn)“positive”元素與"query"元素的相關(guān)性:用cross-encoder模型ms-marco-MiniLM-L-6-v2來(lái)比較每一個(gè)三元組 ( q , p , n ) ∈ D triplets (q,p,n) \in D_{\text{triplets}} (q,p,n)∈Dtriplets?的相似度 r ( q , p ) r(q,p) r(q,p)和 r ( q , n ) r(q,n) r(q,n),判斷是否滿(mǎn)足 r ( q , p ) ? r ( q , n ) > κ r(q,p) - r(q,n) > \kappa r(q,p)?r(q,n)>κ,閾值為 κ = 0.2 \kappa=0.2 κ=0.2,只保留滿(mǎn)足閾值條件的三元組。
否定數(shù)據(jù)(Negation Data)的準(zhǔn)備:許多向量模型對(duì)于否定含義的句子難以區(qū)分,比如對(duì)于三個(gè)句子:1. “A couple walks hand in hand down a street.”,2. “A couple is walking together.”, 3. “A couple is not walking together.” ,直覺(jué)上前面兩個(gè)的向量距離應(yīng)該更接近,第二個(gè)和第三個(gè)應(yīng)該距離更遠(yuǎn),但是很多模型無(wú)法區(qū)別其差異。于是Jina Embedding團(tuán)隊(duì)創(chuàng)建了一個(gè)negation數(shù)據(jù)集( [已開(kāi)源](https:// huggingface.co/datasets/jinaai/negation-dataset) ),這個(gè)數(shù)據(jù)集的正樣本對(duì)來(lái)自SNLI數(shù)據(jù)集,否定句由GPT-3.5生成,組成(anchor, entailment, negative)的三元組形式,與前述例子類(lèi)似。(anchor, entailment)組成正樣本對(duì),“negetive"與”anchor"和“entailment”的含義都互相矛盾,但是與“entailment”的句法非常相似。這個(gè)否定數(shù)據(jù)集是前面的三元組數(shù)據(jù)集的一部分。
三元組數(shù)據(jù)在過(guò)濾前是1.13 million,過(guò)濾完之后927,000個(gè),其分布如論文圖2。
訓(xùn)練過(guò)程
訓(xùn)練分為兩階段:第一階段在數(shù)據(jù)對(duì)上進(jìn)行訓(xùn)練,使得它們的語(yǔ)義整合到一個(gè)語(yǔ)義向量上;第二階段在相對(duì)較小的三元組數(shù)據(jù)上訓(xùn)練,讓模型區(qū)分相似和不相似文本的區(qū)別。
Jina Embedding模型基于zero-shot T5模型的encoder訓(xùn)練,作者說(shuō)因?yàn)樗谝幌盗邢掠稳蝿?wù)上進(jìn)行了預(yù)訓(xùn)練所以選擇它。在T5 encoder之上使用mean pooling layer由token embeddings得到固定長(zhǎng)度的向量。
第一階段的訓(xùn)練損失函數(shù)采用InfoNCE,即對(duì)一個(gè)大小為k的batch B ∈ D k B \in D^k B∈Dk的數(shù)據(jù)對(duì) ( q , p ) ~ B (q, p) \sim B (q,p)~B,損失函數(shù)通過(guò)比較給定問(wèn)題q和目標(biāo)p的余弦相似度與batch中其他目標(biāo)的的相似度來(lái)計(jì)算得到:
L N C E pairs? ( B ) : = E ( q , p ) ~ B [ ? ln ? e s ( q , p ) / τ ∑ i = 1 k e s ( q , p i ) / τ ] \mathcal{L}_{\mathrm{NCE}}^{\text {pairs }}(B):=\mathbb{E}_{(q, p) \sim B}\left[-\ln \frac{e^{s(q, p) / \tau}}{\sum_{i=1}^k e^{s\left(q, p_i\right) / \tau}}\right] LNCEpairs??(B):=E(q,p)~B?[?ln∑i=1k?es(q,pi?)/τes(q,p)/τ?]
此外作者發(fā)現(xiàn)在訓(xùn)練時(shí)計(jì)算兩個(gè)方向的損失可以提高性能,即也考慮 L N C E  ̄ pairs? \mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {pairs }} LNCEpairs?? 從目標(biāo)字符串去匹配所有query字符串。所以其最終損失函數(shù)如下式(溫度參數(shù)取 τ = 0.05 \tau=0.05 τ=0.05):
L pairs? ( B ) : = L N C E pairs? ( B ) + L N C E  ̄ pairs? ( B ) , where L N C E  ̄ pairs? ( B ) : = E ( q , p ) ~ B [ ? ln ? e s ( p , q ) / τ ∑ i = 1 k e s ( p , q i ) / τ ] \mathcal{L}^{\text {pairs }}(B) := \mathcal{L}_{\mathrm{NCE}}^{\text {pairs }}(B)+\mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {pairs }}(B), \text{where} \\ \mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {pairs }}(B):=\mathbb{E}_{(q, p) \sim B}\left[-\ln \frac{e^{s(p, q) / \tau}}{\sum_{i=1}^k e^{s\left(p, q_i\right) / \tau}}\right] Lpairs?(B):=LNCEpairs??(B)+LNCEpairs??(B),whereLNCEpairs??(B):=E(q,p)~B?[?ln∑i=1k?es(p,qi?)/τes(p,q)/τ?]
在訓(xùn)練時(shí),不是按順序地在每個(gè)訓(xùn)練集上訓(xùn)練,而是同時(shí)在所有數(shù)據(jù)集上訓(xùn)練,但是在每一個(gè)訓(xùn)練batch里數(shù)據(jù)只來(lái)自單個(gè)數(shù)據(jù)集以確保損失計(jì)算時(shí)不會(huì)合并其他任務(wù)的數(shù)據(jù)。訓(xùn)練前每個(gè)數(shù)據(jù)集中的數(shù)據(jù)被shuffle,訓(xùn)練時(shí)根據(jù)采樣概率 ρ ( D i ) = ∣ D i ∣ s i ∑ j = 1 n ∣ D j ∣ s j \rho (D_i)= \frac{|D_i|s_i}{\sum^n_{j=1} |D_j|s_j} ρ(Di?)=∑j=1n?∣Dj?∣sj?∣Di?∣si??來(lái)采樣 D i D_i Di?,采樣概率與數(shù)據(jù)集大小 ∣ D i ∣ |D_i| ∣Di?∣和縮放因子 s i s_i si?決定,因?yàn)閿?shù)據(jù)集大小的不一樣,更頻繁地從更大的數(shù)據(jù)集采樣可以防止過(guò)擬合,用縮放因子來(lái)優(yōu)先在高質(zhì)量數(shù)據(jù)集上訓(xùn)練并且可以平衡文本領(lǐng)域。訓(xùn)練時(shí)如果一個(gè)數(shù)據(jù)集的樣本消耗完了,數(shù)據(jù)集會(huì)被重置,模型可以重新從這個(gè)數(shù)據(jù)集獲取數(shù)據(jù)來(lái)訓(xùn)練,確保了高采樣率數(shù)據(jù)集在單個(gè)訓(xùn)練epoch中可以貢獻(xiàn)多次。論文圖1b是基于采樣率的每個(gè)數(shù)據(jù)集的比例。
作者經(jīng)過(guò)試驗(yàn)發(fā)現(xiàn)在訓(xùn)練第二階段最好的結(jié)果是通過(guò)組合多個(gè)常用tuiplet loss 函數(shù)得到的(溫度參數(shù)取 τ = 0.05 \tau=0.05 τ=0.05):InfoNCE損失函數(shù)的使用了額外負(fù)例的擴(kuò)展版本 L N C E + triplets? \mathcal{L}_{\mathrm{NCE+}}^{\text {triplets }} LNCE+triplets?? (式2),與第一階段一樣的反向InfoNCE損失函數(shù) L N C E  ̄ triplets? \mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {triplets }} LNCEtriplets?? (式3),triplet margin損失函數(shù) L 3 triplets? \mathcal{L}_{3}^{\text {triplets }} L3triplets??(式4), ? = 0.05 \epsilon=0.05 ?=0.05 。
L triplets? ( B ) : = L N C E + triplets? ( B ) + L N C E triplets? ( B ) + L 3 triplets? ( B ) , where? ( 1 ) L N C E + triplets? ( B ) : = E ( q , p , n ) ~ B [ ? ln ? exp ? ( s ( q , p ) / τ ) ∑ i = 1 k exp ? ( s ( q , p i ) / τ ) + exp ? ( s ( q , n i ) / τ ) ] ( 2 ) L N C E  ̄ triplets? ( B ) : = E ( q , p , n ) ~ B [ ? ln ? exp ? ( s ( p , q ) / τ ) ∑ i = 1 k exp ? ( s ( p , q i ) / τ ) ] ( 3 ) L 3 triplets? ( B ) : = E ( q , p , n ) ~ B [ ReLU ? ( s ( q , n ) ? s ( q , p ) + ε ) ] . ( 4 ) \begin{aligned} & \mathcal{L}^{\text {triplets }}(B):=\mathcal{L}_{N C E+}^{\text {triplets }}(B)+\mathcal{L}_{\mathrm{NCE}}^{\text {triplets }}(B)+\mathcal{L}_3^{\text {triplets }}(B), \quad \text { where } \qquad (1) \\ & \mathcal{L}_{N C E+}^{\text {triplets }}(B):=\mathbb{E}_{(q, p, n) \sim B}\left[-\ln \frac{\exp (s(q, p) / \tau)}{\sum_{i=1}^k \exp \left(s\left(q, p_i\right) / \tau\right)+\exp \left(s\left(q, n_i\right) / \tau\right)}\right] \qquad (2) \\ & \mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {triplets }}(B):=\mathbb{E}_{(q, p, n) \sim B}\left[-\ln \frac{\exp (s(p, q) / \tau)}{\sum_{i=1}^k \exp \left(s\left(p, q_i\right) / \tau\right)}\right] \qquad (3)\\ & \mathcal{L}_3^{\text {triplets }}(B):=\mathbb{E}_{(q, p, n) \sim B}[\operatorname{ReLU}(s(q, n)-s(q, p)+\varepsilon)] . \qquad (4) \end{aligned} ?Ltriplets?(B):=LNCE+triplets??(B)+LNCEtriplets??(B)+L3triplets??(B),?where?(1)LNCE+triplets??(B):=E(q,p,n)~B?[?ln∑i=1k?exp(s(q,pi?)/τ)+exp(s(q,ni?)/τ)exp(s(q,p)/τ)?](2)LNCEtriplets??(B):=E(q,p,n)~B?[?ln∑i=1k?exp(s(p,qi?)/τ)exp(s(p,q)/τ)?](3)L3triplets??(B):=E(q,p,n)~B?[ReLU(s(q,n)?s(q,p)+ε)].(4)?
訓(xùn)練的超參數(shù)如論文表5.
Jina Embedding v2
Jina Embedding v2 對(duì)應(yīng)的論文是2023年10月的《Jina Embeddings 2: 8192-Token General-Purpose Text Embeddings for Long Documents》,Jina Embedding v2的主要特點(diǎn)是可以對(duì)長(zhǎng)達(dá)8192 token的文本進(jìn)行向量編碼,長(zhǎng)文本上下文窗口是通過(guò)AliBi來(lái)實(shí)現(xiàn)的。
Jina Embedding v2 的訓(xùn)練過(guò)程分為3個(gè)階段:1. 預(yù)訓(xùn)練一個(gè)修改的BERT,2. 在文本對(duì)數(shù)據(jù)上微調(diào),3. 在Hard Negatives上微調(diào)。第2和第3階段是針對(duì)embedding任務(wù)來(lái)進(jìn)行微調(diào)的,與其他論文的結(jié)論有一樣,第三階段對(duì)于提升模型在檢索和分類(lèi)任務(wù)上的性能很關(guān)鍵。
預(yù)訓(xùn)練修改版BERT
對(duì)BERT模型做一些修改,而訓(xùn)練過(guò)程主要采用RoBERTa所描述的方法。
模型架構(gòu):
- 對(duì)自注意力機(jī)制使用ALiBi方法,因?yàn)樵嫉腁LiBi是為因果語(yǔ)言建模設(shè)計(jì)的,所以其特征bias只在一個(gè)方向,所以在encoder模型里應(yīng)用了ALiBi的修改版,如論文圖1所示意。
- 對(duì)注意力模塊的前向傳播子層使用GLU(Gated Linear Units): 對(duì)于small和base模型,使用GEGLU,對(duì)于large模型使用ReGLU(這個(gè)選擇也與其他論文一致說(shuō)對(duì)于large模型使用GEGLU不穩(wěn)定)。
- 對(duì)于Layer Normalixation,使用與transformer的原論文《attention is all you need》一樣的post-layer normalization。
訓(xùn)練數(shù)據(jù):使用C4(Colossal, Cleaned, Common Crawl)數(shù)據(jù)集來(lái)進(jìn)行預(yù)訓(xùn)練,只保留了英文語(yǔ)料。
訓(xùn)練算法:
- 去掉BERT里的下句預(yù)測(cè)任務(wù)(next sentence predictin, NSP)
- 使用whole word masking, 隨機(jī)mask掉30%的輸入詞元(token)。在這些被mask掉的token中,80%用[MASK] token替換,10%用隨機(jī)token替換,10%保持不變。
- 損失函數(shù)使用Masked Language Model 損失函數(shù)
- 訓(xùn)練時(shí)文本最大長(zhǎng)度為512。樣本處理上不會(huì)將多個(gè)文檔的數(shù)據(jù)堆疊到一起組成長(zhǎng)文本,也會(huì)避免從一個(gè)文檔中采樣多個(gè)文本序列,對(duì)每一個(gè)文檔,只考慮前512個(gè)token而裁剪掉剩下的文本。
- 使用AdamW優(yōu)化器, β 1 = 0.9 , β 2 = 0.98 , ? = 1 e ? 6 \beta_1=0.9, \beta_2=0.98, \epsilon=1e-6 β1?=0.9,β2?=0.98,?=1e?6, weight decay為0.01,dropout rate為0.1, attention的dropout也為0.1。learning rate schedule為線性的,從0開(kāi)始,在10000步時(shí)達(dá)到 η \eta η(對(duì)small、base、large模型的 η \eta η取值分別為1e-3, 6e-4,4e-4),在達(dá)到100000步后學(xué)習(xí)率逐漸線性衰減到0。
- 通常DeepSpeed來(lái)實(shí)現(xiàn)FP16動(dòng)態(tài)混合精度,而作者說(shuō)初步測(cè)試表明BF16會(huì)導(dǎo)致不滿(mǎn)意的性能指標(biāo)。
在文本對(duì)上微調(diào)
文本向量通過(guò)在所有token embedding上加mean pooling層得到。
訓(xùn)練數(shù)據(jù):與Jina Embedding v1的文本對(duì)準(zhǔn)備數(shù)據(jù)流程一致,包括了40種不同來(lái)源數(shù)據(jù),觀察到數(shù)據(jù)集中包括title-abstract對(duì)可以顯著提升向量模型在聚類(lèi)任務(wù)上的性能。在數(shù)據(jù)上的采樣策略也與Jina Embedding v1一致。
損失函數(shù):與Jina Embedding v1一致。
在Hard Negatives上微調(diào)
這一階段的主要目的是提高模型的排序能力,所以是在包含負(fù)樣本的數(shù)據(jù)集來(lái)訓(xùn)練的。
訓(xùn)練數(shù)據(jù):數(shù)據(jù)集包括檢索數(shù)據(jù)集如MSMarco, NQ(Natural Questions),以及多個(gè)非檢索數(shù)據(jù)集如Natural Language Inference(NLI)。對(duì)于每一個(gè)訓(xùn)練樣本,記為 ( q , p , n 1 , … , n 15 ) (q, p, n_1, \ldots, n_{15}) (q,p,n1?,…,n15?),即包括1個(gè)正樣本和15個(gè)負(fù)樣本。對(duì)于檢索數(shù)據(jù)集,難負(fù)樣本由檢索模型判斷與p相似而得到,即指導(dǎo)模型優(yōu)先相關(guān)文檔而不僅僅是語(yǔ)義相關(guān);對(duì)于非檢索數(shù)據(jù)集,負(fù)樣本是隨機(jī)選擇的,因?yàn)樵谡龢颖竞拓?fù)樣本之間畫(huà)一條清晰的線并不可行。判斷是否相關(guān)時(shí),使用cross-encoder模型來(lái)判斷。
損失函數(shù):修改后的InfoNCE損失函數(shù)
L NCE + ( B ) : = E r ~ B [ ? ln ? e s ( q , p ) / τ ∑ i = 1 k [ e s ( q , p i ) / τ + ∑ j = 1 15 e s ( q , n j , i ) / τ ) ] ] + E r ~ B [ ? ln ? e s ( p , q ) / τ ∑ i = 1 k e s ( p , q i ) / τ ] with? r = ( q , p , n 1 , … , n 15 ) \mathcal{L}_{\text{NCE}+}(B):=\mathbb{E}_{r \sim B} \left[ -\ln \frac{e ^{s(q, p) / \tau}} {\sum_{i=1}^k [ e^{s(q, p_i) / \tau}+ \sum^{15}_{j=1} e^{s(q, n_{j,i})/ \tau)}]} \right] + \qquad \\ \mathbb{E}_{r \sim B}\left[-\ln \frac{e^{s(p, q) / \tau}}{\sum_{i=1}^k e^{s\left(p, q_i\right) / \tau}}\right] \\ \text{with} \ r=(q, p, n_1,\ldots, n_{15}) LNCE+?(B):=Er~B?[?ln∑i=1k?[es(q,pi?)/τ+∑j=115?es(q,nj,i?)/τ)]es(q,p)/τ?]+Er~B?[?ln∑i=1k?es(p,qi?)/τes(p,q)/τ?]with?r=(q,p,n1?,…,n15?)
在這兩個(gè)階段進(jìn)行微調(diào)訓(xùn)練時(shí),大的batch size是更優(yōu)的,為了節(jié)省內(nèi)存,利用deepspeed實(shí)現(xiàn)混合精度訓(xùn)練,此外使用Activation checkpointing技術(shù),在模型的每一個(gè)BERT層插入checkpoint。
Jina Embedding v2 雙語(yǔ)言
Jina Embedding v2雙語(yǔ)言模型對(duì)應(yīng)的論文為2024年2月的《Multi-Task Contrastive Learning for 8192-Token Bilingual Text Embeddings》,這一篇里講了用相對(duì)小的模型實(shí)現(xiàn)英語(yǔ)和另一個(gè)目標(biāo)語(yǔ)言(如德語(yǔ)、中文、西班牙語(yǔ))的雙語(yǔ)向量編碼。
與Jina Embedding v2一樣,訓(xùn)練過(guò)程分為3個(gè)階段:1. 預(yù)訓(xùn)練一個(gè)修改的BERT,2. 在文本對(duì)數(shù)據(jù)上微調(diào),3. 用多任務(wù)目標(biāo)(Multi-Task Objective)來(lái)微調(diào)。
預(yù)訓(xùn)練修改版BERT
模型架構(gòu): 與Jina Embedding v2一樣。對(duì)西班牙語(yǔ)模型,對(duì)key和query向量引入了一個(gè)normalization來(lái)解決訓(xùn)練不穩(wěn)定性,這個(gè)方法與QK-normalization有點(diǎn)關(guān)聯(lián),但不完全一樣。子詞分詞器使用BPE分詞器,并使得詞匯表大小比jina Embedding v2的單語(yǔ)言版擴(kuò)展了一倍,所以base模型的參數(shù)增加了一些(從137M到161M)。
訓(xùn)練數(shù)據(jù):數(shù)據(jù)來(lái)源有CulturaX, Wikipedia, Opus,經(jīng)過(guò)清洗后得到250M英文文本和相同數(shù)量的目標(biāo)語(yǔ)言文本,留了1%的數(shù)據(jù)用作驗(yàn)證集。
訓(xùn)練算法:與Jina Embedding v2基本一樣,因?yàn)橛?xùn)練數(shù)據(jù)包括雙語(yǔ)言,所以在每一個(gè)batch的數(shù)據(jù)是單語(yǔ)言。
在文本對(duì)上微調(diào)
文本向量通過(guò)在所有token embedding上加mean pooling層得到,在訓(xùn)練節(jié)省內(nèi)存的策略上也與Jina Embedding v2保持一致。
訓(xùn)練數(shù)據(jù):
- 收集了211million德文、111million西班牙語(yǔ)、518million英語(yǔ)文本對(duì)(有點(diǎn)奇怪為什么沒(méi)有提到中文數(shù)據(jù)量)。數(shù)據(jù)集中主要數(shù)據(jù)都是單語(yǔ)言文本對(duì)(97.5%),主要是(標(biāo)題, 文章)、(問(wèn)題, 回答)、(文本, 文本總結(jié));其余的是雙語(yǔ)言文本對(duì),即包括用兩種語(yǔ)言表示的相同含義文本,構(gòu)成了用來(lái)橋接英語(yǔ)和其他語(yǔ)言的平行語(yǔ)料。
- 數(shù)據(jù)集來(lái)源包括MQA、XL-Sum、XNLI、 MLSum、Europarl。此外為了多樣性和數(shù)據(jù)量,用Common Crawl數(shù)據(jù)闖將了兩種類(lèi)型的文本對(duì):1. 網(wǎng)頁(yè)title和內(nèi)容;2. 從FAQ和相關(guān)頁(yè)面挖掘question-answer對(duì)。從Wikipedia獲取段落和對(duì)應(yīng)的章節(jié)標(biāo)題。
- 通過(guò)兩階段處理策略來(lái)提高數(shù)據(jù)質(zhì)量: 過(guò)濾階段通過(guò)一些質(zhì)量檢查實(shí)現(xiàn),比如將非常短的文本、非常長(zhǎng)的文本、重復(fù)行很多的文本給刪除;在改進(jìn)階段不刪除文本,只進(jìn)行包括去掉網(wǎng)址相關(guān)的元數(shù)據(jù)、去掉未結(jié)束的行、只有一個(gè)單詞的行等的操作。
- 為進(jìn)一步提高數(shù)據(jù)集質(zhì)量,使用near-depuplication方法去除重復(fù)數(shù)據(jù),使用Jina Embedding v1里用過(guò)的一致性過(guò)濾方法過(guò)濾不一致的文本對(duì)
損失函數(shù): 與Jina Embedding v1一致。
用多任務(wù)目標(biāo)微調(diào)
在之前的文獻(xiàn)以及Jina Embedding v1和v2都表明第三階段的在難負(fù)樣本上的微調(diào)可以提高模型的排序能力,所以在這篇論文里將這個(gè)概念擴(kuò)展為多任務(wù)訓(xùn)練階段。
對(duì)于不同的任務(wù)一般有不同的格式,比如STS任務(wù)包含三元組(q,p, t),即兩個(gè)文本q和p以及他們的相似分?jǐn)?shù)t。而對(duì)于檢索任務(wù)通常包括query q和一個(gè)或多個(gè)相關(guān)文檔p以及可選的不相關(guān)文檔n。所以對(duì)于每一個(gè)任務(wù),定義自己的損失函數(shù),在這篇論文中,只考慮STS任務(wù)和檢索任務(wù)。在每個(gè)batch,采樣一個(gè)數(shù)據(jù)集,根據(jù)數(shù)據(jù)集任務(wù)類(lèi)型來(lái)選擇相應(yīng)的損失函數(shù)。
訓(xùn)練數(shù)據(jù):檢索任務(wù)與Jina Embedding v2類(lèi)似,STS任務(wù)數(shù)據(jù)集包括SemEval等。因?yàn)橛⑽臄?shù)據(jù)的高質(zhì)量數(shù)據(jù)更多,所以使用機(jī)器翻譯將一些數(shù)據(jù)集翻譯成目標(biāo)語(yǔ)言。為了增加數(shù)據(jù)多樣性和減少僅由翻譯數(shù)據(jù)副作用的影響,還挑選了一些目標(biāo)語(yǔ)言的數(shù)據(jù)集。
損失函數(shù):檢索任務(wù)的損失函數(shù)與Jina Embedding v2第三階段的損失函數(shù)一樣。STS數(shù)據(jù)集的損失函數(shù)采用negative Pearson’s sample correlation,設(shè)一個(gè)batch B包括文本對(duì)(q, p)和對(duì)應(yīng)的相關(guān)分?jǐn)?shù)t,其計(jì)算如下式:
L S T S ( B ) : = ? c o v ( q , p , t ) ~ B ( s ( q , p ) , t ) σ s ( B ) σ t ( B ) \mathcal{L}_{STS}(B) := - \frac{cov_{(q,p,t) \sim B } (s(q, p), t)}{\sigma_s(B) \sigma_t(B)} LSTS?(B):=?σs?(B)σt?(B)cov(q,p,t)~B?(s(q,p),t)?
上式中, σ s \sigma_s σs?和 σ t \sigma_t σt?是估計(jì)的s(q,p)和t的標(biāo)準(zhǔn)差,在一個(gè)batch內(nèi)計(jì)算得到,而上式中的協(xié)方差是跨批次B計(jì)算得到的。作者說(shuō)基于相關(guān)性的損失函數(shù)可行的原因是它考慮相似性分?jǐn)?shù)的大小而不是二元相關(guān)性,選擇Pearson相關(guān)系數(shù)是因?yàn)樗鼘?duì)相似度值的尺度是不變的。作者假定這可以使包含InfoNCE損失函數(shù)的多任務(wù)訓(xùn)練更穩(wěn)定。
Jina Embedding v3
Jina Embedding v3 對(duì)應(yīng)的論文為2024年9月的《jina-embeddings-v3: Multilingual Embeddings With Task LoRA》,它是一個(gè)多語(yǔ)言文本向量模型,可處理最多8192個(gè)token長(zhǎng)度的文本,使用任務(wù)相關(guān)的LoRA適配器來(lái)生成檢索、聚類(lèi)、分類(lèi)、文本匹配任務(wù)對(duì)應(yīng)的向量,向量的默認(rèn)大小為1024,因?yàn)槭褂昧薓atryoshka Representation Learning技術(shù),用戶(hù)可靈活地改變向量大小。(此外論文強(qiáng)調(diào)Jina embedding v3比v2和v2雙語(yǔ)效果好很多,并且在MTEB的評(píng)估上在英文任務(wù)上超過(guò)了OpenAI和Cohere的私有向量模型,且比基于LLM的向量模型的大小小很多)
Jina Embedding v3的架構(gòu)如論文圖1所示
Jina Embedding v3的訓(xùn)練過(guò)程也分為3個(gè)階段:1. 預(yù)訓(xùn)練XLM-RoBERTa,2. 在文本對(duì)數(shù)據(jù)上微調(diào),3. 訓(xùn)練了任務(wù)相關(guān)的LoRA適配器。
預(yù)訓(xùn)練
模型:使用XLM-RoBERTa模型的參數(shù)來(lái)初始化模型,但是將位置編碼修改為RoPE,保留了XLM-RoBERTa的tokenizer。訓(xùn)練目標(biāo)為使用全詞mask的MLM。
訓(xùn)練數(shù)據(jù): CulturaX語(yǔ)料集,它包括89種語(yǔ)言的數(shù)據(jù),其中英語(yǔ)大概占20%。每一個(gè)batch只包含一種語(yǔ)言,但是不同batch之間的語(yǔ)言是交替的。
在訓(xùn)練的前100000步文本序列長(zhǎng)度被裁剪到512個(gè)token,在后60000步文本序列長(zhǎng)度被裁剪到8192個(gè)token同時(shí)使用更小的batch size,具體超參見(jiàn)表A1。在訓(xùn)練時(shí)RoPE的旋轉(zhuǎn)頻率是10000,在推理時(shí)調(diào)整到20000有助于提升模型在長(zhǎng)文本上的能力,但是作者發(fā)現(xiàn)這個(gè)調(diào)整后模型的長(zhǎng)文本能力不及jina embedding v2,所以在訓(xùn)練時(shí)將模型在更長(zhǎng)的文本上進(jìn)行了訓(xùn)練,經(jīng)過(guò)長(zhǎng)文本訓(xùn)練之后jina embedding v3的長(zhǎng)文本能力更強(qiáng)。
在文本對(duì)上微調(diào)
文本向量與之前系列模型一致,通過(guò)在所有token embedding上加mean pooling層得到。
損失函數(shù):與jina embedding v2雙語(yǔ)言一致。
訓(xùn)練數(shù)據(jù):從超過(guò)300個(gè)數(shù)據(jù)集收集得到,訓(xùn)練時(shí)每個(gè)batch采樣自一個(gè)特定數(shù)據(jù)集。數(shù)據(jù)集準(zhǔn)備方法與jina embedding v2雙語(yǔ)言一致,只是多了一個(gè)過(guò)濾步驟:將短文本里至少有80%的內(nèi)容屬于長(zhǎng)文本的子字符串的文本對(duì)給去掉了,這個(gè)過(guò)濾可以增加訓(xùn)練的難度。
與預(yù)訓(xùn)練過(guò)程一樣,先在短文本對(duì)上訓(xùn)練,接著用更小的batch size來(lái)訓(xùn)練更長(zhǎng)的文本序列(這時(shí)只有包含足夠多的長(zhǎng)文本數(shù)據(jù)的數(shù)據(jù)集)
訓(xùn)練任務(wù)相關(guān)的適配器
在這一階段訓(xùn)練了在四個(gè)任務(wù)上的五個(gè)不同LoRA適配器,如論文表2所示。訓(xùn)練時(shí)這些任務(wù)是獨(dú)立訓(xùn)練的,基座模型參數(shù)是被凍結(jié)的。在推理時(shí),用戶(hù)根據(jù)下游任何和輸入內(nèi)容角色選擇合適的適配器。
分類(lèi)適配器
分類(lèi)適配器為下游分類(lèi)任務(wù)特別是邏輯回歸分類(lèi)器生成向量,為訓(xùn)練適配器,采用Gecko向量模型提出的分類(lèi)訓(xùn)練方法。
數(shù)據(jù)集包括常見(jiàn)分類(lèi)任務(wù),包括情感分析、意圖分類(lèi)、文章類(lèi)別。對(duì)每一個(gè)數(shù)據(jù)集,選擇屬于同一個(gè)類(lèi)別的2個(gè)文本值(q,p)和7個(gè)不同類(lèi)別的文本 ( n 1 , … , n 7 ) (n_1, \ldots, n_7) (n1?,…,n7?),構(gòu)建包含9個(gè)文本的元祖 ( q , p , n 1 , … , n 7 ) (q,p,n_1,\ldots,n_7) (q,p,n1?,…,n7?),模型的訓(xùn)練目標(biāo)是為q和p分配高的余弦相似度,同時(shí)使q和其他 n i n_i ni?的余弦相似度很低。每一個(gè)batch的元祖來(lái)自同一個(gè)數(shù)據(jù)集。
損失函數(shù)與Jina Embedding v2一樣,是InfoNCE的擴(kuò)展版本,考慮了額外的負(fù)樣本。
L triplet ( B ) : = E r ~ B [ ? ln ? e s ( q , p ) / τ ∑ i = 1 k [ e s ( q , p i ) / τ + ∑ j = 1 m e s ( q , n j , i ) / τ ) ] ] + E r ~ B [ ? ln ? e s ( p , q ) / τ ∑ i = 1 k e s ( p , q i ) / τ ] with? r = ( q , p , n 1 , … , n m ) \mathcal{L}_{\text{triplet}}(B):=\mathbb{E}_{r \sim B} \left[ -\ln \frac{e ^{s(q, p) / \tau}} {\sum_{i=1}^k [ e^{s(q, p_i) / \tau}+ \sum^{m}_{j=1} e^{s(q, n_{j,i})/ \tau)}]} \right] + \qquad \\ \mathbb{E}_{r \sim B}\left[-\ln \frac{e^{s(p, q) / \tau}}{\sum_{i=1}^k e^{s\left(p, q_i\right) / \tau}}\right] \\ \text{with} \ r=(q, p, n_1,\ldots, n_{m}) Ltriplet?(B):=Er~B?[?ln∑i=1k?[es(q,pi?)/τ+∑j=1m?es(q,nj,i?)/τ)]es(q,p)/τ?]+Er~B?[?ln∑i=1k?es(p,qi?)/τes(p,q)/τ?]with?r=(q,p,n1?,…,nm?)
在使用這個(gè)損失函數(shù)時(shí),在同一個(gè)batch里與 q i q_i qi?來(lái)自相同類(lèi)別的文本 p j ( i ≠ j ) p_j (i \neq j) pj?(i=j)被當(dāng)做負(fù)樣本,這可能會(huì)造成假負(fù)例,所以Gecko向量模型是每一個(gè)文本一個(gè)唯一id值,允許模型區(qū)分batch里文本的差別,就可以避免掉假負(fù)例。
文本匹配適配器
文本匹配適配器為量化兩個(gè)文本之間的相似性而生成向量,可應(yīng)用與語(yǔ)義文本相似性(sementic textual similarity, STS)和對(duì)稱(chēng)性檢索任務(wù)(即query和target之間的區(qū)別不明顯)。
訓(xùn)練數(shù)據(jù)包括STS訓(xùn)練數(shù)據(jù)集如STS12、SICK,這些數(shù)據(jù)集包括三元組 ( q i , p i , t i ) ∈ D (q_i, p_i, t_i) \in D (qi?,pi?,ti?)∈D,即文本對(duì) ( q i , p i ) (q_i, p_i) (qi?,pi?)以及他們的相關(guān)分?jǐn)?shù) t i t_i ti?。一個(gè)batch B包含指定數(shù)量的三元組,ground truth相似度定義為 ζ ( q i , p i ) = t i \zeta(q_i, p_i) = t_i ζ(qi?,pi?)=ti?。為了模型在跨語(yǔ)言的表現(xiàn),使用機(jī)器翻譯模型如WMT19和MADLAD-3B將STS12和SICK翻譯到了多種語(yǔ)言。此外還將natural language inference (NLI) 數(shù)據(jù)集包括進(jìn)來(lái)了。每個(gè)batch中也只包含了一個(gè)數(shù)據(jù)集的數(shù)據(jù),并使用相應(yīng)的損失函數(shù)(沒(méi)提NLI數(shù)據(jù)集的損失函數(shù)是什么,用InfoNCE?)。
損失函數(shù)使用了蘇劍林提出的CoSent loss:
L c o ( B ) : = l n [ 1 + ∑ ( q 1 , p 1 ) , ( q 2 , p 2 ) ∈ B e s ( q 2 , p 2 ) ? e s ( q 1 , p 1 ) τ ] where? ζ ( q 1 , p 1 ) > ζ ( q 2 , p 2 ) \mathcal{L}_{co} (B) := ln \left[ 1 + \sum_{(q_1,p_1),(q_2,p_2) \in B} \frac {e^{s(q_2,p_2)} - e^{s(q_1, p_1)}}{\tau} \right] \\ \text{where} \ \zeta(q_1, p_1) > \zeta(q_2, p_2) Lco?(B):=ln ?1+(q1?,p1?),(q2?,p2?)∈B∑?τes(q2?,p2?)?es(q1?,p1?)? ?where?ζ(q1?,p1?)>ζ(q2?,p2?)
CoSent loss 在兩個(gè)文本對(duì)上進(jìn)行運(yùn)算,要求數(shù)據(jù)集里標(biāo)注ground truth相似度 ζ \zeta ζ。
Separation適配器
分離適配器(Separation Adapter)是為聚類(lèi)和重排序任務(wù)設(shè)計(jì)的(對(duì)重排序任務(wù)是將相關(guān)文檔和不相關(guān)文檔給分開(kāi))。
損失函數(shù)是CoSent loss的變體,訓(xùn)練數(shù)據(jù) B ′ B^{\prime} B′由元組 ( x , l ) ∈ B ′ (x, l) \in B^{\prime} (x,l)∈B′組成,x是文本,l是它對(duì)應(yīng)的標(biāo)簽。為了組成匹配 L c o \mathcal{L}_{co} Lco? 的文本對(duì),在一個(gè)batch里生成同一個(gè)標(biāo)簽 l i l_i li?的所有文本對(duì)組合。最終的分離損失定義如下:
L s e p ( B ′ ) : = L c o ( B ) B = { ( x i , x j ) ∣ ? l : ( x i , l ) , ( x j , l ) ∈ B ′ } \mathcal{L}_{sep}(B^{\prime}) := \mathcal{L}_{co}(B) \\ B = \{(x_i, x_j)| \exists l:(x_i, l),(x_j, l) \in B^{\prime} \} Lsep?(B′):=Lco?(B)B={(xi?,xj?)∣?l:(xi?,l),(xj?,l)∈B′}
因?yàn)闈M(mǎn)足要求的訓(xùn)練數(shù)據(jù)不多,所以在這一階段還混合了訓(xùn)練第二階段的文本對(duì)數(shù)據(jù)(訓(xùn)練損失也是第二階段的損失),在每一個(gè)訓(xùn)練步,特定數(shù)據(jù)集被采樣并使用相應(yīng)的損失函數(shù)。
非對(duì)稱(chēng)檢索適配器
與E5對(duì)應(yīng)的論文一樣,使用兩個(gè)不同的前綴加在query和document后,并且同時(shí)(joinly)訓(xùn)練兩個(gè)不同的適配器。
訓(xùn)練數(shù)據(jù)為包含hard negatives的數(shù)據(jù)集如MS-MARCO和Natural Questions(NQ),目的是為了讓模型能夠?qū)W⒂诩?xì)微的區(qū)別并區(qū)分相關(guān)文檔和相似但不相關(guān)文檔。而對(duì)于沒(méi)有難負(fù)例的檢索數(shù)據(jù)集使用RocketQA v2和E5論文中使用的方法用BGE-large和BM25來(lái)挖掘難負(fù)例。
損失函數(shù)是與分類(lèi)適配器一樣的 L triplet \mathcal{L}_{\text{triplet}} Ltriplet?。
在對(duì)Jina embedding v2在非對(duì)稱(chēng)檢索任務(wù)上進(jìn)行錯(cuò)誤分析時(shí),發(fā)現(xiàn)了以下影響檢索任務(wù)的點(diǎn):
- F1. Misleading Syntactic Similarities: Documents with high syntactic similarity to the query are often favored over gold/relevant documents with lower syntactic overlap.
- F2. Misinterpretation of Named Entities:Named entities are frequently not recognized as such, leading to documents being marked as relevant based on partial matches (e.g., “Sofia Albert” vs. “Albert Stone”). This occurs especially with proper nouns that have alternative, more common meanings (e.g., the novel title “The Company” vs. “the company”).
- F3. No Understanding of Polar Questions:Complex yes-no (polar) questions are not handled effectively. As a result, the model retrieves documents with related content that do not necessarily answer the query.
- F4. Preference for Low-Quality Documents:jina-embeddings-v2 and many other embedding models do not account for document quality, focusing solely on similarity and relevance. Consequently, low-quality documents(short, repetitive, or uninformative) that mention query terms are often retrieved but do not provide satisfactory answers.
為了減輕F1-F3,設(shè)計(jì)了prompt生成與這些特定失敗案例匹配的文本例子,每個(gè)例子包括一個(gè)query文本,一個(gè)優(yōu)選答案,7個(gè)表示失敗案例的負(fù)樣本。
對(duì)于F4,利用了Open Assistant項(xiàng)目的數(shù)據(jù)集oasst1和oasst2,這些數(shù)據(jù)集包括由LLM生成的問(wèn)題和答案,以及由人工判定的質(zhì)量分?jǐn)?shù)(0-1)。將這些數(shù)據(jù)集通過(guò)選擇有至少兩個(gè)回答的query來(lái)轉(zhuǎn)變成難負(fù)例訓(xùn)練數(shù)據(jù)。質(zhì)量最高的回答被當(dāng)做正匹配樣本,而分?jǐn)?shù)低于0.3質(zhì)量分的回答作為負(fù)樣本,如果少于七個(gè)負(fù)樣本,剩下的負(fù)樣本通過(guò)從其他query里隨機(jī)選擇得到。
論文表6是應(yīng)用這些合成數(shù)據(jù)后的實(shí)驗(yàn)結(jié)果。
參考資料
- jina embedding 發(fā)布博客:v1, v2, v2雙語(yǔ), v3
- jina embedding模型對(duì)應(yīng)的論文,如文中鏈接。