Google 検索によるグラウンディング

このページでは、一般公開されているウェブデータを使用する Google 検索を利用してモデルのレスポンスをグラウンディングする方法について説明します。また、回答に含まれる検索候補についても説明します。

モデルを世界中の知識、幅広いトピック、インターネット上の最新情報に接続する場合は、Google 検索によるグラウンディングを使用します。

Vertex AI でのモデルのグラウンディングの詳細については、グラウンディングの概要をご覧ください。

サポートされているモデル

このセクションでは、検索によるグラウンディングをサポートするモデルを一覧表示します。

サポートされている言語

サポートされている言語の一覧については、言語をご覧ください。

一般公開されているウェブデータを使用してモデルのグラウンディングを行うには、次の手順を使用します。

考慮事項

  • Google 検索によるグラウンディングを使用するには、Google 検索の検索候補を有効にする必要があります。詳しくは、Google 検索の検索候補を使用するをご覧ください。

  • 最適な結果を得るには、1.0 の温度を使用します。この構成の詳細については、モデル リファレンスの Gemini API リクエスト本文をご覧ください。

  • Google 検索によるグラウンディングでは、1 日あたり 100 万件のクエリが上限となります。さらにクエリが必要な場合は、Google Cloud サポートにお問い合わせください。

コンソール

Vertex AI Studio で Google 検索を使用してグラウンディングを使用する手順は次のとおりです。

  1. Google Cloud コンソールで、[Vertex AI Studio] ページに移動します。

    Vertex AI Studio に移動

  2. [自由形式] タブをクリックします。
  3. サイドパネルで [モデルの回答をグラウンディング] 切り替えボタンをクリックします。
  4. [カスタマイズ] をクリックし、Google 検索をソースとして設定します。
  5. テキスト ボックスにプロンプトを入力し、[送信] をクリックします。

プロンプトのレスポンスが Google 検索でグラウンディングされるようになりました。

Python

インストール

pip install --upgrade google-genai

詳しくは、 SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    GoogleSearch,
    HttpOptions,
    Tool,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="When is the next total solar eclipse in the United States?",
    config=GenerateContentConfig(
        tools=[
            # Use Google Search Tool
            Tool(google_search=GoogleSearch())
        ],
    ),
)

print(response.text)
# Example response:
# 'The next total solar eclipse in the United States will occur on ...'

Go

Go をインストールまたは更新する方法をご確認ください。

詳しくは、 SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithGoogleSearch shows how to generate text using Google Search.
func generateWithGoogleSearch(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.0-flash-001"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "When is the next total solar eclipse in the United States?"},
		},
			Role: "user"},
	}
	config := &genai.GenerateContentConfig{
		Tools: []*genai.Tool{
			{GoogleSearch: &genai.GoogleSearch{}},
		},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// The next total solar eclipse in the United States will occur on March 30, 2033, but it will only ...

	return nil
}

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: リクエストを処理するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • MODEL_ID: マルチモーダル モデルのモデル ID。
  • TEXT: プロンプトに含める指示のテキスト。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent

リクエストの本文(JSON):

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "TEXT"
    }]
  }],
  "tools": [{
    "googleSearch": {}
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "The weather in Chicago this weekend, will be partly cloudy. The temperature will be between 49°F (9°C) and 55°F (13°C) on Saturday and between 51°F (11°C) and 56°F (13°C) on Sunday. There is a slight chance of rain on both days.\n"
          }
        ]
      },
      "finishReason": "STOP",
      "groundingMetadata": {
        "webSearchQueries": [
          "weather in Chicago this weekend"
        ],
        "searchEntryPoint": {
          "renderedContent": "..."
        },
        "groundingChunks": [
          {
            "web": {
              "uri": "https://www.google.com/search?q=weather+in+Chicago,+IL",
              "title": "Weather information for locality: Chicago, administrative_area: IL",
              "domain": "google.com"
            }
          },
          {
            "web": {
              "uri": "...",
              "title": "weatherbug.com",
              "domain": "weatherbug.com"
            }
          }
        ],
        "groundingSupports": [
          {
            "segment": {
              "startIndex": 85,
              "endIndex": 214,
              "text": "The temperature will be between 49°F (9°C) and 55°F (13°C) on Saturday and between 51°F (11°C) and 56°F (13°C) on Sunday."
            },
            "groundingChunkIndices": [
              0
            ],
            "confidenceScores": [
              0.8662828
            ]
          },
          {
            "segment": {
              "startIndex": 215,
              "endIndex": 261,
              "text": "There is a slight chance of rain on both days."
            },
            "groundingChunkIndices": [
              1,
              0
            ],
            "confidenceScores": [
              0.62836814,
              0.6488607
            ]
          }
        ],
        "retrievalMetadata": {}
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 98,
    "totalTokenCount": 108,
    "trafficType": "ON_DEMAND",
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 10
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 98
      }
    ]
  },
  "modelVersion": "gemini-2.0-flash",
  "createTime": "2025-05-19T14:42:55.000643Z",
  "responseId": "b0MraIMFoqnf-Q-D66G4BQ"
}

レスポンスを理解する

Vertex AI Studio または API から Google 検索にモデル プロンプトが正常にグラウンディングされた場合、レスポンスにはソースリンク(ウェブ URL)を含むメタデータが含まれます。ただし、このメタデータが提供されず、プロンプト レスポンスがグラウンディングされない場合もあります。その理由はいくつかあります。たとえば、ソースの関連性が低い、モデルのレスポンス内の情報が不完全である、などです。

グラウンディングのサポート

グラウンディング サポートを表示することをおすすめします。これにより、パブリッシャーからのレスポンスを検証し、さらに学習するための手段を追加できます。

Google 検索ソースからのレスポンスのグラウンディング サポートは、インラインと集計の両方で表示する必要があります。たとえば、次の画像は、この方法の例を示しています。

グラウンディング サポートの例

代替の検索エンジン オプションの使用

Google 検索によるグラウンディングを使用する場合、顧客アプリケーションは次のことができます。

  • 代替の検索エンジン オプションを提示する。
  • 他の検索エンジンをデフォルトのオプションにする
  • 自社または第三者の検索候補や検索結果を表示する場合、Google 以外の結果は Google の Grounded Results や検索候補とは別に表示し、ユーザーが混乱したり、Google の結果であると誤解したりしないように表示する必要があります。

利点

ツールとして Google 検索を使用すると、計画、推論、思考を必要とする次の複雑なプロンプトとワークフローを実行できます。

  • グラウンディングを使用すると、最新かつ最も正確な情報に基づいて回答を生成できます。
  • ウェブからアーティファクトを取得して分析できます。
  • マルチモーダル推論やタスク生成を支援するために、関連する画像、動画、その他のメディアを見つけることができます。
  • コーディング、技術的なトラブルシューティング、その他の専門的なタスクを実行できます。
  • 地域固有の情報を検索したり、コンテンツの正確な翻訳をサポートしたりできます。
  • 閲覧に関連するウェブサイトを見つけることができます。

Google 検索の検索候補を使用する

Google 検索によるグラウンディングを使用し、回答で Google 検索の検索候補を受け取った場合は、本番環境とアプリケーションで検索候補を表示する必要があります。

Google 検索によるグラウンディングの詳細については、Google 検索によるグラウンディングをご覧ください。

具体的には、グラウンディングされた回答のメタデータに含まれる検索クエリを表示する必要があります。回答には次のものが含まれます。

  • "content": LLM によって生成された回答。
  • "webSearchQueries": Google 検索の検索候補に使用するクエリ。

たとえば、次のコード スニペットでは、熱帯植物の種類を尋ねる Google 検索のグラウンディングされたプロンプトに Gemini が応答しています。

"predictions": [
  {
    "content": "Monstera is a type of vine that thrives in bright indirect light…",
    "groundingMetadata": {
      "webSearchQueries": ["What's a monstera?"],
    }
  }
]

この出力は、Google 検索の検索候補を使用して表示できます。

Google 検索の検索候補の要件

候補の要件は次のとおりです。

要件 説明
すべきこと
  • 表示要件を遵守しながら、Google 検索の検索候補は厳密に提示され内容で変更されることなく表示されます。
  • Google 検索の検索候補を操作すると、検索結果ページ(SRP)に直接移動します。
してはいけないこと
  • ユーザーがタップしてから SRP が表示されるまでの間に画面や追加の手順を表示する。
  • Google 検索の検索候補または関連するグラウンディングされた LLM の回答の横に、他の検索結果や候補を表示する。

表示の要件

表示の要件は次のとおりです。

  • Google 検索の検索候補は提示されたとおりに表示します。色、フォント、外観を変更しないでください。ライトモードやダークモードなど、次のモックで指定されているとおりに Google 検索の検索候補がレンダリングされるようにします。

  • グラウンディングされた回答を表示するたびに、対応する Google 検索の検索候補が常に表示されるようにする必要があります。
  • ブランディングについては、ブランド リソース センターへようこそに記載されている、Google ブランドの第三者による使用に関するガイドラインを厳守する必要があります。
  • Google 検索でグラウンディングを使用すると、Google 検索の検索候補チップが表示されます。候補チップを含むフィールドは、LLM のグラウンディングされた回答と同じ幅にする必要があります。

タップ時の動作

ユーザーがチップをタップしたときに、チップに表示されている検索キーワードの Google 検索結果ページ(SRP)に直接移動します。SRP は、アプリ内ブラウザまたは別のブラウザ アプリケーションで開くことができます。なんらかの方法で SRP の表示を最小化、削除しない、または妨げないようにすることが重要です。次のアニメーション モックアップは、タップして SRP を表示する操作を示しています。

app/desktop の例

Google 検索の検索候補を実装するためのコード

API を使用して検索に対する回答をグラウンディングすると、モデルの回答では renderedContent フィールドで遵守する HTML と CSS のスタイルが指定されます。これを実装すると、アプリで Google 検索の検索候補を表示できます。API レスポンスの例については、Google 検索によるグラウンディングのレスポンスのセクションをご覧ください。

次のステップ