赞
踩
判断哪些文本嵌入模型效果较好,通常需要一个评估指标来进行比较,MTEB就是一个海量文本嵌入模型的评估基准。
MTEB: Massive Text Embedding Benchmark(海量文本嵌入基准)
论文摘要如下:
文本嵌入通常在单个任务的一小部分数据集上进行评估,而不包括它们在其他任务中的可能应用。目前尚不清楚最新的语义文本相似性嵌入(STS)是否可以同样很好地应用于其他任务,如聚类或重新排序。这使得该领域的进展难以跟踪,因为各种模型不断被提出而没有得到适当的评估。为了解决这个问题,我们引入了海量文本语义向量基准测试(MTEB)。MTEB包含8个语义向量任务,涵盖58个数据集和112种语言。通过在MTEB上对33个模型进行基准测试,我们建立了迄今为止最全面的文本嵌入基准。我们发现没有特定的文本嵌入方法在所有任务中都占主导地位。这表明该领域尚未集中在一个通用的文本嵌入方法上,并将其扩展到足以在所有嵌入任务上提供最先进的结果。
榜单地址:https://huggingface.co/spaces/mteb/leaderboard
Bitext Mining(双语文本挖掘):输入是来自两种不同语言的两组句子。对于第一组中的每个句子,需要在第二组中找到最佳匹配。匹配通常是翻译。所提供的模型用于嵌入每个句子,并通过余弦相似度找到最接近的对。
Classification(分类):训练和测试集均使用所提供的模型进行文本嵌入表示。训练集用于训练逻辑回归分类器(如最大迭代100次),在测试集中进行评分。
Clustering(聚类):给定一组句子或段落,目标是将它们分组成有意义的类。
Pair Classification(句子对分类):提供一对文本输入,并需要分配一个标签。标签通常是表示重复或释义对的二进制变量。两个文本通过模型嵌入,它们的距离用各种度量来计算(余弦相似度,点积,欧氏距离,曼哈顿距离)。
Reranking(重新排序):输入是一个查询query和文本的列表(列表中是与query相关或不相关的文本)。其目的是根据与查询的相关性对结果进行排序。文本和query通过模型进行嵌入,然后使用余弦相似度将其与查询进行比较。对每个查询进行评分,并在所有查询中取平均值。指标是平均MRR@k和MAP,后者是主要指标。
Retrieval (检索):每个数据集由语料库、查询query和每个查询到语料库中相关文档的映射组成。目的是找到这些相关文件。所提供的模型用于嵌入所有查询和所有语料库文档,并使用余弦相似度计算相似度分数。根据分数对每个查询的语料库文档进行排序后,分别计算nDCG@k, MRR@k,MAP@k、precision@k和recall@k。nDCG@10作为主要度量。
Semantic Textual Similarity(STS)(语义文本相似度):给定一对句子,目的是确定它们的相似度。标签是连续得分,数字越高表示句子越相似。所提供的模型用于嵌入句子,并使用各种距离度量来计算句子的相似度。距离的基准是使用Pearson和Spearman相关性的真实相似度。基于余弦相似度的Spearman相关作为主要度量。
Summarization(摘要):提供了一组人工编写和机器生成的摘要。目的是给机器生成的摘要进行打分。所提供的模型首先用于嵌入所有摘要。
对每个机器生成的摘要嵌入,计算与所有人类摘要嵌入的距离。
最接近的分数(例如,最高余弦相似度)被保留并用作单个机器生成摘要的模型分数。
为了进一步提高MTEB的多样性,还包括了不同文本长度的数据集。所有数据集分为三类:
C_MTEB榜单地址:https://github.com/FlagOpen/FlagEmbedding/tree/master/C_MTEB#leaderboard
最全面的中文语义向量评测基准C-MTEB 开源,涵盖6大类评测任务(检索、排序、句子相似度、推理、分类、聚类),涉及31个相关数据集,已合并至 Hugging Face MTEB leaderboard 中。
项目地址:https://github.com/shibing624/text2vec
中文匹配模型shibing624/text2vec-base-chinese是基于中文STS训练集训练的CoSENT匹配模型。CoSENT模型提出了一种排序的损失函数,使训练过程更贴近预测,模型收敛速度和效果比Sentence-BERT更好。
M3E Models :Moka(北京希瑞亚斯科技)开源的系列文本嵌入模型。
m3e-base项目地址:
https://huggingface.co/moka-ai/m3e-base
m3e-small项目地址:
https://huggingface.co/moka-ai/m3e-small
M3E 是 Moka Massive Mixed Embedding 的缩写
M3E Models 是使用千万级 (2200w+) 的中文句对数据集进行训练的 Embedding 模型,在文本分类和文本检索的任务上都超越了 openai-ada-002 模型(ChatGPT 官方的模型)。
如下图所示:
模型 | 参数数量 | 维度 | 中文 | 英文 | s2s | s2p | s2c | 开源 | 兼容性 | s2s Acc | s2p ndcg@10 |
---|---|---|---|---|---|---|---|---|---|---|---|
m3e-small | 24M | 512 | 是 | 否 | 是 | 否 | 否 | 是 | 优 | 0.5834 | 0.7262 |
m3e-base | 110M | 768 | 是 | 是 | 是 | 是 | 否 | 是 | 优 | 0.6157 | 0.8004 |
text2vec | 110M | 768 | 是 | 否 | 是 | 否 | 否 | 是 | 优 | 0.5755 | 0.6346 |
openai-ada-002 | 未知 | 1536 | 是 | 是 | 是 | 是 | 是 | 否 | 优 | 0.5956 | 0.7786 |
说明:
Tips:
项目地址:https://github.com/FlagOpen/FlagEmbedding
博客链接:https://zhuanlan.zhihu.com/p/648448793
BGE 模型链接:https://huggingface.co/BAAI/
BGE是北京智源人工智能研究院发布的中英文语义向量模型。在中英文语义检索精度与整体语义表征能力均超越了社区所有同类模型(后来又被其他模型超越),如OpenAI 的text embedding 002等。此外,BGE 保持了同等参数量级模型中的最小向量维度,使用成本更低。
BGE的技术亮点:
主要思想是encoder用小一点的mask rate得到sentence embedding,然后decoder用大一点的mask rate结合encoder得到的sentence embedding进行重构。
此外,为了使得每个token使用的context信息不同,RetroMAE还使用了增强解码的方法。
项目地址:https://huggingface.co/sensenova
piccolo是一个通用embedding模型(中文), 由来自商汤科技的通用模型组完成训练。piccolo借鉴了**E5(微软)以及GTE(阿里达摩院)的训练流程,采用了两阶段的训练方式。
在第一阶段中,我们搜集和爬取了4亿的中文文本对**(可视为弱监督文本对数据),并采用二元组的softmax对比学习损失来优化模型。
在第二阶段中,我们搜集整理了2000万人工标注的中文文本对(精标数据),并采用带有难负样本的三元组的softmax对比学习损失来帮助模型更好地优化。 目前,我们提供了piccolo-base-zh和piccolo-large-zh两个模型。
pretrain 通常不需要太大的max length, 推荐128。小的max length用以提高batch size,加快训练速度,从而适应大规模数据。 pretrain 损失我们采用二元组contrastive loss,不加入hard negative, 直接采用inbatch negative,在实际训练中,我们使用了32张40G A100进行训练,单卡的batch size为1024。
finetune 通常会将 max length扩增到512。用以适应更大长度的文本输入,finetune时会多sample S2P的数据,以增强模型在retrieval任务上的性能。 finetune 损失采用三元组contrastive loss,加入hard negative,neg num通常设置为2-7,loss计算方式可以参考GTE(阿里达摩院)里的improved contrastive loss。 注意: 我们给query和passage设置了不同的max length,query的max length始终保持在64。
项目地址:https://huggingface.co/infgrad/stella-base-zh
博客地址:https://zhuanlan.zhihu.com/p/655322183
stella是一个通用的中文文本编码模型,目前有两个版本:base 和 large,2个版本的模型均支持1024的输入长度。
开源数据(wudao_base_200GB[1]、m3e[2]和simclue[3]),着重挑选了长度大于512的文本
在通用语料库上使用LLM构造一批(question, paragraph)和(sentence, paragraph)数据
stella-base-zh和stella-large-zh分别以piccolo-base-zh[6]和piccolo-large-zh作为基础模型,512-1024的position embedding使用 层次分解位置编码(苏神)进行初始化。piccolo是商汤科技研究院开源的piccolo系列模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。