一个达到openai-ada向量效果的向量模型开源项目(从0开始训练8192上下文)
作者: NLP前沿 来源: NLP前沿
“
RAG场景目前的向量模型的效果,bge-m3 > bce > bge > cmteb前排的所有模型。这篇文章的价值是很高的,他开源了详细的技术报告、code、数据。而且训练结果超过了openai-ada模型,支持8192长度的输入,在做向量模型的同学肯定是可以借鉴一下的。
https://blog.nomic.ai/posts/nomic-embed-text-v1
https://github.com/nomic-ai/contrastors
https://static.nomic.ai/reports/2024_Nomic_Embed_Text_Technical_Report.pdf
模型改动:(在bert的基础上)
-
使用了ROPE,用以支持外推
-
使用了SwiGLU 激活
-
dropout设置成了0
训练优化:
-
使用deepspeed、flash attention训练
-
使用bf16精度
-
vocab大小调整为64的倍数
-
train batch size = 4096
-
masked language model训练的时候,mask rate调整成15%
-
没使用nsp的任务
训练顺序:
文本编码器通常通过对大量成对文本进行对比学习的方式进行训练,分为多个阶段。
在高层次上,Transformer架构首先通过自监督的MLM目标(BERT)进行预训练,然后通过规模庞大的无监督数据进行对比训练,最后通过较小的高质量的成对数据进行对比微调。
第一个无监督对比阶段是在由弱相关文本对生成的数据集上进行训练,例如来自StackExchange和Quora等论坛的问题-答案对,亚马逊评论的标题-正文对,以及新闻文章的摘要。
在第二个微调阶段,利用来自网络搜索的搜索查询和答案等更高质量的标记数据集。数据筛选和难例挖掘在这个阶段至关重要。
具体的可以看开源的项目和技术报告,我只看了下博客内容,主要最近不搞这个,但是这种超长长度文本的向量模型的训练应该还是挺有意思的。
更多AI工具,参考Github-AiBard123,国内AiBard123