在自然语言处理(NLP)和机器学习领域,Embedding模型是将文本数据转换为高维向量表示的核心技术,直接影响NLP任务(如文本分类、情感分析等)的效果,对于提升模型性能和深入理解文本语义具有至关重要的作用。随着大模型(LLMs)技术的迅猛发展,基于检索增强生成(RAG,Retrieval-Augmented Generation)架构的应用日益增多,Embedding模型在RAG流程中扮演着关键角色,决定了私域知识向量化的准确性。
近期,浪潮信息开源了Yuan系列Embedding模型(Yuan-Embedding-1.0),该模型在中文语义向量评测基准——C-MTEB(Chinese Massive Text Embedding Benchmark)的Retrieval任务中荣获第一名,为用户加速基于大模型的智能应用创新提供了有力支持。
一、什么是Embedding模型
Embedding技术的核心在于将高维稀疏数据转化为低维稠密向量,从而有效地捕捉数据中的语义和特征关系。Embedding模型(嵌入模型)是一种将词语或句子转化为数字向量的技术,它将高维、离散的输入数据(如文本、图像、声音等)映射为低维、连续的向量表示。这些向量不仅能揭示单词或短语之间的复杂关系,还能捕捉深层的语义信息,使计算机能够进行数学运算,例如比较词语的相似性或分析句子的含义。借助Embedding模型,文本信息得以以更加结构化、可操作的形式进行处理。
当文本信息被转换为向量后,这些向量可以为多种后续任务提供强大支持,包括:
- 搜索:向量化使得搜索引擎能够根据查询与文档之间的向量相似度进行排序,从而优先展示最相关的结果。
- 聚类:在文本聚类任务中,向量化帮助衡量文本间的相似性,从而将相似的文本归为一类或簇。
- 推荐:向量化可用于构建用户和项目的特征表示,推荐系统通过计算用户与项目之间的向量相似度,根据用户的历史行为或偏好推荐相关的项目。
- 异常检测:在异常检测任务中,向量化将文本数据映射到向量空间,通过计算文本向量与正常数据的相似度或距离,识别出与常规行为不同的异常数据。
- 多样性测量:通过分析文本数据在向量空间中的分布情况,向量化可以用来评估数据集的多样性。
- 分类:通过将文本数据转化为数值向量,向量化使得分类算法能够根据文本向量与不同类别的相似度,将文本准确地归入最匹配的类别或标签。
二、什么是MTEB榜单
1. MTEB榜单
MTEB(Massive Text Embedding Benchmark)是衡量文本嵌入模型(Embedding模型)的评估指标的合集,是目前业内评测文本向量模型性能的重要参考。
MTEB的目的是为了评估向量模型在不同向量任务上的表现,希望作为寻找适用于不同任务的通用文本向量的入口,评测任务包括涵盖112种语言的58个数据集。
2. C-MTEB榜单
C-MTEB(Chinese Massive Text Embedding Benchmark)榜单是专门用来评估中文Embedding模型的多任务混合评测榜单,具体包含了Classification、Clustering、Pair Classification、Reranking、Retrieval、STS六种任务类型,共35个公开数据集。其中,Retrieval作为检索场景下最常用、最重要的测试任务,被广泛应用与大模型应用的落地场景,Retrieval任务包括查询语句和语料库,对于每个查询,从语料库中查询最相似的top-k个文档,使用BEIR相同的设置,nDCG@10是主要指标。
Retrieval是C-MTEB中的一个任务方向,共包含8个中文文本数据集,涉及了医疗、政策、电商、娱乐等各个方面。数据集主要有三部分组成:query、corpus、dev,其中query为中文问题,corpus为中文文档,包括了query的回答,该任务主要就是从海量corpus中检索出与query最为相关的内容。
Retrieval任务的8个子任务简介如下:
- Ecom:中文电商领域检索任务;
- Medical:中文医疗领域检索任务;
- Covid:中文政策文件类检索任务;
- Video:中文娱乐视频领域检索任务;
- T2:来源于搜索引擎的段落排序中文基准测试;
- Dureader:来源于百度搜索引擎的段落检索任务;
- Mmarco:中文微软问答文摘检索测试;
- Cmedqa2:中文社区医疗问答测试;
考虑到公平性,在使用上述开源训练集进行训练时,已对其中包含的部分测试集进行了筛选和清洗,保证最终模型测试结果的准确性和真实性。
三、源系列Embedding模型
Yuan-embedding-1.0 是专为增强中文文本检索能力而设计的嵌入模型,使用2阶段微调进行对比任务学习。首先,Yuan-embedding-1.0模型使用涵盖各个领域的大量对比学习数据进行训练,数据主要来在Yuan2.0所用的问答数据,在第二阶段,使用清洗后的开源及合成数据对检索任务进行增强;最终在 C-MTEB 榜单Retrieval任务重排名第一,检索评测性能为78.41。
1. 模型结构
Yuan-embedding-1.0模型结构如下:
- 采用bert-large模型作为基础模型,模型参数量为326M,使用FC Layer将输出维度从1024扩展到1792。Yuan-embedding-1.0的最大输入长度为 512 个 token,使用模型最后一层输出所有token的平均值作为Embedding向量;
- 使用多尺度表征学习(Matryoshka Representation Learning, MRL)技术来实现灵活的输出维度长度,提升模型表征性能和鲁棒性,表示维度配置为256、 512、 768、1024、1536 和 1792;
2. 训练数据构建
在构建数据集时,我们采用了对比学习的方法,创建了包含中文问题(query)、正确回答(positive response)和与问题意思相近但不正确的回答(negative response)的训练样本。这个过程的核心在于挖掘难以区分的负样本,即那些与正确回答相似但不相关的回答。我们通过两个阶段的微调来实现这一目标:第一阶段使用大规模的对比学习数据集,通过生成相似问题并筛选出低相似度的问题来构建负样本;第二阶段则基于C-MTEB训练数据,利用Yuan2.0-M32重写问题和答案,并通过向量化和索引技术来提取难负样本。最终,我们通过评估模型来选择那些得分低于正确回答的样本作为负样本,以此来提高模型的区分能力。
3. 模型微调
Yuan-embedding-1.0模型的微调采用了最大排名损失(MRL)方法,并支持多种向量维度。在微调过程中,我们特别关注批量大小和负样本数量的选择,因为这些参数对模型的训练效果有显著影响。我们通过实验确定了最佳的参数设置,以确保模型性能。正负样本的选择策略也经过了消融实验的验证,以确保模型能够从标注的正样本和随机选择的负样本中学习。此外,为了克服显存限制和提高计算资源的利用率,我们还应用了梯度检查点技术,这允许我们在有限的内存资源下训练更大的模型。
4. 实验结果
使用Yuan2.0-M32 模型对Retrieval各子任务进行强化,通过输入Corpus生成相关Query以提高数据质量和扩充数据集;LLM生成的Query与输入的Corpus相关性很高,Corpus中也可以找到Query的答案,但是Corpus能回答的问题可能不止一个,因此,对于较长的Corpus进行切分,分别输入到LLM中进行Query生成。生成相关数据后,具体的筛选过程如下:
- Query全部生成之后,删除Corpus与Query相似度低于0.7的数据
- 其余text作为新的Query构建训练数据,具体如下:
- 利用stella-large-zh-v2模型将测试集中的Corpus向量化,并构建faiss索引;
- 对于新生成的每个Query,向量化之后计算与pos之间的相似度;
- 检索出相似度低于0.7的top200个样本;
- 将pos与top200样本输入rerank模型评分
- 选择rerank得分低于pos的样本作为负样本;
在Query生成过程中,可以进行定期采样与评估,并通过调整LLM生成的筛选预置,达到高质量数据生成的要求,具体过程如下:
- 构造prompt,输入到LLM生成text;
- 将Query与text向量化,计算Query与text之间的相似度,并且将(Query, text)输入到rerank模型bge-reranker-large进行评分;
- 如果相似度低于0.75或者rerank得分低于0.9,返回第一步重新生成;
- 所有的Query生成完成之后,构建训练数据,方法同上;
以Retrieval中MedicalRetrieval任务的测试结果为例:
Retrieval子任务 | Base Model | LLM生成方法 |
CmedqaRetrieval | 47.14 | 51.472 ↑ |
CovidRetrieval | 89.399 | 93.163 ↑ |
DuRetrieval | 89.435 | 89.432 ↑ |
EcomRetrieval | 70.498 | 70.875 ↑ |
MMarcoRetrieval | 82.191 | 82.414 ↑ |
MedicalRetrieval | 68.19 | 74.665 ↑ |
T2Retrieval | 85.013 | 85.716 ↑ |
VideoRetrieval | 80.09 | 79.572 ↑ |
Average | 76.4945 | 78.413 ↑ |
5. C-MTEB测试
Yuan-Embedding-1.0模型在中文语义向量评测基准——C-MTEB(Chinese Massive Text Embedding Benchmark)的Retrieval任务中荣获第一名,在多个子任务和总成绩上均处于领先地位,可以为用户提供更为高效、精准的检索能力。
- Yuan-Embedding-1.0的使用方法:
pip install -U sentence-transformers
相似度计算:
from sentence_transformers import SentenceTransformer
sentences_1 = ["样例数据-1", "样例数据-2"]
sentences_2 = ["样例数据-3", "样例数据-4"]
model = SentenceTransformer('lier007/xiaobu-embedding-v2')
embeddings_1 = model.encode(sentences_1, normalize_embeddings=True)
embeddings_2 = model.encode(sentences_2, normalize_embeddings=True)
similarity = embeddings_1 @ embeddings_2.T
print(similarity)
- Yuan-Embedding-1.0下载链接:https://huggingface.co/IEITYuan/Yuan-embedding-1.0
- Modelscope:https://modelscope.cn/models/IEITYuan/Yuan-embedding-1.0/files
- 始智ai:https://www.wisemodel.cn/models/IEIT-Yuan/Yuan-embedding-1.0/file
四、源系列Embedding模型助力EPAI
浪潮信息-企业大模型开发平台“元脑企智”EPAI(Enterprise Platform of AI),面向企业大模型应用开发,提供了全链路、高可用的系列能力工具,能够帮助企业有效降低大模型应用门槛,帮助伙伴提升模型开发效能,打造智能生产力。EPAI平台现已支持Yuan-Embedding-1.0模型的选择,结合EPAI自研多阶段检索增强生成(RAG)技术,通过本地化检索基础知识+行业知识+企业知识,能弥补微调大模型知识更新不及时的问题,确保专业场景下大模型生成内容的准确性和可靠性。
- 更高效:
- 数据处理工具从多样的企业数据中,高效地生成微调数 据和知识库数据,效率提升40%。
- 微调工具支持千亿参数模型的高效微调。知识检索工具 检索准确率达90%。
- 支持API、对话式UI的应用交互方式,满足企业系统接 入要求。
- 更好用:
- 一站式大模型开发部署平台,EPAI提供先进的生成式AI 开发工具链。
- EPAI已适配十余种大模型,包括Yuan、Qwen、
- Llama、GLM等。行业领先大模型的开箱即用。
- 数据处理、模型微调、检索增强、应用构建等功能可视 化,降低了生成式AI应用的构建门槛。
- 更低成本的多元多模适配:
- 内置多元多模的大模型计算框架,降低企业跨算力平台 迁移、多元模型部署适配的成本。
- EPAI的算力调度管理系统,支持大型数据中心的数千卡 多元算力集群管理。
- 更安全:
- EPAI提供企业级数据安全防护,通过权限管理、数据加 密、内容审查等方式,保护企业数据、模型的安全。
- 构建既能充分利用数据价值,又能保护用户隐私、符合 法规要求的数据安全环境。