检索增强生成(Retrieval-Augmented Generation, 简称RAG)正日益成为大模型应用中的热门范式。这种创新方法将检索与生成相结合,使得大模型在提供回答时,能够充分借助外部知识库的支撑,从而获得更为准确且丰富的内容。这不仅有效地减轻了大模型常见的误解和数据隐私问题,也提升了实时响应的能力。在RAG实施过程中,文本表示模型(Embedding model)和排序模型(Reranker model)是至关重要的两大模块。两者的目标一致,皆为检索与用户问题相关的文档,但在实现方法上却有所不同:文本表示模型首先计算每段文本的向量表示,然后通过余弦距离等方法计算它们之间的相关性分数。因此,所有文档的向量表示可以在离线阶段提前计算,在线上只需处理用户查询的向量,通过高效的向量搜索引擎迅速获取相关候选文档。而排序模型则直接将文本对作为输入,通过更精细的计算方法输出它们的相关性分数,实现更准确的排序效果。需要注意的是,排序模型的计算复杂度较高,因此主要适用于小规模的候选集合。随着RAG技术的不断发展,系统的功能也在日益增强。早期的系统主要关注向量召回,而如今更复杂的模块被逐步引入,进一步提升了RAG系统的整体效果。同时,随着应用场景的拓展以及大模型处理上下文长度的能力增强,对多语言检索、跨语言检索以及长文本处理的需求也愈加迫切。此前,通义实验室推出了GTE(General Text Embedding)系列文本向量模型,涵盖了基于BERT架构的模型及基于Qwen LLM系列训练的LLM embedding模型,如gte-Qwen2-1.5B-instruct与gte-Qwen2-7B-instruct。目前,基于双向注意力的Encoder-only结构的模型在同一规模下相较于Decoder-only模型在召回和排序效果上明显更优。然而,当前基于Encoder-only的Embedding和Ranking模型仍面临一些来自BERT时代的遗留问题,例如最长上下文长度仅为512,以及预训练阶段使用的语料明显不足。为解决这些问题,GTE模型开发团队从零开始训练了一种能支持长上下文和多语言的Encoder-only基础模型,并在此基础上推出了最新版本的GTE-MultiLingual系列模型(简称mGTE模型)。该系列模型具备以下显著特点:
![]() 模型构建mGTE系列模型构建流程如图2所示,首先,训练了支持长下文的多语言Encoder-only底座模型GTE-base-multilinguish。并在底座基础上继续训练文本表示模型gte-multilingual-base和排序模型gte-multilingual-base 图2 模型训练过程示意图 底座预训练模型结构为了提升模型多语言以及长文本领域相关的能力,该系列模型参考了目前Decode-Only架构大语言模型训练过程中一些常见的技巧,对原始的BERT架构做了以下几点改动,具体模型结构如图3所示
此外,为了满足多语言和长文本处理能力的需求,模型使用了XLM-Roberta[3]系列的词表。 图3 GTE底座模型结构示意图 训练数据底座模型的训练数据来网络上公开的多多言语料数据,包括C4,Skypile,mC4,CuleturaX,Wikipedia,books等。训练过程中,通过对数据进行过滤,清洗,采样等操作,最终得到了1028B的Token(基于XLM-R tokenizer)作为最终的训练数据。其中主要语言的比例如下图所示(占比小于1%的合并为 others),各语言的数据量可以参考mGTE论文[16]中的附录。 训练过程与传统的Encoder-only模型训练方法一样,预训练阶段mGTE使用MLM(Masked Language Prediction)作为预训练阶段的loss。在此基础上,该模型做出了以下优化提升模型训练的效率:
其中n代表的是该语言的数据量,
预训练阶段,模型均使用BF16精度进行训练 底座模型效果评测为了验证预训练底座模型的效果,mGTE-mlm在多语言评测榜单XTREAM[4](共包含50种不同的语言)和英文GLUE[5]数据上对比了2K阶段与8K阶段训练模型与之前Encoder-only架构的同尺寸多语言模型的效果,可以看到在绝大多数任务上mGTE-mlm都相较于过去的模型有更好的效果。 Embedding模型目前基于Encoder-only架构的文本表征模型基本上都采用双阶段训练的范式(弱监督训练与监督训练)[6],以提升模型的泛化性和效果。 弱监督训练在弱监督训练阶段,mGTE-embedding利用从网络上爬取的大规模文本对数据集,例如网页的标题与正文、QA论坛中的问题与答案等,这些数据无需人工标注,相对容易获取,但质量可能较低。这一阶段通过对比学习方法进行训练,使模型具备基本的嵌入表示能力。经过数据清理和整理,共收集约28亿多语言弱监督数据。在该阶段中,mGTE使用了主流的对比学习方法进行模型训练。 监督训练监督训练阶段,mGTE使用了经过人工标注的高质量文本对数据对模型进行进一步训练,以提升模型的文本表示能力。其中,中文监督数据包含Dureader,Simcluse,Multi-CPR等在内的6个数据集,共计200万标注数据,英文监督数据集使用了包括Msmarco,Nq,NLI等在内的7个数据集,共计140万数据。此外还包括MLDR,MIRACL,Mr.TyDi三个多语言数据集:共计12万数据,具体的数据集情况请参考论文附录部分。在监督训练阶段,除了基础的连续向量对比学习损失,mGTE引入了两个额外的表征特性:
因此, 模型最终的训练损失函数为MRL部分损失函数与Sparse部分损失函数的加权和:
Embedding与Ranking的训练过程都是基于FP16精度进行的,使用了DeepSpeed zero0与Gradient checkpoint来节省内存。 效果评测检索效果评测为了评测文本表征模型的检索效果,尤其是模型的多语言和长文本处理能力,mGTE模型主要在以下几个数据集进行评测
表3展示了在这5个数据集上mGTE模型和同规模模型的效果对比:
多任务文本表征效果评测MTEB[14]是一个涵盖多任务文本表示的通用评测数据集,英语、法语和波兰语这四种不同语言上对mGTE模型与其他模型的性能进行了对比。类似于检索任务,mGTE模型在与开源社区中同规模的Encoder-only系列模型进行比较时表现出非常好的效果。当然,与更大型的基于LLM的模型相比,mGTE仍存在明显差距。然而,考虑到mGTE小模型在推理性能方面的优势,其在实际应用场景中应具备更大的发挥空间。 弹性向量表示通过进行弹性向量表示,可以大幅提升文本处理与信息检索的效率和效果,使高维文本数据的处理更加可行和高效。在MTEB英文评测中,mGTE对比了mGTE模型在不同维度表征下的表现,结果与OpenAI的弹性表示模型类似。降低同一模型的向量表征维度虽然会导致部分效果的损失,但在512维以上的情况效果损失仍在可接受范围内。 排序模型在训练排序模型时,mGTE-reranker继续采用对比学习损失函数。论文中介绍通过实现发现,弱监督训练阶段对排序模型效果的提升非常有限。因此,在最终的排序模型训练过程中,mGTE-rerank仅使用监督数据进行微调。由于Ranking模型需要以文本对作为输入来计算相关性分数。此外,排序模型的超参数设置与文本表示模型保持一致。 效果评测类似地,mGTE-reranker对MLDR、MIRACL、MKQA和BEIR数据集上的排序结果进行了评估。所有的排序模型都基于mGTE-TRM-base模型生成的向量召回的结果top100进行重新排序。具体结果如下: 图5 排序模型结果对比图 图5展示了不同排序模型的检索效果:
模型使用模型的使用方法可以参考Huggingface上的样例: Embedding模型:# Requires transformers>=4.36.0 Ranking模型:
总结本文介绍了阿里巴巴通义实验室最新开源的gte-multilinguial系列模型工作,包含底座模型,文本表示模型与排序模型,提供了一系列支持多语言,长文档且推理成本友好的模型。GTE(General Text Embedding)系列模型是通义实验室开源的一种通用文本向量模型,旨在为RAG(检索增强生成)等检索场景提供业界领先的检索能力。目前,GTE系列已涵盖多种模型,包括GTE中/英单语言系列、GTE-Qwen-instruct系列(在MTEB榜单上多语言SOTA)以及本文介绍的GTE-Multilingual系列。这些模型均已在modelscope和huggingface平台上开源。 开源模型列表ModelScope
Huggingface
商业化API服务除了开源的GTE系列模型,GTE系列模型同时在阿里云上提供商用API服务:
通用文本向量_大模型服务平台百炼(Model Studio)-阿里云帮助中心
通用文本排序模型_大模型服务平台百炼(Model Studio)-阿里云帮助中心 参考资料[1] Su, Jianlin, Murtadha Ahmed, Yu Lu, Shengfeng Pan, Wen Bo, and Yunfeng Liu. 'Roformer: Enhanced transformer with rotary position embedding.' Neurocomputing 568 (2024): 127063. [2] Shazeer, Noam. 'Glu variants improve transformer.' arXiv preprint arXiv:2002.05202 (2020). [3] Conneau, A., Khandelwal, K., Goyal, N., Chaudhary, V., Wenzek, G., Guzmán, F., Grave, E., Ott, M., Zettlemoyer, L., & Stoyanov, V. (2019). Unsupervised Cross-lingual Representation Learning at Scale. Annual Meeting of the Association for Computational Linguistics. [4] Hu, J., Ruder, S., Siddhant, A., Neubig, G., Firat, O., & Johnson, M. (2020). XTREME: A Massively Multilingual Multi-task Benchmark for Evaluating Cross-lingual Generalization. ArXiv, abs/2003.11080. [5] Wang, A., Singh, A., Michael, J., Hill, F., Levy, O., & Bowman, S.R. (2018). GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding. BlackboxNLP@EMNLP. [6] Li, Z., Zhang, X., Zhang, Y., Long, D., Xie, P., & Zhang, M. (2023). Towards General Text Embeddings with Multi-stage Contrastive Learning. ArXiv, abs/2308.03281. [7] Kusupati, A., Bhatt, G., Rege, A., Wallingford, M., Sinha, A., Ramanujan, V., Howard-Snyder, W., Chen, K., Kakade, S.M., Jain, P., & Farhadi, A. (2022). Matryoshka Representation Learning. Neural Information Processing Systems. [8] Robinson, J., Chuang, C., Sra, S., & Jegelka, S. (2020). Contrastive Learning with Hard Negative Samples. ArXiv, abs/2010.04592. [9] Chen, J., Xiao, S., Zhang, P., Luo, K., Lian, D., & Liu, Z. (2024). BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation. ArXiv, abs/2402.03216. [10] Zhang, X.C., Thakur, N., Ogundepo, O., Kamalloo, E., Alfonso-Hermelo, D., Li, X., Liu, Q., Rezagholizadeh, M., & Lin, J.J. (2022). Making a MIRACL: Multilingual Information Retrieval Across a Continuum of Languages. ArXiv, abs/2210.09984. [11] Longpre, S., Lu, Y., & Daiber, J. (2020). MKQA: A Linguistically Diverse Benchmark for Multilingual Open Domain Question Answering. Transactions of the Association for Computational Linguistics, 9, 1389-1406. [12] Thakur, N., Reimers, N., Ruckl'e, A., Srivastava, A., & Gurevych, I. (2021). BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Models. ArXiv, abs/2104.08663. [13] https://hazyresearch./blog/2024-01-11-m2-bert-retrieval [14] Muennighoff, N., Tazi, N., Magne, L., & Reimers, N. (2022). MTEB: Massive Text Embedding Benchmark. Conference of the European Chapter of the Association for Computational Linguistics. [15] Wang, L., Yang, N., Huang, X., Yang, L., Majumder, R., & Wei, F. (2023). Improving Text Embeddings with Large Language Models. ArXiv, abs/2401.00368. [16] Zhang, X. Zhang Y, et al.(2024). mGTE: Generalized Long-Context Text Representation and Reranking Models for Multilingual Text Retrieval. |
|