赞
踩
之前参加RAG+LLM比赛的时候,根据自身经验以及之前参加的比赛Top方案。主要采用以下Embedding模型进行向量召回: BGE,M3E, GTE。全部都是基于对比学习的方式。所以仔细的阅读了下关于BGE的这篇文章。 希望能够找到一些方法提升一下模型的效果吧。
C-Pack: Packaged Resources To Advance General Chinese Embedding(BAAI)
[图片]
作者推出C-Pack资源集合。该资源包包含三大核心组件:
C-MTEB提供了一个全面的评测基准,它整合了6项任务与35个数据集。
C-MTP是一个精选的大规模中文文本嵌入数据集,来源于有标注和无标注的语料库。
C-TEM是一系列多样化规模的文本嵌入模型。
总共收集了35个公开数据集,所有这些数据 集都可用于评估中文text embedding。评估的任务有6个:检索、重排序、文本语义相 似度(STS)、分类、对分类和聚类。
包含unlabeled数据和labeled数据。
数据来源:主要来源于开放的网络数据,最具有代表性的是Wudao corpus (Yuan et al., 2021),它是最大的用于预训练汉语语言模型的格式良好的数据集。 对于每篇文章,提取(标题,段落)以形成文本对。按照同样的方法,也从其他类 似的网页内容中收集这样的文本对,包括知乎、 百科、新闻网站等。除了开放的网络内容, 还探索了其他公开的中文数据集来抽取 文本对,如CSL(科学文献)、Amazon-ReviewZh(评论)、Wiki原子编辑(释义)、CMRC(机器
阅读理解)、XLSUM-Zh(摘要)等。
数据过滤:来自网络和其他公共资源的文本对不能保证密切相关。因此,数据质量是一个主要问
题。论文使用Text2Vec-Chinese过滤掉了阈值低于0.43的文本对
数据来源:收集了一些开源的标记数据集:T 2 - Ranking (Xie et al., 2023)、DuReader (He et al.,
2017; Qiu et al., 2022)、mMARCO (Bonifacio et al., 2021)、CMedQA-v2 (Zhang et al., 2018a)、
cpr (Long et al., 2022)、NLI-Zh 3、cmnli (Xu et al., 2020a)和ocnli (Xu et al., 2020a)。覆盖了text embedding的各种场景,检索、排序、相似度比较等。
模型有三种不同的尺度:large(具有326M参数),base(具有102M参数)和small(具有24M参数)。模型大小:参数量*4字节。
后面可以考虑做下量化。https://github.com/PrithivirajDamodaran/blitz-embed 这个项目主要是对text embedding模型的一些量化
在大量纯文本上进行训练。利用RetroMAE (Liu and Shao, 2022; Xiao et al., 2023)中提出 的mae风格的方法,这种方法简单但非常有 效。mask的文本被encoder编码,把encoder的编码结果和原始文本的aggresive掩码一起输入到一个只有transformer一层的解码器上中解码,由于解码器非常简单,解码任务的难度会增加,这使得编码器需要比较高的性能。
在C-MTP (unlabeled) 上通过contrastive learning的方式进行微调。损失函数: InfoNCE (一般的对比学习中都用的这个,看见GTE里面对这个损失函数进行了一些改进)。
两者的区别主要是底下的归一化的因子不同, bge的只考虑了query和postive doc以及 query和negetive doc的联系,gte还考虑了query和neg query,negative doc,postive doc,以及postive doc和negative doc之间的相似性。感觉更好一些。
图1. BGE-Loss
图2. GTE-Loss
使用C-MTP (labeled)数据进行微调。标记的数据集 更小,但质量更高。然而,所包含的任务类型
不同,其影响可能相互矛盾。采用两种方式来处理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。