はじめに
こんにちは!
KDDIアイレットの取り組みとして、本日6月22日から7月3日にかけて「Google Cloud Next '26 / Google I/O やってみた系ブログリレー」がスタートしました!
記念すべき第2日目の今回は、「Gemini Embedding 2」を対象に、実際に試してみた内容をご紹介します。
本日は、Googleが2026年3月10日にマルチモーダル対応の埋め込みモデル 「Gemini Embedding 2」 を発表しましたので、検証を交えて紹介していきます。
そもそも「Embedding」とは?
ひとことで言うと、文章や画像の「意味」を、コンピュータが扱える数字の列に変換する技術です。
イメージは「料理の味を数値にする」ことです。
ある料理を「甘さ7・辛さ2・酸っぱさ5…」と数字で表すと、味の似た料理は数字が近くなりますよね。Embedding は同じことを「意味」に対して行い、文章や画像を数字の組に変換します。意味が近いものは数字も近くなるので、似たものを探せるわけです。
こうして数字に変換しておくと、コンピュータは「意味が近いものを探す」ことができます。検索やおすすめ、AIチャットの社内文書検索(RAG)などは、すべてこの仕組みが土台になっています。
これまでの課題
問題は、数値の付け方(ものさし)が種類ごとにバラバラだったことです。
- 文章には「文章用のものさし」
- 画像には「画像用のものさし」(別のモデルが必要)
- 動画・音声・PDF は、さらに別の仕組み
ものさしが別々だと、出てくる数字も別々の基準になります。そのため、たとえば「文章を入力して、関係する画像を探す」ことが素直にできませんでした。種類をまたいで数字を直接比べられず、複数のモデルを組み合わせて無理やりつなぐ必要があり、手間も精度の壁もありました。
今回変わったこと
Gemini Embedding 2 は、Google が出した「初めての、最初からマルチモーダルな」埋め込みモデルです。
いちばんの変化はこれです:
文章・画像・動画・音声・PDF を、すべて「同じ1つのものさし」で数値にできるようになった。
しかも1つのモデル・1回の呼び出しで、文章と画像をまとめて渡せます。
ものさしが1つに統一されたことで、こんなことが自然にできます:
- 文章で画像を探す(例:「夕焼けの海」と打つと、それらしい写真が見つかる)
- 画像で似たものを探す
- 動画や音声の中身を、意味で検索する
「種類の違うもの同士を、意味で直接つなげられる」――これが今回いちばん大きく変わった点です。
何ができるようになったのか
例えば、以下のようなことができるようになりました。
- 社内資料の横断検索:PDF・図・写真が混ざった大量の資料を、AIがまとめて意味で検索してくれる
- ECの商品検索:言葉で書いたイメージから、合う商品画像を出す
- 動画・音声アーカイブの活用:「あの説明をしている場面」を意味で探せる
実際の導入事例でも効果が出ています(Google発表より):
- アパレルのサブスク企業 Nuuly:商品の一致率が 60% → 約87% に向上
- Supermemory:検索の的中率(Recall@1)が 約40% 向上
実際に検証してみた
本当に「同じものさし」で測れるのか、gemini-embedding-2 に画像・テキスト・PDF・音声を実際に渡して、本当に「同じ意味のもの」が近くに集まるのかを確かめました。
事前準備
# 1. Vertex AI API を有効化
gcloud services enable aiplatform.googleapis.com
# 2. SDK をインストール
pip install google-genai numpy
# 3. 認証
gcloud auth application-default login
試してみるコード
以下を実行すると、テキストと画像をそれぞれ gemini-embedding-2 でベクトル化し、近さ(コサイン類似度)を比べられます。コード内の PROJECT_ID を自分のプロジェクトに差し替え、手元に cat.jpg(猫の画像)を置いて動かしてみてください。
import numpy as np
from google import genai
from google.genai import types
client = genai.Client(vertexai=True, project="PROJECT_ID", location="us")
def embed(content):
res = client.models.embed_content(model="gemini-embedding-2", contents=[content])
return np.array(res.embeddings[0].values)
# テキストと画像を、同じモデルでベクトル化する
with open("cat.jpg", "rb") as f:
cat_image = types.Part.from_bytes(data=f.read(), mime_type="image/jpeg")
v_cat_text = embed("猫")
v_cat_img = embed(cat_image)
v_car_text = embed("自動車")
def cos(a, b):
return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))
print("猫の画像 × 「猫」 :", round(cos(v_cat_img, v_cat_text), 3)) # → 0.384
print("猫の画像 × 「自動車」:", round(cos(v_cat_img, v_car_text), 3)) # → 0.248
猫の画像は「自動車」より「猫」に近い数字になり、種類が違っても意味でつながっていることが確認できます。
やったこと
- 4つの題材(猫・犬・ピザ・自動車)を用意
- それぞれを画像/日本語テキスト/英語テキストで用意。さらに「猫」だけは PDF と音声(読み上げ)も追加
- すべてを gemini-embedding-2 で数字のベクトル(3,072次元)に変換し、近さ(コサイン類似度)を測定
使った画像:
| 猫 | 犬 | ピザ | 自動車 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
結果:すべての素材が「同じ意味のテキスト」に最も近づいた
黒枠が「正解(同じ意味)」のテキストです。6つの素材すべてで、正解のテキストが最も高い類似度になりました。
- 猫の画像 → 「猫」が最も近い(0.38)
- 猫のPDF → 「猫」が最も近い(0.36)
- 猫の音声(読み上げ)→ 「猫」が最も近い(0.70:声の中身=意味まで正しく捉えている)
つまり、写真で撮ろうが、文字で書こうが、PDFにしようが、声で言おうが――入り口(モダリティ)が違っても "猫" は "猫" に近い数字になる。これが「同じものさしで測れる」ということです。
参考:全素材の類似度
検証は、2026年6月10日時点の公式ドキュメントをもとに実施しております。確認時点で gemini-embedding-2 は GA のモデルです。料金・提供リージョン・API 仕様は変わる可能性があるため、利用時は公式ドキュメントで最新情報を確認してください。
補足
全データを2次元に圧縮して眺めると、テキスト群と画像群はやや離れた位置に固まって見えます(「モダリティギャップ」と呼ばれる既知の性質)。
ただし上の結果のとおり、「意味でいちばん近いものを探す」という実用上の動作は正しく働きます。「完全に同じ点に重なる」のではなく「意味でちゃんと隣り合う」というのが正確な姿です。
検証環境:Vertex AI(google-genai SDK)/ モデル
gemini-embedding-2/ 出力 3,072次元。素材14件すべて埋め込み成功、クロスモーダル検索の正解率 6/6。
技術的なポイント
- 出力は3,072次元。768 / 1,536 に縮めてコストや速度を優先することもできる
- 100言語以上に対応している
- Gemini Developer API と Vertex AI(Gemini Enterprise Agent Platform)の両方で使える
まとめ
これまで「文章は文章、画像は画像」と分かれていた世界が、Gemini Embedding 2 で1つにまとまりました。
結果として、「種類の違うデータを、意味でまたいで検索・比較する」という、これまで手間のかかったことがシンプルにできるようになったことが今回の発表で一番価値を感じた部分です。
皆様も、是非試してみてください。






