解析 Gemma:EmbeddingGemma 架构及方案

2025年9月29日
Henrique Schechter Vera Research Engineer, Google DeepMind
Juyeong Ji AI DevX, Google DeepMind
Sahil Dua Lead Research Engineer, Google DeepMind

“解析 Gemma”系列的前几篇帖子提供了详细的 Gemma 模型系列架构概述。您可以在下方找到每篇帖子的链接:

在这篇帖子中,您将探索新的 EmbeddingGemma 架构及方案。有关高级别介绍,您可以阅读此公告博客。如需全面了解方法、实验及评估,请参阅完整的技术报告。让我们开始吧。

解压缩 EmbeddingGemma

您是否曾好奇计算机是如何被训练的?它理解您所写的单词、短语甚至整篇文档的含义与语境。其奥秘往往在于一种名为“嵌入”的技术——它通过数值表示捕捉文本的本质与意义。EmbeddingGemma 就是这样一种嵌入模型,能够将文本转化为嵌入向量。这些嵌入向量可用于搜索、检索增强生成以及理解等任务。

从 Gemma 到 EmbeddingGemma

EmbeddingGemma 并非从零开始创建,它源于一款预训练的 300M 参数的 Gemma 3 模型。首先,该模型使用T5Gemma 的适应方法进行转换,将原来仅含解码器的 Gemma 模型转换为编码器-解码器架构。然后,我们从这个新模型的编码器初始化了 EmbeddingGemma,从而确保它从一开始就能生成极具表现力的表达方式。这种方法允许 EmbeddingGemma 从其前身继承大量“世界知识”,而无需进行额外的训练。

training
从 Gemma 3 解码器到强大文本嵌入器的演进之路

嵌入向量是如何生成的

您可以使用 Sentence Transformers 等框架调用 EmbeddingGemma 生成嵌入向量。给定一段文本输入序列后,EmbeddingGemma 会通过一系列精心设计的步骤对其进行处理,从而生成一个简洁的向量表示。

SentenceTransformer(
  (0):Transformer层 ({'max_seq_length': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
  (1):池化层 ({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
  (2):第一层 Dense ({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
  (3):第二层 Dense ({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
  (4):归一化层 ()
)
Python

(0):Transformer 层

一段输入序列会经过这个仅含编码器结构的 Transformer 模型。该 Transformer 采用双向注意力机制,在给定的语境中理解每个 token 的含义,最终生成 768 维向量序列——输入序列中的每个 token 都会对应一个这样的向量。

(1):池化层

Transformer 的输出是一系列的 token 嵌入向量。池化层(Pooling Layer)的作用是为整个输入文本将这个长度不固定的 token 嵌入序列,转化为单一的、固定大小的嵌入向量。EmbeddingGemma 采用的池化策略名为“平均池化(Mean Pooling)”。这是最常用的方法,具体操作是计算所有 token 嵌入向量的平均值。

(2):第一层 Dense

接下来,我们通过一次线性投影(Linear Projection)操作,将(768 维)嵌入向量维度提升至更高的维度(3072 维)。

(3):第二层 Dense

随后,我们再通过一次线性投影(Linear Projection)操作,将经过学习得到的 3072 维嵌入向量,缩放至最终的目标维度(768 维)。

(4):归一化层

最后,我们通过欧几里得归一化(Euclidean Normalization),实现高效的相似度比较。相较于您可能在其他 Gemma 模型中调用的复杂 RMSNorm,这是一种简单且低成本的操作。

embeddinggemma
EmbeddingGemma 从输入文本生成最终嵌入向量的可视化流程

EmbeddingGemma 的学习机制

EmbeddingGemma 在训练过程中,通过对三种不同加权损失函数进行组合优化,逐步学会生成其高性能的嵌入向量。

1. 噪声对比估计(NCE)损失

NCE 损失教会模型相似性和对比性的基本概念。对于每个输入(例如,查询),模型会学习到:

  • 将“正样本对”拉得更近:对该模型进行训练,使得查询与其在嵌入空间中的正确答案之间的距离最小化。
  • 将“负样本对”推得更远:同时,它使查询和来自同一训练批次的不正确答案之间的距离最大化。

关键在于纳入了“难负样本”(hard negatives)——即那些在语义上与查询文本相似,但本质上错误或信息不完整的答案。通过在这类具有迷惑性的样本上进行训练,模型会被迫学习到细微、精准的语义差异,从而能够区分“正确答案”与“近似正确但实际错误的答案”。

这就像建立一个组织良好的图书馆,相关物品彼此靠近,而无关物品则保持距离。

2. 全局正交正则化器(GOR)

该损失函数旨在鼓励 EmbeddingGemma 生成能够在整个嵌入空间中分散开来的嵌入向量。即使模型已经学会了区分相似与不相似的内容,它也可能变得“偷懒”,只是将所有嵌入向量都堆放在空间的同一个小角落里。

该正则化器能让嵌入向量具备抗量化鲁棒性,同时支持在向量数据库中使用“近似最近邻(Approximate Nearest Neighbor, ANN)算法”实现高效检索。

3. 几何嵌入蒸馏

该损失函数是一种知识蒸馏机制,在这一过程中,EmbeddingGemma 会以规模更大、性能更强的 Gemini Embedding 模型作为“教师模型”,从中学习嵌入能力。

该损失函数会最小化两种嵌入模型针对“查询文本” 和“段落文本”生成的嵌入向量之间的 L2 距离(一种衡量向量差异的指标)。通过这种方式,EmbeddingGemma 得以从教师模型中学习,从而高效继承其大部分知识与能力。

loss
EmbeddingGemma 训练用三种不同损失函数(NCE 损失、GOR、蒸馏损失)的可视化流程

通过组合这三种损失函数,EmbeddingGemma 得以逐步学会生成结构优良、表达丰富且具备鲁棒性的表征向量,进而在真实世界的搜索与检索任务中展现出出色的性能。

Matryoshka 表征学习(MRL)

MRL 是一种能够将更小尺寸的高质量表征向量嵌套在更大尺寸表征向量中的技术。例如,尽管 EmbeddingGemma 生成的嵌入向量本身是 768 维,但您可以对其进行截断处理,得到 512 维、256 维甚至 128 维的小尺寸向量,且这些小尺寸向量仍能保留较高的表征质量。

在训练过程中,损失函数不仅作用于最终生成的 768 维嵌入向量,还会作用于该嵌入向量的重叠子集(即前 512 维、前 256 维与前 128 维向量)。这种设计能确保:即便只使用完整嵌入向量的截断版本,它依然是具备强表征能力且语义完整的向量。

对您而言,这意味着您无需训练或管理多个模型,就能为自己的应用场景选择性能与效率之间的最佳平衡点。您只需选择最符合需求的嵌入向量维度即可:从能实现最高质量的完整 768 维,到能提升速度、降低存储成本的小维度,均可灵活选用。

mrl
Matryoshka Embeddings 的可视化图表:该图表展示了不同维度如何影响嵌入效果的质量与效率之间的权衡关系。

开发方案

模型的演进之路包括几个阶段

  • 编码器-解码器训练:如上所述调整 Gemma 3 ,使用 UL2 进一步预训练 Gemma 3 数据。
  • 预微调:在大规模、多样化的任务组合(包括问答、句子相似度、代码检索、网页搜索)与多语言数据上进行训练,采用更大的批次量,并使用(查询,目标)样本对,且不引入难负样本。
  • 微调:在规模更小、质量更高的特定任务数据集组合上对模型进行精调,采用难负样本和更小的批次量。任务组合比例通过贝叶斯优化(Bayesian Optimization)进行优化。
  • 模型融合:通过对在微调过程中生成的多个模型参数进行平均,来提升模型的质量与鲁棒性。最终得到的模型,是对“采用多种不同微调数据集组合训练出的微调 checkpoint(模型检查点)”进行无权重平均后的结果。
  • 量化感知训练(QAT):在微调阶段应用的一种模型优化技术,目的是生成量化版本的模型(例如,每块采用 int4、每通道采用混合精度),在大幅降低模型内存占用的同时,最大限度减少语义质量的损失。

通过对强大的基础模型进行精心适配,并采用多维度训练方法对其进行精调优化,EmbeddingGemma 的架构被设计为能够生成高效且通用的文本表征,足以适配各类广泛的应用场景。

总结

我们深入探讨了 EmbeddingGemma 的架构——这是一款用于生成文本嵌入的高性能模型。在此过程中,我们了解了其技术溯源、嵌入向量的生成流程以及模型开发方案。如需深入了解我们的训练方法、评估基准和完整的实验结果,我们建议您阅读官方技术报告

EmbeddingGemma 这样的模型为更高效、更强大的语义技术开辟了道路。随着这类模型的能力不断增强、获取门槛持续降低,我们有理由期待其在多个关键领域推动技术突破,例如检索增强生成(RAG)、端侧 AI(On-Device AI)以及超个性化服务(Hyper-Personalization)。

可在 Hugging FaceKaggleVertex AI 平台上查找模型权重,即刻开始探索实践吧。

感谢您的阅读!