EmbeddingGemma 300M リリースノート

TL;DR

GoogleはEmbeddingGemmaをリリースしました。これは308 M‑パラメータの多言語テキスト専用埋め込みモデルで、2 Kトークンのコンテキストウィンドウを持ち、オンデバイス検索、エージェント、その他低レイテンシーアプリケーション向けに設計されています。500 M未満のパラメータを持つモデルの中でMassive Text Embedding Benchmark (MTEB)でトップに立ち、100以上の言語をサポートしています。


Introduction – コンパクトで高性能な多言語埋め込みモデル

EmbeddingGemmaはGoogle DeepMindが提供する最新の小規模多言語埋め込みモデルです。308 Mパラメータ、量子化時に200 MB RAM未満で、Massive Multilingual Text Embedding Benchmark (MMTEB)で最先端の性能を発揮しつつ、モバイルやエッジへの展開に十分な小ささを保ちます。モデルは2048トークンを1回のフォワードパスで処理し、768次元のベクトルを出力します。Matryoshka Representation Learning (MRL)を用いて、512、256、128次元へのオプションの切り詰めも可能です。

Architecture – エンコーダのみのGemma3、平均プーリングと密結合ヘッド

EmbeddingGemmaはGemma3トランスフォーマーのバックボーンを再利用し、因果注意から双方向注意へ切り替えることでデコーダ構造をエンコーダに変換しています。このエンコーダはトークンレベルの埋め込みを生成し、平均プーリングで単一のテキスト埋め込みにまとめ、続いて2つの密結合層でプーリングされたベクトルを768次元の出力にマッピングします。モデルは、公開ウェブテキスト、コード、技術文書、合成タスク固有例を混合した、約3200億トークンの多言語コーパスで訓練され、CSAM、機密データ、低品質コンテンツに対する厳格なフィルタリングが行われました。

Evaluation – サブ500Mモデルでのベストインクラス結果

EmbeddingGemmaは**Multilingual MTEB (v2)English MTEB (v2)の両スイートでベンチマークされました。サイズは控えめですが、同等のベースラインを一貫して上回り、公式MTEBリーダーボードで500M未満のパラメータを持つテキスト専用多言語埋め込みモデルとして最高位を獲得しています。ブログ記事には多言語トラックと英語トラックのパフォーマンスプロットが掲載され、MTEBデータの20 %**以上で訓練されたモデルは過学習を防ぐため除外されたことが記されています。

Prompt design – タスク固有のプレフィックスが必要

EmbeddingGemmaはタスク固有のプロンプトのセットで訓練されており、最適な性能を得るためには入力の前に付加する必要があります。最も一般的なプロンプトは以下です:

  • query: "task: search result | query: "
  • document: "title: none | text: "

その他のプロンプトはBitextMining、Clustering、Classification、InstructionRetrieval、MultilabelClassification、PairClassification、Reranking、STS、Summarizationをカバーしています。Sentence‑Transformersライブラリでは、model.encode_querymodel.encode_document が自動的に querydocument のプロンプトを付加しますが、他のフレームワークでは手動で指定する必要があります。

Usage across ecosystems – すぐに実行できる例

EmbeddingGemmaは多くの人気リトリーバルおよびLLMツールキットと統合されています。以下に、埋め込みを取得し類似検索を実行する方法を示す簡潔で自己完結型のスニペットを示します。

Sentence‑Transformers (Python)

from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-300m")
query = "Which planet is known as the Red Planet?"
documents = [
    "Venus is often called Earth's twin because of its similar size and proximity.",
    "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
    "Jupiter, the largest planet in our solar system, has a prominent red spot.",
    "Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]
q_emb = model.encode_query(query)
d_emb = model.encode_document(documents)
print(q_emb.shape, d_emb.shape)  # (768,) (4, 768)
print(model.similarity(q_emb, d_emb))

この例では、文書が正しくランク付けされ、火星に関する文が最も高い類似度を示します。

Dimensionality truncation (Matryoshka)

model = SentenceTransformer("google/embeddinggemma-300m", truncate_dim=256)
q_emb = model.encode_query(query)
d_emb = model.encode_document(documents)
print(q_emb.shape, d_emb.shape)  # (256,) (4, 256)

256次元に切り詰めることで、ストレージと計算コストを削減しつつ、ランク順序を維持します。

LangChain (Python)

from langchain_huggingface.embeddings import HuggingFaceEmbeddings
embedder = HuggingFaceEmbeddings(
    model_name="google/embeddinggemma-300m",
    query_encode_kwargs={"prompt_name": "query"},
    encode_kwargs={"prompt_name": "document"}
)
# Use with FAISS vector store for retrieval as shown in the blog post.

LangChainのユーザーはquerydocumentのプロンプトを明示的に設定する必要があります。

LlamaIndex (Python)

from llama_index.embeddings.huggingface import HuggingFaceEmbedding
emb = HuggingFaceEmbedding(
    model_name="google/embeddinggemma-300m",
    query_instruction="task: search result | query: ",
    text_instruction="title: none | text: "
)

正しい埋め込み生成のためには、同じプロンプト文字列が必要です。

Haystack, txtai, Transformers.js, ONNX Runtime, and TEI

ブログでは、これら各ランタイム向けのすぐに実行できるスクリプトが提供されています。すべて同じパターンに従い、Hubからモデルをダウンロードし、適切なプロンプトを設定し、埋め込みを計算し、内積類似度(訓練目的)を実行します。Text Embeddings Inference (TEI) のDockerイメージ(cpu-1.8.1cuda-1.8.1など)はOpenAI互換の/v1/embeddingsエンドポイントを公開し、/embedエンドポイントはさらにprompt_namedimensionsパラメータをサポートして、オンザフライでの切り詰めが可能です。

Finetuning – MIRIAD医療データセットでのドメイン適応

EmbeddingGemmaはSentence‑Transformersライブラリでファインチューニング可能です。ブログでは、以下のフルパイプラインが示されています:

  1. ベースモデル(google/embeddinggemma-300m)をロードする。
  2. MIRIAD医療指示・検索データセット(10万ペアの訓練、1千件の評価、1千件のテスト)をロードする。
  3. CachedMultipleNegativesRankingLoss を使用してバッチ内負例サンプリングを効率化する。
  4. RTX 3090上で1エポック(≈5.5 時間)を混合精度(fp16)で訓練する。
  5. InformationRetrievalEvaluator で評価し、NDCG@10を報告する。

ベースモデルはMIRIADテスト分割で0.8340 NDCG@10を達成しました。ファインチューニング後、モデル(sentence‑transformers/embeddinggemma-300m‑medical)は0.8862 NDCG@10に達し、Qwen3‑Embedding‑0.6B(596 Mパラメータ)などのより大きな一般目的埋め込みモデルをすべて上回りました。

Implications – オンデバイス多言語検索の実現

EmbeddingGemmaのコンパクトなサイズ2 Kコンテキスト多言語カバレッジの組み合わせは、レイテンシ、メモリ、帯域幅が制約されるシナリオに最適です:

  • モバイルRAGパイプラインはクエリと文書をローカルで埋め込み、クラウドAPIへの依存を減らせます。
  • エッジエージェント(例:音声アシスタント、AR/VRアプリ)は、生テキストを送信せずに意味検索を実行できます。
  • クロス言語検索は、100以上の言語をサポートしているため、低消費電力デバイスでも実現可能です。
  • Matryoshka切り詰めにより、開発者は精度とストレージ・計算コストをトレードオフでき、控えめなハードウェア上で大規模ベクトルデータベースを構築できます。

総じて、EmbeddingGemmaは高速かつ効率的な運用が求められる本番環境で、高品質な多言語埋め込みの導入ハードルを下げます。

さらに読む

クイックスタートチェックリスト

  1. インストール プレビュー版Transformersパッケージ(pip install git+https://github.com/huggingface/transformers@v4.56.0-Embedding-Gemma-preview)。
  2. フレームワークを選択(Sentence‑Transformers、LangChain、LlamaIndexなど)。
  3. Hubから google/embeddinggemma-300mロード
  4. 適切なプロンプトを 適用(検索にはquery、コーパス項目にはdocument)。
  5. 必要に応じて truncate_dim(256、512、または128)で埋め込みを 切り詰め
  6. 本番スケーリングのために TEI または ONNX Runtime で デプロイ

結論

EmbeddingGemmaは、サブ500Mパラメータというパッケージ内で、多言語対応、オンデバイス効率、ベンチマークでトップクラスの品質という希少な組み合わせを実現します。オープンソースで利用可能であり、主要なリトリーバルフレームワークとの広範な統合、そしてシンプルなファインチューニングパイプラインにより、制約されたハードウェア上で次世代の意味検索や検索強化生成システムを構築する開発者にとって実用的な選択肢となります。

Sources