文章核心内容 :在MTEB上刷到了第一名的向量模型,完全基于公开数据,不包括来自 GPT-4 等专有模型的任何合成数据,模型也没有根据现有的嵌入模型进行微调。
标题 :NV-Embed: Improved Techniques for Training LLMs as Generalist Embedding Models
https://huggingface.co/nvidia/NV-Embed-v1
https://arxiv.org/html/2405.17428v1
特点总结:
- 对于模型架构,提出了一个潜在注意层来获得池化嵌入,与均值池化或使用来自 LLMs 的最后一个 token 嵌入相比,它持续提高了检索和下游任务的准确性。
- 在对比训练期间删除了 LLMs 的clm的单向注意力mask。
- 模型训练,引入了两阶段对比指令调整方法。第一阶段使用检索数据集的指令,利用批内负样例和构造的困难负示例,完成对比训练。第二阶段,将各种非检索数据集混合到指令调优中,这不仅增强了非检索任务的准确性,而且提高了检索性能。
- NV-Embed 模型仅使用公开数据,在大规模文本嵌入基准 (MTEB) 上排名第一(截至 2024 年 5 月 24 日)。
模型结构
- 双向注意力
与llm2vec,专门设计一个阶段来微调不同,只是在对比学习期间删除了仅解码器 LLM 的因果注意掩模,并发现它的效果非常好
- Latent Attention Layer
常见有2种方案来获取序列的嵌入:i) 均值池化,ii) 最后的 token 嵌入。
已知的问题是,均值池化仅取 token 嵌入的平均值,可能会淡化关键短语中的重要信息;使用 token 嵌入可能会遇到recency bias,严重依赖于输出嵌入最后一个 token。
这里用到的池化如下图,额外加了一个attention层,k,v可训练,最后借一个mlp以及池化
消融实验如下,双向注意力 & 单向,以及几种池化效果差异
训练数据
不同的任务使用不同的instruct模板,如下图
难负例的挖掘使用bm25
“
NLP前沿交流群成立,详见置顶推文。进群加微:nipi64310
-END-
右下角,帮忙点点
+