本文主要对 RAG 常见的 Embedding 模型 M3E 进行介绍。
一、M3E
1.1 简介
M3E 是 Moka Massive Mixed Embedding 的缩写。
Moka,此模型由 MokaAI 训练,开源和评测,训练脚本使用 uniem ,评测 BenchMark 使用 MTEB-zh
Massive,此模型通过千万级 (2200w+) 的中文句对数据集进行训练;
Mixed,此模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索;
Embedding,此模型是文本嵌入模型,可以将自然语言转换成稠密的向量
M3E 是由MokaAI团队开发的一种开源中文 Embedding 模型。该模型采用了大规模混合嵌入技术,旨在提高词向量的表达能力和泛化能力。M3E在训练过程中充分考虑了词语之间的语义关系、上下文信息以及领域知识等因素,从而生成了更加丰富、准确的词向量。
1.2 适用场景
M3E 在使用场景主要是中文,少量英文的情况情况下表现不错。
具体模型可以通过如下方式下载使用:
github : https://github.com/wangyingdong/m3e-base
huggingface : https://huggingface.co/moka-ai/m3e-base
模型对比:
说明:
- s2s, 即 sentence to sentence ,代表了同质文本之间的嵌入能力,适用任务:文本相似度,重复问题检测,文本分类等
- s2p, 即 sentence to passage ,代表了异质文本之间的嵌入能力,适用任务:文本检索,GPT 记忆模块等
- s2c, 即 sentence to code ,代表了自然语言和程序语言之间的嵌入能力,适用任务:代码检索
- 兼容性,代表了模型在开源社区中各种项目被支持的程度,由于 m3e 和 text2vec 都可以直接通过 sentence-transformers 直接使用,所以和 openai 在社区的支持度上相当
- ACC & ndcg@10,详情见下方的评测
二、Text2vec
1.1 简介
Text2vec,全称 Text to Vector, Get Sentence Embeddings。文本向量化模型,把文本(包括词、句子、段落)表征为向量矩阵。
text2vec 实现了 Word2Vec、RankBM25、BERT、Sentence-BERT、CoSENT等多种文本表征、文本相似度计算模型,并在文本语义匹配(相似度计算)任务上比较了各模型的效果。
github : https://github.com/shibing624/text2vec
参考链接:
[1] https://huggingface.co/moka-ai/m3e-base
[2] https://github.com/wangyingdong/m3e-base
[3] M3E:引领开源中文Embedding模型新SOTA-百度开发者中心