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 はゼロから作成されたものではありません。事前にトレーニングされた 3 億パラメータの Gemma 3 モデルとして始まりました。その後、T5Gemma の適応手法を使用し、元のデコーダのみの Gemma モデルをエンコーダ - デコーダ アーキテクチャに変換しました。次に、この新しいモデルのエンコーダから EmbeddingGemma を初期化し、最初から表現を生成できるようにしました。このアプローチにより、EmbeddingGemma は追加のトレーニングを行うことなく、その前身となるモデルから多くの「世界についての知識」を継承することができます。

training
Gemma 3 デコーダから強力なテキスト埋め込みモデルへの道のり

埋め込みはどのように形成されるのか

EmbeddingGemma を使用 することで、Sentence Transformers などのフレームワークを使用して埋め込みを生成できます。テキストの入力シーケンスを与えられると、EmbeddingGemma はそれを緻密に設計された一連のステップを通して処理し、簡潔なベクトル表現を生成します。

SentenceTransformer(
  (0): Transformer({'max_seq_length': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
  (1): Pooling({'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): Normalize()
)
Python

(0): Transformer

入力シーケンスは、このエンコーダのみの Transformer モデルを通過します。この Transformer 層は、双方向の注意を活用して、提供されたコンテキスト内の各トークンの意味を理解し、入力シーケンス内の各トークンに対して 768 次元のベクトルのシーケンスを生成します。

(1): Pooling

Transformer 層の出力は、トークン埋め込みのシーケンスです。Pooling 層の役割は、この可変長のシーケンスを入力全体で単一の固定長の埋め込みに変換することです。EmbeddingGemma は、「平均プーリング」と呼ばれるプーリング手法を使用しています。これは最も一般的なアプローチで、すべてのトークン埋め込みの平均を計算するものです。

(2): Dense

次に、線形投影を適用して、埋め込み(768 次元)をより大きな埋め込み次元(3072)に拡大します。

(3): Dense

その後、別の線形投影を適用して、学習した 3072 次元の埋め込みを最終的なターゲット次元(768)にスケーリングします。

(4): Normalize

最後に、ユークリッド正規化を適用して、効率的な類似性の比較を可能にします。これは、ほかの Gemma モデルで使用していたより複雑な RMSNorm と比較して、よりシンプルでコストの低い操作です。

embeddinggemma
EmbeddingGemma の図解。入力テキストから最終的な埋め込みが形成される仕組み

EmbeddingGemma の学習方法

EmbeddingGemma は、トレーニング中に 3 つの異なる加重損失関数の組み合わせを最適化することで、強力な埋め込みを作成することを学習します。

1. ノイズ対照推定(NCE)損失

NCE 損失は、EmbeddingGemma に類似性と対照性の基本的な概念を教えます。入力(クエリなど)ごとに、次のことを学習します。

  • 「ポジティブペア」を近づける: 埋め込み空間内のクエリとその正しい回答との間の距離を最小限に抑えるようにトレーニングされます。
  • 「ネガティブペア」を遠ざける: 同時に、同じトレーニング バッチ内のクエリと間違った回答との間の距離を最大化します。

重要なのは、「ハードネガティブ」(クエリと意味的に類似しているが、不正確または不完全な回答)を含めることです。このようなトリッキーな例を使用してトレーニングすることで、EmbeddingGemma は、正しい回答と正しそうに見える間違った回答を区別する微妙で細かい違いを学ぶことを余儀なくされます。

関連するアイテム同士が近くに置かれ、関連性のないアイテムが遠くに置かれる、整理されたライブラリを構築するようなものです。

2. グローバル直交正則化(GOR)

この損失は、EmbeddingGemma が埋め込み空間全体に広がる埋め込みを生成するように設計されています。類似したものと異なったものを区別することを学んだとしても、怠惰になり、すべての埋め込みを片隅の 1 か所に積み重ねるだけになってしまう可能性があります。

この正則化は、埋め込みを量子化に対して堅牢にし、近似最近傍探索(ANN)アルゴリズムを使用してベクトル データベースでの効率的な検索を可能にします。

3. 幾何学的埋め込み蒸留

この損失は、知識蒸留の方式として役立ちます。EmbeddingGemma は、より大規模で強力な Gemini Embedding モデルを教師として学習します。

この損失は、2 つの埋め込みモデルのクエリとパッセージの埋め込みの間の L2 距離(差の尺度)を最小化します。これにより、EmbeddingGemma は教師モデルから学習し、その知識と能力の多くを効果的に継承することができます。

loss
EmbeddingGemma がトレーニングに使用する 3 つの異なる損失関数(NCE 損失、GOR、蒸留損失)の図解

これら 3 つの損失関数を組み合わせることで、EmbeddingGemma は、適切に構造化された、表現力豊かで、堅牢な表現を生成することを学び、実世界に関する検索や情報取得タスクで高いパフォーマンスを実現します。

マトリョーシカ表現学習(MRL)

MRL は、大きな表現の中に、小さな高品質の表現を入れ子にすることを可能にする技術です。たとえば、EmbeddingGemma の埋め込みには 768 の次元がありますが、埋め込みを切り捨てて、512、256、128 次元の小さな埋め込みを高品質を維持したまま取得することができます。

トレーニング中、損失関数は、最終的な 768 次元の埋め込みだけでなく、その埋め込みの重複するサブセット(最初の 512、256、128 次元)にも適用されます。これにより、完全な埋め込みから切り出されたバージョンでも、強力で完全な表現にすることができます。

これにより、開発者は複数のモデルをトレーニングまたは管理する必要なく、アプリケーションのパフォーマンスと効率の適切なトレードオフを選択できます。最大限の品質を実現するための完全な 768 次元から、高速化とストレージ コストの削減を実現するための小さいサイズまで、ニーズに最適な埋め込みサイズを選択するだけです。

mrl
マトリョーシカ埋め込みの図解。それぞれの次元数が品質と効率のトレードオフに与える影響を示している

開発レシピ

モデルの開発過程にはいくつかの段階があります。

  • エンコーダ - デコーダ トレーニング: 前述のように Gemma 3 を適合させ、UL2 を使用して Gemma 3 のデータをさらに事前トレーニングします。
  • プレ ファインチューニング: 大きなバッチサイズとハードネガティブなしの(クエリとターゲットの)ペアを使用して、大量のさまざまなタスク(質問に対する回答、文章の類似性、コード検索、ウェブ検索)と言語でトレーニングを行います。
  • ファインチューニング: ハードネガティブと小さなバッチサイズを利用して、より小さく高品質なタスク固有のデータセットでモデルを改善します。タスク混合率は、ベイズ最適化を使用して最適化されます。
  • モデルスープ: ファインチューニングの実行からのモデルのパラメータを平均化して組み合わせることで、品質と堅牢性を向上させます。最終的なモデルは、複数の異なるファインチューニングの組み合わせを使用したファインチューニング実行からのチェックポイントの非加重平均です。
  • 量子化認識トレーニング(QAT): ファインチューニング中に適用し、最小限の品質劣化でメモリ使用量を低減する量子化バージョン(ブロックごとの int4 量子化、チャネルごとの混合精度量子化など)を提供します。

強力なベースモデルを慎重に適応させ、多種多様なトレーニング手法で改良することで、EmbeddingGemma のアーキテクチャは、幅広い用途に適した非常に効果的で汎用性の高いテキスト表現を生成するように設計されています。

まとめ

テキスト埋め込みを生成するための強力なモデルである EmbeddingGemma のアーキテクチャについて解説しました。その起源、埋め込みの生成プロセス、開発レシピを学びました。トレーニング方法、評価ベンチマーク、テスト結果の詳細については、公式テクニカル レポートをお読みいただくことをおすすめします。

EmbeddingGemma のようなモデルは、より効率的で強力なセマンティック技術の道を切り拓いています。このようなモデルがより機能的でアクセスしやすくなるにつれて、検索拡張生成 (RAG)、オンデバイス AI、ハイパー パーソナライゼーションなどのいくつかの重要な分野で進歩が見込まれます。

Hugging FaceKaggleVertex AIでモデルの重みを見つけて、今日から試してみましょう。

お読みいただき、ありがとうございました!