Towards General Text Embeddings with Multi-stage Contrastive Learning

TL;DR

提出GTE模型,采用多阶段对比学习,参数110M,在文本和代码检索中超越多倍大模型。

cs.CL 🔴 高级 2023-08-07 978 引用 38 次浏览
Zehan Li Xin Zhang Yanzhao Zhang Dingkun Long Pengjun Xie Meishan Zhang
自然语言处理 对比学习 文本嵌入 多任务泛化 代码检索

核心发现

方法论

本文提出的GTE模型基于深层Transformer编码器,采用双编码器架构,通过平均池化提取文本向量。训练流程包括两个阶段:无监督预训练和有监督微调。预训练阶段利用从Web、学术论文、问答社区、社交媒体、知识库和代码仓库等多源公开数据中采集的约8亿对文本对,采用改进的对比损失(InfoNCE和其变体)进行训练。微调阶段则利用约300万标注的文本对,结合硬负样本,进一步优化模型性能。训练过程中,采用多源数据采样策略(α=0.5)平衡不同数据源,利用AdamW优化器,结合梯度累积和混合精度技术,确保大规模训练的稳定性和效率。模型参数规模从30M到330M不等,最大序列长度从128到512。核心创新在于多阶段对比学习策略的设计,结合大规模无标注数据和少量高质量标注数据,显著提升模型的泛化能力和鲁棒性。

关键结果

  • 在无监督文本检索任务中,GTE_base(110M)在Massive Text Embedding Benchmark(MTEB)中表现优异,超越OpenAI的黑箱API和10倍规模模型。在零样本文本分类任务SST-2中,GTE_base达到了87.2%的准确率,接近甚至超过了参数更大的模型。通过在多任务、多源数据上训练,模型在56个不同任务的评估中均表现出色,平均性能优于现有主流模型。特别是在代码检索任务上,无需针对不同编程语言进行微调,模型就已超越专门的代码检索模型,显示出极强的泛用性。
  • 结果显示,采用多源数据和多阶段对比学习显著改善了模型的语义理解和跨任务迁移能力。模型在BEIR数据集上的Recall@100达到了行业领先水平,超越了SimCSE、Contriever和E5等对比模型。微调后,模型在多项任务中表现优异,验证了其在文本和代码检索、语义匹配、问答等场景中的广泛适用性。
  • 通过对比不同模型参数规模和训练策略,发现多源多任务训练策略在提升模型鲁棒性方面优于单一任务训练。模型在保持参数较少的情况下,达到了与大型模型相媲美甚至更优的性能,验证了其高效性和实用性。

研究意义

本研究突破了传统文本嵌入模型在任务专一性和数据依赖上的局限,提出了基于多阶段对比学习的通用文本嵌入方案。模型在多任务、多源数据环境中表现出强大的泛化能力,为自然语言处理和代码理解提供了高效、可扩展的基础工具。其在零样本和少样本场景中的优异表现,有望推动智能搜索、问答系统、代码检索等应用的实际落地,降低行业门槛,促进AI技术的普及与创新。

技术贡献

本文的主要技术贡献在于提出一种多阶段对比学习框架,结合大规模无标注数据和有限标注数据,显著提升文本和代码的表示能力。创新点包括:• 设计多源数据采样策略,平衡不同数据源的影响;• 引入改进的对比损失(如InfoNCE变体)以增强模型的判别能力;• 在参数规模有限的情况下,通过多任务、多源训练实现超越大型模型的性能。模型架构采用深层Transformer编码器,结合mean pooling提取文本表示,具备良好的迁移和泛化能力。

新颖性

本研究首次系统性地将多源公开数据与多阶段对比学习结合,训练出参数仅110M的通用文本嵌入模型,超越多倍大模型的性能。不同于以往专注单一任务或单一数据源的模型,GTE通过多源、多任务、多阶段训练策略,实现了跨任务、跨域的优异表现,彰显其创新性和实用价值。

局限性

  • 模型在极端专业或特定领域的任务中仍可能表现不足,因训练数据主要来自公开互联网资源,缺乏深度专业知识。
  • 大规模训练对硬件资源要求高,训练成本较大,限制了模型的快速迭代和部署。
  • 尽管模型在多任务中表现优异,但在某些特定任务或语言上仍需微调以达到最佳性能,未来需探索更高效的微调策略。

未来方向

未来将探索更高效的多源数据采样与增强技术,提升模型在专业领域的表现。还计划结合少样本学习和自监督学习,进一步降低微调成本。扩展模型到多模态任务(如图像+文本),以及优化模型的推理速度和部署效率,也是未来的重要方向。

AI 总览摘要

在自然语言处理的快速发展中,文本嵌入技术作为理解和操作文本的基础工具,扮演着越来越重要的角色。传统的文本嵌入模型多为任务专用,难以满足多任务、多源、多领域的需求。近年来,随着大规模预训练语言模型(如BERT、GPT)的兴起,研究者开始关注如何构建具有更强泛化能力的通用文本表示。

然而,现有模型在跨任务迁移、代码理解等方面仍存在瓶颈。为此,本文提出了GTE(General Text Embedding)模型,通过多阶段对比学习策略,充分利用来自Web、学术、问答、社交、知识库和代码仓库的海量公开数据,实现了在参数规模有限的情况下,超越多倍大模型的性能。

GTE的训练流程包括两个关键阶段:无监督预训练和有监督微调。在预训练阶段,模型利用大规模无标注文本对,采用改进的对比损失(如InfoNCE变体)进行训练,强化模型的语义判别能力。微调阶段则利用少量高质量标注数据,结合硬负样本,进一步提升模型的表现。整个训练过程中,采用多源数据采样策略,确保模型在不同数据域的泛化能力。

实验结果显示,GTE在多个任务中表现优异。在Massive Text Embedding Benchmark(MTEB)中,参数仅110M的GTE_base超越OpenAI的API和10倍参数模型。在零样本文本分类任务(如SST-2)中,准确率达到87.2%,接近甚至超过更大模型。其在BEIR数据集上的Recall@100也领先于对比模型,验证了其在信息检索中的优越性。此外,模型在代码检索任务中也表现出色,无需针对不同编程语言微调,即可超越专门的代码检索模型。

这些成果表明,基于多源数据和多阶段对比学习的训练策略,极大地提升了模型的泛化能力和实用性。GTE不仅适用于文本检索、问答、文本匹配,还能广泛应用于代码理解和生成等场景,为行业提供了高效、可扩展的基础工具。未来,作者计划继续优化模型架构,探索多模态融合,以及降低训练和推理成本,推动AI在更广泛领域的落地应用。

深度分析

研究背景

近年来,随着深度学习和预训练模型的发展,文本嵌入技术已成为自然语言处理的核心。早期方法如Word2Vec和GloVe通过词向量学习捕捉词语关系,但在句子和段落层面表现有限。随后,BERT等预训练语言模型引入了上下文感知的表示,极大提升了语义理解能力。然而,BERT的句子嵌入存在空间异质性问题,影响相似度计算。为解决这一问题,研究者提出了多种对比学习方法,如SimCSE、Condenser等,旨在生成更鲁棒的句子表示。与此同时,信息检索和问答系统对高质量文本表示的需求不断增长,推动了多源数据的利用和多任务训练策略的发展。近年来,诸如E5、Contriever等模型通过大规模无标注数据训练,展现出强大的泛化能力。与此同时,Massive Text Embedding Benchmark(MTEB)等评测体系的建立,为模型性能的客观评估提供了标准。尽管如此,现有模型仍面临数据依赖大、泛化能力不足、跨任务迁移困难等挑战。本文旨在突破这些瓶颈,提出一种多源、多阶段训练的通用文本嵌入模型,满足多任务、多场景的需求。

核心问题

当前,文本嵌入模型在多任务、多源环境下的泛化能力有限,尤其是在跨域、跨任务迁移时表现不佳。传统模型多依赖任务特定的训练数据或微调策略,难以实现一站式解决方案。同时,模型参数规模与性能之间存在折中,参数少的模型难以达到大模型的表现,而大模型训练成本高昂,限制了其实际应用。如何在保持模型参数较少的情况下,提升模型的通用性和鲁棒性,成为行业和学术界亟待解决的问题。此外,现有模型在代码理解和多模态任务中的表现仍有待提升,尤其是在没有针对特定任务微调的情况下,模型能否保持优异性能,是衡量其通用性的重要指标。

核心创新

本研究的核心创新在于提出多阶段对比学习框架,结合大规模无标注数据和有限标注数据,显著提升模型的泛化能力。具体创新点包括:• 设计多源数据采样策略,确保不同数据域的平衡,增强模型的多任务适应性;• 引入改进的对比损失(如InfoNCE变体),增强模型判别语义相似性的能力;• 在参数有限的情况下,通过多任务、多源训练实现超越大型模型的性能,显著降低训练成本;• 采用深层Transformer编码器,结合mean pooling提取文本向量,保证模型的迁移能力。整体框架强调模型的通用性和扩展性,兼顾文本和代码的表示能力,为多任务、多场景提供一站式解决方案。

方法详解

  • �� 数据采集:从Web(CommonCrawl、SemanticScholar)、学术论文(arXiv)、问答社区(StackExchange)、社交媒体(Reddit)、知识库(Wikipedia、DBPedia)和代码仓库(GitHub、StackOverflow)等多源采集约8亿对文本对,确保数据的多样性和代表性。
  • �� 无监督预训练:利用改进的对比损失(InfoNCE及其变体)在大规模无标注数据上进行训练,强化模型的语义判别能力。采用多源采样策略(α=0.5)平衡不同数据源,利用AdamW优化器,结合梯度累积和混合精度技术,确保训练效率。
  • �� 微调阶段:利用约300万标注的文本对,结合硬负样本,采用增强的对比损失(Equation 5和6)进行微调。最大序列长度从128提升到512,以适应长文本。
  • �� 模型架构:基于深层Transformer(如BERT-base或MiniLM)双编码器架构,平均池化提取文本向量,采用余弦相似度作为相似性指标。
  • �� 训练细节:采用多GPU分布式训练,学习率线性衰减,训练50,000步,模型参数规模从30M到330M不等。
  • �� 评估指标:在MTEB、BEIR等多个公开基准上进行性能评估,包括文本分类、检索、相似度、问答等任务,确保模型的多任务适应性。

实验设计

实验设计包括:• 任务覆盖:文本分类(SST-2)、信息检索(MS MARCO、BEIR)、语义相似(STS)、代码检索(CodeSearchNet)等,验证模型的多任务能力;• 数据集:使用公开数据集,结合无标注和标注数据,确保训练的多样性;• 评估指标:准确率、Recall@100、nDCG@10、平均精度等,全面衡量模型性能;• 比较模型:对比SimCSE、Contriever、E5、OpenAI API等,分析参数规模和训练策略对性能的影响;• 超参数调优:学习率、批量大小、最大序列长度、对比损失温度τ等,确保模型收敛和性能最优;• ablation研究:验证多源数据采样、损失函数、模型深度等对性能的贡献。

结果分析

实验结果显示,GTE_base(110M)在多项任务中均优于对比模型。在MTEB评测中,其平均性能超过Contriever和E5,尤其在文本检索和语义相似任务中表现突出。在零样本文本分类(SST-2)中,准确率达87.2%,优于参数更大的模型。无监督检索任务中,Recall@100提升至行业领先水平,超越SimCSE和BM25。在代码检索任务中,模型无需针对不同语言微调,即可超越专门的代码检索模型,验证了其跨任务泛化能力。这些结果充分证明了多源多阶段训练策略的有效性,为未来的多任务模型设计提供了新思路。

应用场景

  • �� 文本检索:可应用于企业搜索引擎、学术论文检索、法律文档搜索等场景,提升检索效率和准确性;• 问答系统:作为基础表示模型,支持多轮对话、知识问答等,增强系统理解能力;• 代码理解:支持多语言代码搜索和相似代码检测,助力软件开发和代码维护;• 内容推荐:结合用户行为数据,实现个性化内容推荐和内容过滤;• 跨模态扩展:未来可结合图像、视频等多模态信息,推动多模态理解与生成。

局限与展望

  • �� 训练数据主要来自公开互联网,可能在专业或垂直领域表现不足;• 模型参数虽少,但大规模训练成本仍高,限制快速迭代;• 在极端少样本或新兴任务中,模型仍需微调以达到最佳性能;• 未来需探索更高效的训练策略和模型压缩技术,以降低部署成本。

通俗解读 非专业人士也能看懂

想象你在一个大型工厂里,工厂里有许多不同的车间,每个车间负责不同的任务,比如制造家具、组装电子产品、包装商品。每个车间都有自己的工作流程和设备,但工厂的目标是让所有车间协同工作,生产出高质量的产品。

现在,假设你要设计一个智能助手,帮助工厂更好地理解每个车间的工作内容。传统的方法可能只让每个车间告诉你它做什么,但你不知道它们之间的关系。我们的方法就像给每个车间配备了一个“翻译官”,让它们用一种统一的语言表达自己的任务。这个“翻译官”通过观察大量工厂的日常工作记录,学习不同车间的工作内容和特点。

这个“翻译官”其实就是一个特殊的学习系统,它通过不断比较不同车间的工作内容,学会了判断它们是否在做类似的事情。比如,家具车间和木工车间的任务都涉及木材加工,电子车间和电路车间都涉及电子元件。这样,当你问“哪个车间负责组装电子产品”时,它可以快速找到相关的车间。

这个系统的厉害之处在于,它不用每次都重新学习,而是通过观察大量的工厂记录,建立了一套通用的理解方式。无论是新加入的车间还是不同的工厂,它都能快速适应,帮你找到最合适的车间或任务。就像一个聪明的工厂助手,帮你节省时间、提高效率,让整个工厂运转得更顺畅。

简单解释 像给14岁少年讲一样

想象你在学校里有一个超级聪明的朋友,他可以帮你理解任何事情。比如你问他:“这个问题的答案是什么?”他不用看书,只是根据他平时听到的很多话和看到的很多例子,快速猜出答案。这个朋友就像一个特别聪明的机器人,学会了用一种特别的方式,把各种信息变成数字,然后用这些数字来判断两个东西是不是一样。

比如,你给他两个句子,他会把它们变成两个数字的“密码”,然后比较这两个密码的相似度。如果密码很相似,说明两个句子意思差不多;如果差别很大,说明它们的意思不同。这就像你用尺子量两个东西的长度,如果很接近,就说明它们差不多一样。

这个机器人是怎么学会的呢?它看了很多很多的例子,比如网页上的文章、问答、社交媒体的帖子,还有代码片段。它不断学习这些例子,慢慢地明白了什么样的句子意思相似,什么样的句子意思不同。通过这种学习,它变得非常聪明,可以帮你找到相关的内容,甚至帮你写作文或解答问题。

所以,这个研究就是让机器变得像这个聪明的朋友一样,能理解各种不同的文字和代码,不管是问问题、找资料,还是帮忙写东西,都能做到又快又准。它用了一种叫“对比学习”的方法,让机器学会区分相似和不同,从而变得更聪明、更有用。

原文摘要

We present GTE, a general-purpose text embedding model trained with multi-stage contrastive learning. In line with recent advancements in unifying various NLP tasks into a single format, we train a unified text embedding model by employing contrastive learning over a diverse mixture of datasets from multiple sources. By significantly increasing the number of training data during both unsupervised pre-training and supervised fine-tuning stages, we achieve substantial performance gains over existing embedding models. Notably, even with a relatively modest parameter count of 110M, GTE$_\text{base}$ outperforms the black-box embedding API provided by OpenAI and even surpasses 10x larger text embedding models on the massive text embedding benchmark. Furthermore, without additional fine-tuning on each programming language individually, our model outperforms previous best code retrievers of similar size by treating code as text. In summary, our model achieves impressive results by effectively harnessing multi-stage contrastive learning, offering a powerful and efficient text embedding model with broad applicability across various NLP and code-related tasks.

cs.CL

参考文献 (20)

Unsupervised Dense Information Retrieval with Contrastive Learning

Gautier Izacard, Mathilde Caron, Lucas Hosseini 等

2021 1662 引用 ⭐ 高影响力 查看解读 →

Sentence-T5: Scalable Sentence Encoders from Pre-trained Text-to-Text Models

Jianmo Ni, Gustavo Hernández Abrego, Noah Constant 等

2021 861 引用 ⭐ 高影响力 查看解读 →

MTEB: Massive Text Embedding Benchmark

Niklas Muennighoff, Nouamane Tazi, L. Magne 等

2022 1024 引用 ⭐ 高影响力 查看解读 →

Task-aware Retrieval with Instructions

Akari Asai, Timo Schick, Patrick Lewis 等

2022 142 引用 ⭐ 高影响力 查看解读 →

Text Embeddings by Weakly-Supervised Contrastive Pre-training

Liang Wang, Nan Yang, Xiaolong Huang 等

2022 1570 引用 ⭐ 高影响力 查看解读 →

One Embedder, Any Task: Instruction-Finetuned Text Embeddings

Hongjin Su, Weijia Shi, Jungo Kasai 等

2022 493 引用 ⭐ 高影响力 查看解读 →

GraphCodeBERT: Pre-training Code Representations with Data Flow

Daya Guo, Shuo Ren, Shuai Lu 等

2020 1848 引用 ⭐ 高影响力 查看解读 →

SimCSE: Simple Contrastive Learning of Sentence Embeddings

Tianyu Gao, Xingcheng Yao, Danqi Chen

2021 4723 引用 ⭐ 高影响力 查看解读 →

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Jacob Devlin, Ming-Wei Chang, Kenton Lee 等

2019 119873 引用 ⭐ 高影响力 查看解读 →

Challenging Decoder helps in Masked Auto-Encoder Pre-training for Dense Passage Retrieval

Zehan Li, Yanzhao Zhang, Dingkun Long 等

2023 3 引用 ⭐ 高影响力 查看解读 →

MiniLM: Deep Self-Attention Distillation for Task-Agnostic Compression of Pre-Trained Transformers

Wenhui Wang, Furu Wei, Li Dong 等

2020 2503 引用 查看解读 →

Approximate Nearest Neighbor Negative Contrastive Learning for Dense Text Retrieval

Lee Xiong, Chenyan Xiong, Ye Li 等

2020 1688 引用 查看解读 →

CodeBERT: A Pre-Trained Model for Programming and Natural Languages

Zhangyin Feng, Daya Guo, Duyu Tang 等

2020 4230 引用 查看解读 →

Language Models are Few-Shot Learners

Tom B. Brown, Benjamin Mann, Nick Ryder 等

2020 62417 引用 查看解读 →

Dense Passage Retrieval for Open-Domain Question Answering

Vladimir Karpukhin, Barlas Oğuz, Sewon Min 等

2020 6695 引用 查看解读 →

MIND: A Large-scale Dataset for News Recommendation

Fangzhao Wu, Ying Qiao, Jiun-Hung Chen 等

2020 690 引用

REALM: Retrieval-Augmented Language Model Pre-Training

Kelvin Guu, Kenton Lee, Zora Tung 等

2020 3334 引用 查看解读 →

Pre-training Tasks for Embedding-based Large-scale Retrieval

Wei-Cheng Chang, Felix X. Yu, Yin-Wen Chang 等

2020 328 引用 查看解读 →

Latent Retrieval for Weakly Supervised Open Domain Question Answering

Kenton Lee, Ming-Wei Chang, Kristina Toutanova

2019 1185 引用 查看解读 →

CCNet: Extracting High Quality Monolingual Datasets from Web Crawl Data

Guillaume Wenzek, M. Lachaux, Alexis Conneau 等

2019 842 引用 查看解读 →

被引用 (20)

Denoising-Aware Inversion: Revealing Privacy Risks in Noise-Protected Text Embeddings

2026 ⭐ 高影响力 查看解读 →

EXCISE: Query-Side Exclusion for Late-Interaction Retrieval

2026 ⭐ 高影响力 查看解读 →

Bekko Embedding: Parameter-Efficient Multilingual Retrieval with Ultra-Compact Encoders

2026 ⭐ 高影响力 查看解读 →

From Queries to Playlists: An LLM-Driven Architecture for Semantic Music Search at Scale

2026 ⭐ 高影响力

Scaling Dense Retrieval with LLM-Annotated Training Data: Structured Mining and Progressive Curriculum for E-Commerce Sponsored Search

Query-Focused Event Summarization: A Dataset and Benchmark

Agentic table talk

2026

PETRA: Transforming Web Text for Petroleum-Engineering Domain Adaptation

FlowPipe: LLM-Enhanced Conditional Generative Flow Networks for Data Preparation Pipeline Construction

KaLM-Reranker-V1: Fast but Not Late Interaction for Compressed Document Reranking

Scalable text clustering based on word embeddings and noise analysis

2026

STEB: Style Text Embedding Benchmark

Separating Representation from Reconstruction Enables Scalable Text Encoders

MTEB-BR: A Text Embedding Benchmark for Brazilian Portuguese

2026 1 引用 查看解读 →

Uncertainty-Aware Cross-Modal Remote Sensing Image-Text Retrieval via Evidential Learning

Inject or Navigate? Token-Efficient Retrieval for LLM Analysis of Transactional Legal Documents

Large language models create an uneven informational layer over cities

Scaling and Stabilizing Large-Scale Embedding-Based Retrieval

2026 1 引用 查看解读 →

ProgramTab: Boosting Table Reasoning of LLMs via Programmatic Paradigm

PCTD: Preference-Guided Counterfactual Task Decomposition for Agent Tool Retrieval

2026 1 引用 查看解读 →