当前位置: 首页 > news >正文

手机版网站开发想要标注倾斜直线的实际长度

手机版网站开发,想要标注倾斜直线的实际长度,业之峰装饰公司官网,服装设计师培训文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相… 文章目录 Jina Embedding: 从v1到v3Jina Embedding v1数据集准备训练过程 Jina Embedding v2预训练修改版BERT在文本对上微调在Hard Negatives上微调 Jina Embedding v2 双语言预训练修改版BERT在文本对上微调用多任务目标微调 Jina Embedding v3预训练在文本对上微调训练任务相关的适配器分类适配器文本匹配适配器Separation适配器非对称检索适配器 参考资料 Jina Embedding: 从v1到v3 基座模型支持语言模型大小编码长度向量维度下载链接Jina Embedding v1T5英语14M/35M/110M/330M512512/512/768/1024huggingfaceJina Embedding v2BERT英语33M/137M/435M8192512/768/1024huggingfaceJina Embedding v3XLM-RoBERTa多语言572M81921024(可变大小)huggingface Jina Embedding v1 jina embedding v1 对应的论文为2023年7月的《Jina Embeddings: A Novel Set of High-Performance Sentence Embedding Models》在这篇论文里强调了数据清洗在数据集准备过程中很重要一个更小但质量高的数据集比一个很大但是质量差的数据集训练的模型效果更好。 数据集准备 数据集来源包括公共数据集和自有数据集。 在数组的组织方式上分为数据对和三元组根据源数据集的类型分别采用不同的数据提取方法比如QA数据集用问题作为query字符串用答案作为目标字符串。 数据对记为 ( q , p ) ∈ D pairs (q, p) \in D_{\text{pairs}} (q,p)∈Dpairs​每一个数据对包括query字符串q和相关的目标字符串p。三元组记为 ( q , p , n ) ∈ D triplets (q,p,n) \in D_{\text{triplets}} (q,p,n)∈Dtriplets​每一个三元组包括了query字符串q和一个匹配字符串p (positive) 和 不匹配字符串n (negative) 在准备数据对时进行如下的清洗步骤 去重De-Duplication用hash函数来识别去掉重复的数据对。在检查重复数据之前将空格字符串归一化并进行大小写转换。语言过滤Language Filterring用fasttext-language-identification模型只保留英文数据。一致性过滤Consistency Filtering去掉相似性比较低数据对。用all-MiniLM-L6-v2 model模型来进行一致性过滤从 D pairs D_{\text{pairs}} Dpairs​数据集中随机采样1M个数据对 ( q i , p i ) i (q_i, p_i)_i (qi​,pi​)i​并为它们生成embedding。对于数据集中的每一个数据对 ( 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, i1,\ldots,1M pi​,i1,…,1M相比是不是与 q q q最相似的top 2基于向量余弦相似度。经过这一步骤后数据集大小从1.5B减少到了385M。 数据对来源于32个数据集过滤前的数据量为1.6 billion过滤完之后为385 million。 在准备三元组数据时没有进行去重和语言过滤步骤但采用了与一致性过滤类似的步骤来校验“positive”元素与query元素的相关性用cross-encoder模型ms-marco-MiniLM-L-6-v2来比较每一个三元组 ( 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)判断是否满足 r ( q , p ) − r ( q , n ) κ r(q,p) - r(q,n) \kappa r(q,p)−r(q,n)κ阈值为 κ 0.2 \kappa0.2 κ0.2只保留满足阈值条件的三元组。 否定数据(Negation Data)的准备许多向量模型对于否定含义的句子难以区分比如对于三个句子1. “A couple walks hand in hand down a street.”2. “A couple is walking together.” 3. “A couple is not walking together.” 直觉上前面两个的向量距离应该更接近第二个和第三个应该距离更远但是很多模型无法区别其差异。于是Jina Embedding团队创建了一个negation数据集( [已开源](https:// huggingface.co/datasets/jinaai/negation-dataset) )这个数据集的正样本对来自SNLI数据集否定句由GPT-3.5生成组成(anchor, entailment, negative)的三元组形式与前述例子类似。(anchor, entailment)组成正样本对“negetive与”anchor和“entailment”的含义都互相矛盾但是与“entailment”的句法非常相似。这个否定数据集是前面的三元组数据集的一部分。 三元组数据在过滤前是1.13 million过滤完之后927,000个其分布如论文图2。 训练过程 训练分为两阶段第一阶段在数据对上进行训练使得它们的语义整合到一个语义向量上第二阶段在相对较小的三元组数据上训练让模型区分相似和不相似文本的区别。 Jina Embedding模型基于zero-shot T5模型的encoder训练作者说因为它在一系列下游任务上进行了预训练所以选择它。在T5 encoder之上使用mean pooling layer由token embeddings得到固定长度的向量。 第一阶段的训练损失函数采用InfoNCE即对一个大小为k的batch B ∈ D k B \in D^k B∈Dk的数据对 ( q , p ) ∼ B (q, p) \sim B (q,p)∼B损失函数通过比较给定问题q和目标p的余弦相似度与batch中其他目标的的相似度来计算得到 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_{i1}^k e^{s\left(q, p_i\right) / \tau}}\right] LNCEpairs ​(B):E(q,p)∼B​[−ln∑i1k​es(q,pi​)/τes(q,p)/τ​] 此外作者发现在训练时计算两个方向的损失可以提高性能即也考虑 L N C E ‾ pairs  \mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {pairs }} LNCEpairs ​ 从目标字符串去匹配所有query字符串。所以其最终损失函数如下式(温度参数取 τ 0.05 \tau0.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_{i1}^k e^{s\left(p, q_i\right) / \tau}}\right] Lpairs (B):LNCEpairs ​(B)LNCEpairs ​(B),whereLNCEpairs ​(B):E(q,p)∼B​[−ln∑i1k​es(p,qi​)/τes(p,q)/τ​] 在训练时不是按顺序地在每个训练集上训练而是同时在所有数据集上训练但是在每一个训练batch里数据只来自单个数据集以确保损失计算时不会合并其他任务的数据。训练前每个数据集中的数据被shuffle训练时根据采样概率 ρ ( D i ) ∣ D i ∣ s i ∑ j 1 n ∣ D j ∣ s j \rho (D_i) \frac{|D_i|s_i}{\sum^n_{j1} |D_j|s_j} ρ(Di​)∑j1n​∣Dj​∣sj​∣Di​∣si​​来采样 D i D_i Di​采样概率与数据集大小 ∣ D i ∣ |D_i| ∣Di​∣和缩放因子 s i s_i si​决定因为数据集大小的不一样更频繁地从更大的数据集采样可以防止过拟合用缩放因子来优先在高质量数据集上训练并且可以平衡文本领域。训练时如果一个数据集的样本消耗完了数据集会被重置模型可以重新从这个数据集获取数据来训练确保了高采样率数据集在单个训练epoch中可以贡献多次。论文图1b是基于采样率的每个数据集的比例。 作者经过试验发现在训练第二阶段最好的结果是通过组合多个常用tuiplet loss 函数得到的(温度参数取 τ 0.05 \tau0.05 τ0.05)InfoNCE损失函数的使用了额外负例的扩展版本 L N C E triplets  \mathcal{L}_{\mathrm{NCE}}^{\text {triplets }} LNCEtriplets ​ 式2与第一阶段一样的反向InfoNCE损失函数 L N C E ‾ triplets  \mathcal{L}_{\mathrm{\overline{NCE}}}^{\text {triplets }} LNCEtriplets ​ 式3triplet margin损失函数 L 3 triplets  \mathcal{L}_{3}^{\text {triplets }} L3triplets ​式4 ϵ 0.05 \epsilon0.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_{i1}^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_{i1}^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):LNCEtriplets ​(B)LNCEtriplets ​(B)L3triplets ​(B), where (1)LNCEtriplets ​(B):E(q,p,n)∼B​[−ln∑i1k​exp(s(q,pi​)/τ)exp(s(q,ni​)/τ)exp(s(q,p)/τ)​](2)LNCEtriplets ​(B):E(q,p,n)∼B​[−ln∑i1k​exp(s(p,qi​)/τ)exp(s(p,q)/τ)​](3)L3triplets ​(B):E(q,p,n)∼B​[ReLU(s(q,n)−s(q,p)ε)].(4)​ 训练的超参数如论文表5. Jina Embedding v2 Jina Embedding v2 对应的论文是2023年10月的《Jina Embeddings 2: 8192-Token General-Purpose Text Embeddings for Long Documents》Jina Embedding v2的主要特点是可以对长达8192 token的文本进行向量编码长文本上下文窗口是通过AliBi来实现的。 Jina Embedding v2 的训练过程分为3个阶段1. 预训练一个修改的BERT2. 在文本对数据上微调3. 在Hard Negatives上微调。第2和第3阶段是针对embedding任务来进行微调的与其他论文的结论有一样第三阶段对于提升模型在检索和分类任务上的性能很关键。 预训练修改版BERT 对BERT模型做一些修改而训练过程主要采用RoBERTa所描述的方法。 模型架构 对自注意力机制使用ALiBi方法因为原始的ALiBi是为因果语言建模设计的所以其特征bias只在一个方向所以在encoder模型里应用了ALiBi的修改版如论文图1所示意。对注意力模块的前向传播子层使用GLU(Gated Linear Units): 对于small和base模型使用GEGLU对于large模型使用ReGLU这个选择也与其他论文一致说对于large模型使用GEGLU不稳定。对于Layer Normalixation使用与transformer的原论文《attention is all you need》一样的post-layer normalization。 训练数据使用C4(Colossal, Cleaned, Common Crawl)数据集来进行预训练只保留了英文语料。 训练算法 去掉BERT里的下句预测任务(next sentence predictin, NSP)使用whole word masking 随机mask掉30%的输入词元(token)。在这些被mask掉的token中80%用[MASK] token替换10%用随机token替换10%保持不变。损失函数使用Masked Language Model 损失函数训练时文本最大长度为512。样本处理上不会将多个文档的数据堆叠到一起组成长文本也会避免从一个文档中采样多个文本序列对每一个文档只考虑前512个token而裁剪掉剩下的文本。使用AdamW优化器 β 1 0.9 , β 2 0.98 , ϵ 1 e − 6 \beta_10.9, \beta_20.98, \epsilon1e-6 β1​0.9,β2​0.98,ϵ1e−6 weight decay为0.01dropout rate为0.1 attention的dropout也为0.1。learning rate schedule为线性的从0开始在10000步时达到 η \eta η对small、base、large模型的 η \eta η取值分别为1e-3, 6e-4,4e-4在达到100000步后学习率逐渐线性衰减到0。通常DeepSpeed来实现FP16动态混合精度而作者说初步测试表明BF16会导致不满意的性能指标。 在文本对上微调 文本向量通过在所有token embedding上加mean pooling层得到。 训练数据与Jina Embedding v1的文本对准备数据流程一致包括了40种不同来源数据观察到数据集中包括title-abstract对可以显著提升向量模型在聚类任务上的性能。在数据上的采样策略也与Jina Embedding v1一致。 损失函数与Jina Embedding v1一致。 在Hard Negatives上微调 这一阶段的主要目的是提高模型的排序能力所以是在包含负样本的数据集来训练的。 训练数据数据集包括检索数据集如MSMarco NQ(Natural Questions)以及多个非检索数据集如Natural Language Inference(NLI)。对于每一个训练样本记为 ( q , p , n 1 , … , n 15 ) (q, p, n_1, \ldots, n_{15}) (q,p,n1​,…,n15​)即包括1个正样本和15个负样本。对于检索数据集难负样本由检索模型判断与p相似而得到即指导模型优先相关文档而不仅仅是语义相关对于非检索数据集负样本是随机选择的因为在正样本和负样本之间画一条清晰的线并不可行。判断是否相关时使用cross-encoder模型来判断。 损失函数修改后的InfoNCE损失函数 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_{i1}^k [ e^{s(q, p_i) / \tau} \sum^{15}_{j1} e^{s(q, n_{j,i})/ \tau)}]} \right] \qquad \\ \mathbb{E}_{r \sim B}\left[-\ln \frac{e^{s(p, q) / \tau}}{\sum_{i1}^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∑i1k​[es(q,pi​)/τ∑j115​es(q,nj,i​)/τ)]es(q,p)/τ​]Er∼B​[−ln∑i1k​es(p,qi​)/τes(p,q)/τ​]with r(q,p,n1​,…,n15​) 在这两个阶段进行微调训练时大的batch size是更优的为了节省内存利用deepspeed实现混合精度训练此外使用Activation checkpointing技术在模型的每一个BERT层插入checkpoint。 Jina Embedding v2 双语言 Jina Embedding v2双语言模型对应的论文为2024年2月的《Multi-Task Contrastive Learning for 8192-Token Bilingual Text Embeddings》这一篇里讲了用相对小的模型实现英语和另一个目标语言(如德语、中文、西班牙语)的双语向量编码。 与Jina Embedding v2一样训练过程分为3个阶段1. 预训练一个修改的BERT2. 在文本对数据上微调3. 用多任务目标(Multi-Task Objective)来微调。 预训练修改版BERT 模型架构 与Jina Embedding v2一样。对西班牙语模型对key和query向量引入了一个normalization来解决训练不稳定性这个方法与QK-normalization有点关联但不完全一样。子词分词器使用BPE分词器并使得词汇表大小比jina Embedding v2的单语言版扩展了一倍所以base模型的参数增加了一些从137M到161M。 训练数据数据来源有CulturaX, Wikipedia, Opus经过清洗后得到250M英文文本和相同数量的目标语言文本留了1%的数据用作验证集。 训练算法与Jina Embedding v2基本一样因为训练数据包括双语言所以在每一个batch的数据是单语言。 在文本对上微调 文本向量通过在所有token embedding上加mean pooling层得到在训练节省内存的策略上也与Jina Embedding v2保持一致。 训练数据 收集了211million德文、111million西班牙语、518million英语文本对(有点奇怪为什么没有提到中文数据量)。数据集中主要数据都是单语言文本对(97.5%)主要是(标题, 文章)、(问题, 回答)、(文本, 文本总结)其余的是双语言文本对即包括用两种语言表示的相同含义文本构成了用来桥接英语和其他语言的平行语料。数据集来源包括MQA、XL-Sum、XNLI、 MLSum、Europarl。此外为了多样性和数据量用Common Crawl数据闯将了两种类型的文本对1. 网页title和内容2. 从FAQ和相关页面挖掘question-answer对。从Wikipedia获取段落和对应的章节标题。通过两阶段处理策略来提高数据质量 过滤阶段通过一些质量检查实现比如将非常短的文本、非常长的文本、重复行很多的文本给删除在改进阶段不删除文本只进行包括去掉网址相关的元数据、去掉未结束的行、只有一个单词的行等的操作。为进一步提高数据集质量使用near-depuplication方法去除重复数据使用Jina Embedding v1里用过的一致性过滤方法过滤不一致的文本对 损失函数 与Jina Embedding v1一致。 用多任务目标微调 在之前的文献以及Jina Embedding v1和v2都表明第三阶段的在难负样本上的微调可以提高模型的排序能力所以在这篇论文里将这个概念扩展为多任务训练阶段。 对于不同的任务一般有不同的格式比如STS任务包含三元组(q,p, t)即两个文本q和p以及他们的相似分数t。而对于检索任务通常包括query q和一个或多个相关文档p以及可选的不相关文档n。所以对于每一个任务定义自己的损失函数在这篇论文中只考虑STS任务和检索任务。在每个batch采样一个数据集根据数据集任务类型来选择相应的损失函数。 训练数据检索任务与Jina Embedding v2类似STS任务数据集包括SemEval等。因为英文数据的高质量数据更多所以使用机器翻译将一些数据集翻译成目标语言。为了增加数据多样性和减少仅由翻译数据副作用的影响还挑选了一些目标语言的数据集。 损失函数检索任务的损失函数与Jina Embedding v2第三阶段的损失函数一样。STS数据集的损失函数采用negative Pearson’s sample correlation设一个batch B包括文本对(q, p)和对应的相关分数t其计算如下式 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​是估计的s(q,p)和t的标准差在一个batch内计算得到而上式中的协方差是跨批次B计算得到的。作者说基于相关性的损失函数可行的原因是它考虑相似性分数的大小而不是二元相关性选择Pearson相关系数是因为它对相似度值的尺度是不变的。作者假定这可以使包含InfoNCE损失函数的多任务训练更稳定。 Jina Embedding v3 Jina Embedding v3 对应的论文为2024年9月的《jina-embeddings-v3: Multilingual Embeddings With Task LoRA》它是一个多语言文本向量模型可处理最多8192个token长度的文本使用任务相关的LoRA适配器来生成检索、聚类、分类、文本匹配任务对应的向量向量的默认大小为1024因为使用了Matryoshka Representation Learning技术用户可灵活地改变向量大小。此外论文强调Jina embedding v3比v2和v2双语效果好很多并且在MTEB的评估上在英文任务上超过了OpenAI和Cohere的私有向量模型且比基于LLM的向量模型的大小小很多 Jina Embedding v3的架构如论文图1所示 Jina Embedding v3的训练过程也分为3个阶段1. 预训练XLM-RoBERTa2. 在文本对数据上微调3. 训练了任务相关的LoRA适配器。 预训练 模型使用XLM-RoBERTa模型的参数来初始化模型但是将位置编码修改为RoPE保留了XLM-RoBERTa的tokenizer。训练目标为使用全词mask的MLM。 训练数据 CulturaX语料集它包括89种语言的数据其中英语大概占20%。每一个batch只包含一种语言但是不同batch之间的语言是交替的。 在训练的前100000步文本序列长度被裁剪到512个token在后60000步文本序列长度被裁剪到8192个token同时使用更小的batch size具体超参见表A1。在训练时RoPE的旋转频率是10000在推理时调整到20000有助于提升模型在长文本上的能力但是作者发现这个调整后模型的长文本能力不及jina embedding v2所以在训练时将模型在更长的文本上进行了训练经过长文本训练之后jina embedding v3的长文本能力更强。 在文本对上微调 文本向量与之前系列模型一致通过在所有token embedding上加mean pooling层得到。 损失函数与jina embedding v2双语言一致。 训练数据从超过300个数据集收集得到训练时每个batch采样自一个特定数据集。数据集准备方法与jina embedding v2双语言一致只是多了一个过滤步骤将短文本里至少有80%的内容属于长文本的子字符串的文本对给去掉了这个过滤可以增加训练的难度。 与预训练过程一样先在短文本对上训练接着用更小的batch size来训练更长的文本序列这时只有包含足够多的长文本数据的数据集 训练任务相关的适配器 在这一阶段训练了在四个任务上的五个不同LoRA适配器如论文表2所示。训练时这些任务是独立训练的基座模型参数是被冻结的。在推理时用户根据下游任何和输入内容角色选择合适的适配器。 分类适配器 分类适配器为下游分类任务特别是逻辑回归分类器生成向量为训练适配器采用Gecko向量模型提出的分类训练方法。 数据集包括常见分类任务包括情感分析、意图分类、文章类别。对每一个数据集选择属于同一个类别的2个文本值(q,p)和7个不同类别的文本 ( n 1 , … , n 7 ) (n_1, \ldots, n_7) (n1​,…,n7​)构建包含9个文本的元祖 ( q , p , n 1 , … , n 7 ) (q,p,n_1,\ldots,n_7) (q,p,n1​,…,n7​)模型的训练目标是为q和p分配高的余弦相似度同时使q和其他 n i n_i ni​的余弦相似度很低。每一个batch的元祖来自同一个数据集。 损失函数与Jina Embedding v2一样是InfoNCE的扩展版本考虑了额外的负样本。 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_{i1}^k [ e^{s(q, p_i) / \tau} \sum^{m}_{j1} e^{s(q, n_{j,i})/ \tau)}]} \right] \qquad \\ \mathbb{E}_{r \sim B}\left[-\ln \frac{e^{s(p, q) / \tau}}{\sum_{i1}^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∑i1k​[es(q,pi​)/τ∑j1m​es(q,nj,i​)/τ)]es(q,p)/τ​]Er∼B​[−ln∑i1k​es(p,qi​)/τes(p,q)/τ​]with r(q,p,n1​,…,nm​) 在使用这个损失函数时在同一个batch里与 q i q_i qi​来自相同类别的文本 p j ( i ≠ j ) p_j (i \neq j) pj​(ij)被当做负样本这可能会造成假负例所以Gecko向量模型是每一个文本一个唯一id值允许模型区分batch里文本的差别就可以避免掉假负例。 文本匹配适配器 文本匹配适配器为量化两个文本之间的相似性而生成向量可应用与语义文本相似性(sementic textual similarity, STS)和对称性检索任务(即query和target之间的区别不明显)。 训练数据包括STS训练数据集如STS12、SICK这些数据集包括三元组 ( q i , p i , t i ) ∈ D (q_i, p_i, t_i) \in D (qi​,pi​,ti​)∈D即文本对 ( q i , p i ) (q_i, p_i) (qi​,pi​)以及他们的相关分数 t i t_i ti​。一个batch B包含指定数量的三元组ground truth相似度定义为 ζ ( q i , p i ) t i \zeta(q_i, p_i) t_i ζ(qi​,pi​)ti​。为了模型在跨语言的表现使用机器翻译模型如WMT19和MADLAD-3B将STS12和SICK翻译到了多种语言。此外还将natural language inference (NLI) 数据集包括进来了。每个batch中也只包含了一个数据集的数据并使用相应的损失函数(没提NLI数据集的损失函数是什么用InfoNCE?)。 损失函数使用了苏剑林提出的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 在两个文本对上进行运算要求数据集里标注ground truth相似度 ζ \zeta ζ。 Separation适配器 分离适配器(Separation Adapter)是为聚类和重排序任务设计的对重排序任务是将相关文档和不相关文档给分开。 损失函数是CoSent loss的变体训练数据 B ′ B^{\prime} B′由元组 ( x , l ) ∈ B ′ (x, l) \in B^{\prime} (x,l)∈B′组成x是文本l是它对应的标签。为了组成匹配 L c o \mathcal{L}_{co} Lco​ 的文本对在一个batch里生成同一个标签 l i l_i li​的所有文本对组合。最终的分离损失定义如下 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′} 因为满足要求的训练数据不多所以在这一阶段还混合了训练第二阶段的文本对数据(训练损失也是第二阶段的损失)在每一个训练步特定数据集被采样并使用相应的损失函数。 非对称检索适配器 与E5对应的论文一样使用两个不同的前缀加在query和document后并且同时(joinly)训练两个不同的适配器。 训练数据为包含hard negatives的数据集如MS-MARCO和Natural Questions(NQ)目的是为了让模型能够专注于细微的区别并区分相关文档和相似但不相关文档。而对于没有难负例的检索数据集使用RocketQA v2和E5论文中使用的方法用BGE-large和BM25来挖掘难负例。 损失函数是与分类适配器一样的 L triplet \mathcal{L}_{\text{triplet}} Ltriplet​。 在对Jina embedding v2在非对称检索任务上进行错误分析时发现了以下影响检索任务的点 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设计了prompt生成与这些特定失败案例匹配的文本例子每个例子包括一个query文本一个优选答案7个表示失败案例的负样本。 对于F4利用了Open Assistant项目的数据集oasst1和oasst2这些数据集包括由LLM生成的问题和答案以及由人工判定的质量分数(0-1)。将这些数据集通过选择有至少两个回答的query来转变成难负例训练数据。质量最高的回答被当做正匹配样本而分数低于0.3质量分的回答作为负样本如果少于七个负样本剩下的负样本通过从其他query里随机选择得到。 论文表6是应用这些合成数据后的实验结果。 参考资料 jina embedding 发布博客v1, v2, v2双语, v3jina embedding模型对应的论文如文中链接。
http://www.dnsts.com.cn/news/278404.html

相关文章:

  • html 单页网站做运营需要具备什么能力
  • 网站流量刷wordpress ip验证不当
  • 网站建设推介会发言稿seo查询是什么意思
  • 广州制作网站南江网站建设
  • 莱芜装修网站汕头做网站公司哪家好
  • 杭州 高端网站建设 推荐网站建设采购公告
  • 四川省建设厅的注册中心网站首页玉田网站设计公司
  • 有什么平面设计的网站老区建设网站
  • 者珠海市建设局网站网站建设创新点
  • 手机网站大全推荐网站的现状
  • 做网站优化推广贵阳建设工程信息网站
  • 个人备案网站可以做电商吗郑州网站建设方案书
  • dedecms 旅游网站模板带娃儿做的工作网站
  • 廊坊网站备案网站备案授权书模板
  • 珠海建网站的联系方式广告设计专业专科学校有哪些
  • 深圳做物流网站做网站php语言用什么工具
  • 大连市那里做网站宣传的好wordpress的api
  • 做网站怎么分手机版和电脑版提升seo排名
  • 合肥建设网站制作哪个好wordpress id连续
  • 城乡建设学校官方网站网络推广工作任务和职业能力
  • 深圳松岗 网站建设欧美风网站建设
  • 大学 建网站怎么做直播室的网站
  • 做网站是什么会计科目京东网站建设的目的
  • 循环视频做网站背景wordpress设置新页面
  • 如何做网站条幅闪图自动点击器
  • 包装设计接单网站抖音代运营招商
  • 网站空间哪个好旅游电子商务网站开发方案
  • 买域名不建网站注册网站英语怎么说
  • lng企业自建站我做钓鱼网站自首了
  • 漳州手机网站建设公司创建网站需要哪些要素