大模型RAG项目实战:阿里巴巴GTE向量模型
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷】
文章目录
- GPT多模态大模型与AI Agent智能体系列一百一二十九
- 大模型RAG项目实战:阿里巴巴GTE向量模型
- 当输入包含“soure_sentence”与“sentences_to_compare”时,会输出source_sentence中首个句子与sentences_to_compare中每个句子的向量表示,以及source_sentence中首个句子与sentences_to_compare中每个句子的相似度。
- 当输入仅含有soure_sentence时,会输出source_sentence中每个句子的向量表示以及首个句子与其他句子的相似度。
- 第5章/TrainGTE.py
- 此脚本需要在支持GPU的环境中运行
- 注意:加载数据集的过程可能会因为网络问题而失败,如果发生这种情况,请尝试重新运行代码
- 导入必要的模块和类
- 创建一个临时目录来存储训练过程中的文件
- 加载数据集
- 定义模型ID
- 定义配置修改函数
- 构建训练器的参数
- 构建并初始化训练器
- 开始训练模型
- 更多技术内容
- 总结
GPT多模态大模型与AI Agent智能体系列一百一二十九
大模型RAG项目实战:阿里巴巴GTE向量模型
5.2.2阿里巴巴GTE向量模型
通用文本向量模型(General Text Embeddings,GTE)模型,这是一种基于多阶段对比学习的通用句向量模型,由阿里巴巴团队提出。GTE模型在大规模文本嵌入基准(Massive Text Embedding Benchmark,MTEB)评测排行榜上取得了优异的成绩,超过了其他竞争模型如Instructor和E5。MTEB是衡量文本嵌入模型(Embedding模型)的评估指标的合集,是目前业内评测文本向量模型性能的重要参考。对应的C-MTEB则是专门针对中文文本向量的评测基准,被公认为是目前业界最全面、最权威的中文语义向量评测基准之一,为深度测试中文语义向量的全面性和可靠性提供了可靠的实验平台。阿里、腾讯、商汤、百川等多家厂商在此榜单测评发布模型。GTE模型采用了Transformer编码器,具有三种不同的模型尺寸,分别以MiniLM-small、BERT-BASE和BERT-LARGE作为模型初始化。在训练过程中,GTE使用双塔模型结构,将语言模型生成的所有位置的最后一层隐状态的平均值作为句子表征。与传统的对比学习不同,GTE采用了一个改进的对比损失函数,对负样本进行了更多的扩充。GTE的训练过程分为预训练和微调两个阶段,两个阶段都使用了对比学习和改进的对比损失函数。在预训练阶段,研究人员收集了各种领域的开源数据,包括网页搜索、科学文献、社区问答、社交媒体、维基百科和代码仓库等,总共接近8亿的文本对(Query,Positive Document)。为了维持数据平衡并防止模型学习到不同任务的特性,采用了特定的抽样策略,并确保同一批次的数据来自同一任务。在微调阶段,研究人员基于少量的人工标注数据集,利用额外的检索器获得Hard Negative数据,构造出文本相关性三元组(Query,Positive Document,Negative Document)数据,约300万条,使模型在高质量数据上进一步微调。实验结果显示,GTE模型的性能与训练数据的数量(无论是预训练还是微调)、模型本身的容量存在正相关关系。预训练和微调对于句向量模型的性能都是必要的,缺一不可。此外,与传统的只进行微调的方法相比,GTE等当前的SOTA模型在性能上有了显著提升。这可能是因为基底模型本身的能力有限,而针对性的预训练可以进一步提高基底模型的上限,从而提升模型的整体表现。
总的来说,GTE模型通过显著增加训练数据,实现了性能的大幅提升。下面讲解GET工具如何使用,拿中文nlp_gte_sentence-embedding_chinese-large模型为例。
1.使用模型
文本表示是自然语言处理领域的核心问题, 其在很多自然语言处理、信息检索的下游任务中发挥着非常重要的作用。近几年,随着深度学习的发展,尤其是预训练语言模型的出现极大的推动了文本表示技术的效果,基于预训练语言模型的文本表示模型在学术研究数据、工业实际应用中都明显优于传统的基于统计模型或者浅层神经网络的文本表示模型。这里主要关注基于预训练语言模型的文本表示。
文本表示示例,输入一个句子,输出一个固定维度的连续向量:
输入:
吃完海鲜可以喝牛奶吗?
输出:
[0.27162,-0.66159,0.33031,0.24121,0.46122,…]
文本的向量表示通常可以用于文本聚类、文本相似度计算、文本向量召回等下游任务中。GTE模型可以使用在通用领域的文本向量表示及其下游应用场景,包括双句文本相似度计算、查询和多文档候选的相似度排序。
在ModelScope框架上,提供输入文本(默认最长文本长度为128),即可以通过简单的Pipeline调用来使用GTE文本向量表示模型。ModelScope封装了统一的接口对外提供单句向量表示、双句文本相似度、多候选相似度计算功能。使用GTE模型代码如下:
#第5章/GTESentenceEmbeddingChineseLarge.py
from modelscope.models import Model
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
model_id = “iic/nlp_gte_sentence-embedding_chinese-large”
pipeline_se = pipeline(Tasks.sentence_embedding,
model=model_id,
sequence_length=512
) # sequence_length 代表最大文本长度,默认值为128
当输入包含“soure_sentence”与“sentences_to_compare”时,会输出source_sentence中首个句子与sentences_to_compare中每个句子的向量表示,以及source_sentence中首个句子与sentences_to_compare中每个句子的相似度。
inputs = {
“source_sentence”: [“吃完海鲜可以喝牛奶吗?”],
“sentences_to_compare”: [
“不可以,早晨喝牛奶不科学”,
“吃了海鲜后是不能再喝牛奶的,因为牛奶中含得有维生素C,如果海鲜喝牛奶一起服用会对人体造成一定的伤害”,
“吃海鲜是不能同时喝牛奶吃水果,这个至少间隔6小时以上才可以。”,
“吃海鲜是不可以吃柠檬的因为其中的维生素C会和海鲜中的矿物质形成砷”
]
}
result = pipeline_se(input=inputs)
print (result)
当输入仅含有soure_sentence时,会输出source_sentence中每个句子的向量表示以及首个句子与其他句子的相似度。
inputs2 = {
“source_sentence”: [
“不可以,早晨喝牛奶不科学”,
“吃了海鲜后是不能再喝牛奶的,因为牛奶中含得有维生素C,如果海鲜喝牛奶一起服用会对人体造成一定的伤害”,
“吃海鲜是不能同时喝牛奶吃水果,这个至少间隔6小时以上才可以。”,
“吃海鲜是不可以吃柠檬的因为其中的维生素C会和海鲜中的矿物质形成砷”
]
}
result = pipeline_se(input=inputs2)
print (result)
2.训练微调模型
本模型基于中文通用领域数据上训练,在垂类领域效果无法保证,可以在垂类领域数据下训练微调来提高性能,代码如下:
第5章/TrainGTE.py
此脚本需要在支持GPU的环境中运行
注意:加载数据集的过程可能会因为网络问题而失败,如果发生这种情况,请尝试重新运行代码
导入必要的模块和类
from modelscope.metainfo import Trainers # 用于获取训练器元信息
from modelscope.msdatasets import MsDataset # 用于加载和管理数据集
from modelscope.trainers import build_trainer # 用于构建训练器
import tempfile # 用于创建临时目录
import os # 提供与操作系统交互的功能
创建一个临时目录来存储训练过程中的文件
tmp_dir = tempfile.TemporaryDirectory().name
if not os.path.exists(tmp_dir):
os.makedirs(tmp_dir) # 如果目录不存在,则创建它
加载数据集
ds = MsDataset.load(‘dureader-retrieval-ranking’, ‘zyznull’) # 从ModelScope平台加载指定的数据集
train_ds = ds[‘train’].to_hf_dataset() # 将训练集转换为Hugging Face的Dataset格式
dev_ds = ds[‘dev’].to_hf_dataset() # 将验证集转换为Hugging Face的Dataset格式
定义模型ID
model_id = ‘iic/nlp_gte_sentence-embedding_chinese-large’ # 指定要使用的预训练模型ID
定义配置修改函数
def cfg_modify_fn(cfg):
“”"
修改模型训练的配置参数。
:param cfg: 原始的配置字典
:return: 修改后的配置字典
“”"
cfg.task = ‘sentence-embedding’ # 设置任务类型为句子嵌入
cfg[‘preprocessor’] = {‘type’: ‘sentence-embedding’, ‘max_length’: 256} # 设置预处理器类型和最大长度
cfg[‘dataset’] = {
‘train’: {
‘type’: ‘bert’, # 使用BERT模型处理训练数据
‘query_sequence’: ‘query’, # 查询序列字段名
‘pos_sequence’: ‘positive_passages’, # 正例序列字段名
‘neg_sequence’: ‘negative_passages’, # 负例序列字段名
‘text_fields’: [‘text’], # 文本字段列表
‘qid_field’: ‘query_id’ # 查询ID字段名
},
‘val’: {
‘type’: ‘bert’, # 使用BERT模型处理验证数据
‘query_sequence’: ‘query’, # 查询序列字段名
‘pos_sequence’: ‘positive_passages’, # 正例序列字段名
‘neg_sequence’: ‘negative_passages’, # 负例序列字段名
‘text_fields’: [‘text’], # 文本字段列表
‘qid_field’: ‘query_id’ # 查询ID字段名
},
}
cfg[‘train’][‘neg_samples’] = 4 # 每个正例对应的负例样本数
cfg[‘evaluation’][‘dataloader’][‘batch_size_per_gpu’] = 30 # 每个GPU的评估批次大小
cfg.train.max_epochs = 1 # 最大训练轮数
cfg.train.train_batch_size = 4 # 训练批次大小
return cfg # 返回修改后的配置
构建训练器的参数
kwargs = dict(
model=model_id, # 指定使用的模型ID
train_dataset=train_ds, # 指定训练数据集
work_dir=tmp_dir, # 指定工作目录(即临时目录)
eval_dataset=dev_ds, # 指定验证数据集
cfg_modify_fn=cfg_modify_fn # 指定配置修改函数
)
构建并初始化训练器
trainer = build_trainer(name=Trainers.nlp_sentence_embedding_trainer, default_args=kwargs)
开始训练模型
trainer.train() # 调用训练器的train方法进行模型训练
这段代码的主要功能是利用ModelScope平台的API来加载数据集、配置模型训练参数,并启动训练过程。代码中首先创建了临时目录以存放训练过程中产生的文件,然后加载了特定的数据集,并设置了模型训练的相关参数。最后,通过build_trainer函数构建了训练器对象,并调用了其train方法来执行训练。
下一篇内容详解更多…
更多技术内容
更多技术内容可参见
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。
总结
此文章有对应的配套新书教材和视频:
【配套新书教材】
《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】
新书特色:《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)是一本2025年清华大学出版社出版的图书,作者是陈敬雷,本书深入探讨了GPT多模态大模型与AI Agent智能体的技术原理及其在企业中的应用落地。
全书共8章,从大模型技术原理切入,逐步深入大模型训练及微调,还介绍了众多国内外主流大模型。LangChain技术、RAG检索增强生成、多模态大模型等均有深入讲解。对AI Agent智能体,从定义、原理到主流框架也都进行了深入讲解。在企业应用落地方面,本书提供了丰富的案例分析,如基于大模型的对话式推荐系统、多模态搜索、NL2SQL数据即席查询、智能客服对话机器人、多模态数字人,以及多模态具身智能等。这些案例不仅展示了大模型技术的实际应用,也为读者提供了宝贵的实践经验。
本书适合对大模型、多模态技术及AI Agent感兴趣的读者阅读,也特别适合作为高等院校本科生和研究生的教材或参考书。书中内容丰富、系统,既有理论知识的深入讲解,也有大量的实践案例和代码示例,能够帮助学生在掌握理论知识的同时,培养实际操作能力和解决问题的能力。通过阅读本书,读者将能够更好地理解大模型技术的前沿发展,并将其应用于实际工作中,推动人工智能技术的进步和创新。
【配套视频】
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】
视频特色: 前沿技术深度解析,把握行业脉搏
实战驱动,掌握大模型开发全流程
智能涌现与 AGI 前瞻,抢占技术高地
上一篇:《GPT多模态大模型与AI Agent智能体》系列一》大模型技术原理 - 大模型技术的起源、思想
下一篇:DeepSeek大模型技术系列五》DeepSeek大模型基础设施全解析:支撑万亿参数模型的幕后英雄