Closed6

メモ: Embedding Gemma 2

kun432kun432

https://x.com/googledevs/status/2107502391696535767

@googlegemma からの EmbeddingGemma 2、デバイス上およびエッジアプリケーション向けに特別に構築された、当社のコンパクトな7億4千万パラメータのAIモデルが登場しました。

初代モデルが最高クラスのテキスト埋め込みを提供した一方で、EmbeddingGemma 2 はネイティブでそれをすべて理解し、テキスト、画像、音声、ビデオを一つの共有空間でつなぎ合わせます。これにより、テキスト、画像、音声、ビデオといった異なる形式間で検索が可能になり、事前に手動で整理したり、翻訳したり、ラベル付けしたりする必要がなくなります。

https://x.com/googledevs/status/2107502392250183720

マルチモーダルメディアを完全にオフラインで処理し、サーバー呼び出しをゼロに抑えます。モジュラー設計により、使用しないビジョンやオーディオのコンポーネントを簡単に除去してメモリを節約でき、柔軟な次元サイズにより、ローカルデータベースでのストレージ要件を最大6倍削減します。

すべてのメディアが面倒な翻訳なしで直接接続されるため、画像ギャラリーをテキスト検索したり、長時間のオーディオをスキャンしたり、ボイスメモを使ってビデオクリップを検索したりするアプリを簡単に構築できます。Gemma 4と組み合わせることで、最小限のメモリと処理能力で動作する高効率なRAGパイプラインを構築することも可能です。

https://x.com/googledevs/status/2107502392711446887

— ウェイトは @HuggingFace と @Kaggle で公開されています
— LiteRT、MediaPipe、@LangChain、および @llama_index のすぐに使えるサポートが得られます
— マッピングを開始:https://blog.google/innovation-and-ai/technology/developers-tools/embeddinggemma-2/

kun432kun432

公式ブログ

https://blog.google/innovation-and-ai/technology/developers-tools/embeddinggemma-2/

Dia によるまとめ。

EmbeddingGemma 2 の話だね、日本語でざっくり&分かりやすくまとめるね。

EmbeddingGemma 2 って何者?

めっちゃざっくり言うと、 「テキストも画像も音声も動画も、全部同じ“意味ベースの座標空間”にギュッと押し込んでくれる小さめモデル」 だよ。

  • 普通の生成モデル(ChatGPT とか Gemini とか)は「文章を返す子」ってイメージでしょ?
  • EmbeddingGemma 2 は「答えをしゃべる子」じゃなくて、「入力の“意味”をベクトル(数字の並び)に変換する子」なのね。
  • そのベクトルを使って「似てるもの同士を探す」「検索する」「分類する」みたいな処理ができる。

で、この子のヤバいポイントが「マルチモーダル埋め込み」をオンデバイスでやれるってとこ。

キーワードを一個ずつかみ砕く

1. 「埋め込み(embedding)」って何?

イメージとしては「意味マップの座標」だと思ってくれればOK。

  • 文章・画像・音声・動画 → モデル → 数百次元くらいのベクトル(例:長さ768の数字の配列)

このとき、

  • “猫の写真”と“cat って文字”は、意味近いから「ベクトルも近くなる」
  • “ギターを弾く動画”と“guitar performance ってテキスト”も、意味近いから座標が近い

だから、

  • 「似てるベクトルを探す=意味的に似てるコンテンツを探す」ってことになる。

2. 「マルチモーダル」って何?

モーダル=モード=情報の種類、って感じ。

  • テキスト(文章)
  • 画像
  • 音声
  • 動画
  • そしてコード(プログラム)

EmbeddingGemma 2 は、これらをぜんぶ同じ埋め込み空間にマッピングできる子、ってこと。

だから例えば:

  • 音声メモから「この部分、猫の鳴き声してるとこ探したい」とか
  • 動画の中から「拍手が起きてる瞬間だけ探したい」とか
  • 画像フォルダの中から「赤い車が写ってるやつ全部出して」って、テキストで聞くとか

こういう「モードをまたいだ検索」ができるようになる。

3. 「オンデバイス」って何が嬉しいの?

ここがかなり実用ポイント。

  • モデルサイズ:740M パラメータ(サーバー用巨大モデルよりだいぶ小さい)
  • Pixel 11 Pro とかのスマホ上で、量子化込みで動く前提
  • テキストだけなら RAM ~191MB、フルマルチモーダルでも ~567MB

つまり:

  • クラウド送信せずに手元の端末だけで処理できる
  • プライバシー的に安心(写真・録音・動画をサーバーに投げなくていい)
  • オフラインでも使える(通信なくてもローカル検索できる)
  • レイテンシ小さい(クラウド往復いらないからサクサク)

ローカルのメディア検索とか「端末だけで完結する RAG(検索+生成)」に向いてる構成になってる。

主な特徴をもうちょい整理

小さいけど強い(ベスト・イン・クラス)

  • 1B(10億)パラメータ未満のマルチモーダル埋め込みモデルの中で、かなりスコア高い。
  • テキスト、画像、音声系のベンチマーク(MTEB Code, Massive Image Embedding Benchmark, MAEB など)で、同サイズ帯トップレベル。
  • 専門特化のもっと大きいモデルを追い抜くケースもある。

特にコードが強化されてて:

  • MTEB Code スコアが 68.76 → 78.68 にジャンプアップ
  • ローカルのコード検索・スニペット検索・エージェント用のコード RAG にかなり良さそう。
    モジュール構成になってる

全部入りじゃなくて、用途に合わせてパーツを削れるのもポイント。

  • ベース:テキスト専用なら約 270M パラメータ
  • オプション:
    • Vision エンコーダー:約 170M
    • Audio エンコーダー:約 300M

だから、

  • 「とりあえずテキスト検索だけ欲しい」→ テキストだけ載せる
  • 「画像+テキストまで欲しい」→ Vision を足す
  • 「フルでマルチモーダルやりたい」→ 全部載せる
    みたいにリソースと用途に合わせて構成調整できる。

MRL(Matryoshka Representation Learning)でベクトルを短くできる

ここちょっとテクいけど、超ざっくりいうと「マトリョーシカみたいに、中身を途中で切っても意味がちゃんと残るように学習してある」ってこと。

  • 元は 768 次元ベクトル
  • でも「512 / 256 / 128 次元まで切り詰めても、そこそこ性能が落ちない」ように設計されてる

なので:

  • ベクトルDBのストレージ節約(最短で約 6 倍圧縮)
  • メモリ使用量も減る
  • 例えば「モバイルは 128 次元、PC は 512 次元」みたいな運用もアリ

どんなことに使えるの?

1. マルチモーダル検索

  • テキストでクエリ → 画像/動画/音声ファイル全体から「意味的に近いもの」を拾ってくる。
  • 例:
    • 「犬が走ってるシーン」ってテキストで検索 → 動画のそのシーンのフレームを出す
    • 「ギターソロっぽいフレーズ」で検索 → 音声データの該当部分をヒットさせる

Google AI Edge Gallery のデモとして:

  • Instant Media Search(メディアライブラリ検索)
  • Video Moments Finder(動画の中の特定瞬間検索)
  • Foresight(ローカルファイル検索+Gemma 4 で推論)

とかが用意されてる。

2. オンデバイス RAG パイプライン

EmbeddingGemma 2 は Gemma 4 と同じテキストトークナイザ&音声エンコーダーを共有してるから、

  • EmbeddingGemma 2:検索・ベクトル化担当
  • Gemma 4:生成・推論担当

っていう構成を低メモリで共存させやすい。

ワークフローとしては:

  1. 端末内のファイル・メディア・コードを全部 EmbeddingGemma 2 でベクトル化してベクトルDBに保存
  2. ユーザーのクエリ(テキスト or 音声 or 画像)も埋め込み
  3. 似てるベクトルを検索してコンテキストとして取り出す
  4. それを Gemma 4 に渡して回答生成

これを全部オンデバイスで回せるから、プライバシー強めなアプリとかと相性いい。

3. ルーティング・分類・意思決定

MediaPipe Decision Task API と組み合わせることで、

  • 入力(画像・音声・動画・テキスト)の埋め込みを元に
    • どのモデルに回すかルーティングしたり
    • カテゴリ分類・タグ付けしたり
    • アラート・レコメンド出したり

みたいなリアルタイム意思決定エンジンが作れるイメージ。

例えば:

  • スマホで撮った映像をリアルタイム解析して、「危険っぽい状況ならアラート」「スポーツシーンならハイライト切り出し」とか。
  • ストリーム音声を聞きつつ、「これは会議」「これは雑談」みたいに分けてログ化とか。

開発者視点での「どう触るか」

基本、公開モデルとして配布されてて、Apache 2.0 ライセンス(商用OKめ)なのがデカい。

つまり、「自分のデータ・自分のデバイスで動くマルチモーダル検索・RAGを、商用でもガチで組める」立ち位置のモデルになってる感じ。

ざっくりまとめ

  • EmbeddingGemma 2 は、テキスト・画像・音声・動画・コードを同じ意味空間のベクトルにしてくれる小さめモデル。
  • 使い道は、主に「検索・類似度・ルーティング・RAGの前段」。
  • オンデバイスで動く前提だから、プライバシーやレイテンシにかなり強い。
  • モジュラー構成+ベクトル圧縮(MRL)で、リソース制約きつい環境でも実用的に設計されてる。
  • Gemma 4 と組み合わせることで、「ローカルのマルチモーダルRAGエージェント」みたいな構成を現実的なメモリで実現できる。

もし「ローカルで動かすマルチモーダル検索アプリ」や「端末内データだけで答えるアシスタント」とか作るなら、ドンピシャでハマるタイプのモデルだよ。

kun432kun432
kun432kun432

オンデバイスへのデプロイで記載されている MediaPipe っての全然知らなかった。

https://developers.google.com/edge/mediapipe/solutions/guide

MediaPipe Solutions は、アプリケーションに人工知能(AI)および機械学習(ML)の手法を迅速に適用するためのライブラリとツールのスイートを提供します。これらのソリューションをアプリケーションにすぐに組み込んだり、ニーズに合わせてカスタマイズしたり、複数の開発プラットフォームで利用したりできます。MediaPipe Solutions は MediaPipe のオープンソースプロジェクトの一部であるため、アプリケーションのニーズに合わせてソリューションのコードをさらにカスタマイズすることが可能です。

MLでよくあるタスク・ソリューションがあらかじめ用意されていて、タスクに応じてモデルやカスタマイズを選択して、いろいろなプラットフォームで組み込める、みたいな感じなのかな?

記載されているソリューション・タスクは以下のような感じ

  • 音声分類
  • 意思決定
  • LLM推論
  • 言語検出
  • テキスト分類
  • テキスト埋め込み
  • テキスト スペル・文法チェック
  • テキスト要約
  • 顔検出
  • 顔のランドマーク検出
  • ジェスチャー認識
  • 手のランドマーク検出
  • ホリスティックランドマーク検出
  • 画像分類
  • 画像埋め込み
  • 画像セグメンテーション
  • インタラクティブセグメンテーション
  • 物体検出
  • ポーズランドマーク検出

Jevのような意思決定タスクも含まれているみたいで、Embedding Gemma 2 をそれに使うこともできるみたい。

これちょっと面白そう。別途試す。

kun432kun432

MediaPipe はこちらで試している。現時点では Embedding Gemma 2 へのPythonサポートが若干追いついてなくて、ドキュメントのままだと動かなくてひと手間いる感じ。そのうち追いつくのかもしれない。

https://zenn.dev/kun432/scraps/ed57189607f2d5

このスクラップは20日前にクローズされました