GEMINI LABEN
CHAT — 8月26日から Google Chat が Gemini のハブになります。検索・下書き・会話の追いつき・タスクとイベントの管理を、Workspace の文脈を持ったまま行えるようになります。残り3日ですANDROID — 9月4日から Android の Google アシスタントを Gemini が置き換えます。残り12日です。アシスタント前提で組んだ音声ショートカットは、置き換え後の挙動を確認しておきたいところですSCALE — Gemini アプリが8月11日に月間10億ユーザーへ到達しましたROBOTICS — gemini-robotics-er-1.6-preview は8月31日で停止します。残り8日です。後継は ER 2 系で、空間推論・多段のツール連携・複数ロボットの協調に対応しますFLASH — Gemini 3.7 Flash は8月13日に GA となり、AI Pro と Ultra 向けの Gemini Spark のエンジンとして160か国以上で動いています。導入価格は12月31日までですCLASSROOM — Gemini in Classroom が8月10日から全年齢の学生へ開放されました。フラッシュカード・練習問題・学習ガイド・ガイド付きプロンプトが使えますCHAT — 8月26日から Google Chat が Gemini のハブになります。検索・下書き・会話の追いつき・タスクとイベントの管理を、Workspace の文脈を持ったまま行えるようになります。残り3日ですANDROID — 9月4日から Android の Google アシスタントを Gemini が置き換えます。残り12日です。アシスタント前提で組んだ音声ショートカットは、置き換え後の挙動を確認しておきたいところですSCALE — Gemini アプリが8月11日に月間10億ユーザーへ到達しましたROBOTICS — gemini-robotics-er-1.6-preview は8月31日で停止します。残り8日です。後継は ER 2 系で、空間推論・多段のツール連携・複数ロボットの協調に対応しますFLASH — Gemini 3.7 Flash は8月13日に GA となり、AI Pro と Ultra 向けの Gemini Spark のエンジンとして160か国以上で動いています。導入価格は12月31日までですCLASSROOM — Gemini in Classroom が8月10日から全年齢の学生へ開放されました。フラッシュカード・練習問題・学習ガイド・ガイド付きプロンプトが使えます
記事一覧/API / SDK
API / SDK/2026-07-09中級

gemini-embedding-2 の検索精度が伸びないとき、最初に task_type を疑う

gemini-embedding-2 の検索が惜しい外れ方をするとき、原因は task_type の指定漏れや不一致であることが多いです。ドキュメントとクエリで用途を揃え、再現率を取り戻す実装と検証手順をまとめました。

gemini106embedding10RAG15semantic-search4gemini-api284

プレミアム記事

壁紙アプリのタグ検索を gemini-embedding-2 で作り直したとき、結果が「間違ってはいないけれど、惜しい」外れ方をしました。「夕焼け 海」で引いたのに、上位に来るのは夕焼けの山や、海だけの写真。欲しかった一枚は7番目にいる。精度がゼロなら実装ミスを疑いますが、惜しいときほど原因が見えにくいものです。

半日ほどインデックスの正規化やチャンク設計を見直して、最後に気づいたのが task_type でした。ドキュメントもクエリも task_type を指定せずに埋め込んでいたのです。ここを揃えた瞬間、さきほどの一枚が2番目に上がってきました。

同じ現象は、gemini-embedding-2 が GA になって「テキストも画像も同じモデルで埋め込める」ようになった今、むしろ増えていると感じます。モデルを差し替える機会が増えたぶん、task_type の指定が引き継がれずに落ちるからです。原因と直し方を、私自身が測った差とともに順に整理していきます。

task_type は「何のための埋め込みか」をモデルに伝えている

埋め込みモデルは、渡したテキストをベクトルに変換します。ただ、同じ文でも「検索される側のドキュメント」として使うのか、「検索する側のクエリ」として使うのかで、最適なベクトルの向きは微妙に異なります。

task_type は、その用途をモデルに明示するパラメータです。gemini-embedding-2 では、ドキュメントとクエリで別々に最適化された埋め込みを得られます。指定しないと汎用的な埋め込みになり、検索という非対称なタスク(短いクエリで長いドキュメントを引く)に最適化されません。

ここが直感に反するところです。クエリとドキュメントは同じ空間で比較するのだから、同じ扱いにすべきだと考えてしまいます。実際には、非対称なタスクでは「クエリ用」と「ドキュメント用」を別々に指定したほうが、コサイン類似度の順位が安定します。

よくある間違い:ドキュメントもクエリも task_type なしで埋め込む

最初に私がやっていたのが、これです。インデックス作成時も検索時も、同じ関数で task_type を渡さずに埋め込んでいました。

from google import genai
 
client = genai.Client()  # GEMINI_API_KEY は環境変数から読み込みます
 
def embed_plain(text: str) -> list[float]:
    # task_type を指定していない = 用途不明の汎用埋め込み
    resp = client.models.embed_content(
        model="gemini-embedding-2",
        contents=text,
    )
    return resp.embeddings[0].values
 
# インデックスも検索も同じ関数を使ってしまう
doc_vec = embed_plain("夕焼けに染まる海辺の風景写真")
query_vec = embed_plain("夕焼け 海")

このコード自体はエラーになりません。だから厄介なのです。検索は動くし、それらしい結果も返ってきます。ただ、非対称タスクに最適化されていないぶん、順位がぼやけます。「精度が出ない」ではなく「惜しい」という症状は、この状態でよく現れます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
検索結果が惜しい外れ方をしていた人が、task_type を揃えるだけで再現率を取り戻せる
RETRIEVAL_DOCUMENT と RETRIEVAL_QUERY をコピペで正しく使い分ける実装を手に入れられる
小さなゴールデンセットで task_type を A/B 検証する習慣を、自分のプロジェクトに導入できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

API / SDK2026-07-04
公開前に「意味が近すぎる過去記事」を弾く — Gemini Embedding でトピック共食いを防ぐ類似ゲート
記事数が数百本を超えると、新しく書いた記事が過去記事と検索面で共食いを起こします。gemini-embedding-2 で本文の意味ベクトルを持ち、公開前にコサイン類似で近すぎる既存記事を弾くゲートを、動くコードと閾値の決め方まで実装します。
API / SDK2026-08-22
メディエーショングループが20を超えたとき、設定の抜けをどう見つけるか
広告メディエーションのグループが増えると、設定の抜けや型のずれが静かに溜まります。設定を1枚の表に正規化して機械でずれを確定させ、判断が必要なセルだけを Gemini に渡す分担にした手順をまとめました。
API / SDK2026-07-14
Gemini Code Execution の計算結果とモデルの文章がずれる — 実行結果だけを信頼する検証ゲートの実装
Gemini の Code Execution は実際に走らせた計算結果と、それを説明する自然文を別々に返します。文章側の数値を鵜呑みにすると幻覚を掴みます。実行結果だけを真実として抽出し照合する検証ゲートの実装を、動くコードで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →