动手学习RAG: 向量模型

在世界百年未有之变局与个人自暴自弃的间隙中,我们学一点RAG。 RAG是一种独特的应用,“一周写demo,优化搞半年”,我甚至听说它能破解幻术。

为了理解其优化中的关键一环,我们先看下文本向量。文本向量除了是RAG检索的重要模块外,也应用在信息检索、排序、分类、聚类、语义相似度中。

添加图片注释,不超过 140 字(可选)

1. 词向量到文本向量

向量模型把人类世界中的语言,变为计算机世界中的数字。输入一句话,输出一维向量。由于transformer中的一句话一般会输出一个二维向量,其形状为(sequence_length, embedding_dim),因此模型后面通常加一层pooling,把sequence_length这一维坍塌。

pip install open-retrievals

添加图片注释,不超过 140 字(可选)

colab上有这段小小的代码: https://colab.research.google.com/drive/1dTzcMJNX3kSqqjTFUJXwZu6fRnf_5oHD?usp=sharing

更多更好的模型,根据语言需要(英文或中文还是多语言),顺着MTEB的榜单捋一下就行:https://huggingface.co/spaces/mteb/leaderboard

在这里插入图片描述

2. 文本向量的若干主流训练范式

语言模型可以很容易得到一个文本向量模型,但语言模型并不是为向量训练的,因此预训练的语言模型直接pooling不一定能取得满意的效果。那么,根据向量任务先微调一下再用。

微调的目的,把相似句子向量聚拢更近一些,把不相关的句子向量拉的更远一些。如何从一个语言模型训练出一个向量模型呢?我们从几篇典型论文中理解其范式。

BGE模型

  • 使用普通的文本语料进行RetroMAE预训练
  • 使用大量文本对进行batch内负样本对比学习
  • 使用高质量文本进行困难负样本加batch内负样本根据任务对比学习微调

添加图片注释,不超过 140 字(可选)

GTE模型

  • 大量文本对进行batch内负样本对比学习
  • 高质量文本进行困难负样本学习

在这里插入图片描述

E5-mistral模型

  • 合成大量的不同任务不同语言的检索数据,困难负样本与batch内负样本对比学习

添加图片注释,不超过 140 字(可选)

nv-embed模型

  • 高质量检索数据进行困难负样本加batch内负样本对比学习
  • 继续根据非检索数据,如一些分类等其他任务数据进行微调

添加图片注释,不超过 140 字(可选)

3. 结论

我们试图从几种范式中总结出以下几点认知:

  • 训练方式,尤其是合理设计的多阶段pipeline仍然能够提升性能
  • 数据,数据大小、质量、多样性很重要,甚至更长的文本在向量模型中也更受重视。更重要的,合成数据开始展露头脚
  • 模型,Decoder-only LLM微调的向量模型效果越来越好。大模型也逐步统治向量模型榜单,带来的收益和增加的开销相比如何,咱也不知道,但是这些参数中蕴含的知识确实让人印象深刻
  • 对比学习和难负样本挖掘仍然扮演关键角色。
  • 多任务,用不同任务不同来源的数据进行训练,一个batch内如何组织数据也有优化空间。instruction-based fine-tuning可以在训练时帮助模型拿到任务上的线索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YueTann

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值