Agent Search によるグラウンディング

このページでは、エージェント検索のデータを使用してレスポンスをグラウンディングする方法について説明します。

Gemini をデータにグラウンディングする

検索拡張生成(RAG)を行う場合は、モデルをウェブサイトのデータまたはドキュメント セットに接続し、Agent Search によるグラウンディングを使用します。

データへのグラウンディングは、最大 10 個のエージェント検索データソースをサポートし、Google 検索を使用したグラウンディングと組み合わせることができます。

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

このセクションでは、お客様独自のデータによるグラウンディングをサポートするモデルを示します。

クリックしてサポートされているモデルを開く

前提条件

モデル出力をデータにグラウンディングする前に、次の操作を行います。

  1. Google Cloud コンソールで [IAM] ページに移動し、グラウンディング サービスが機能するために必要な discoveryengine.servingConfigs.search 権限を検索します。

    [IAM] に移動

    Agent Search でグラウンディングを使用するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    • すべての Discovery Engine リソースを読み取る場合: Discovery Engine 閲覧者roles/discoveryengine.viewer)。

    • すべての Discovery Engine リソースの読み取りと書き込みを行い、エージェント検索インスタンスを作成するには、Discovery Engine 編集者roles/discoveryengine.editor)ロールが必要です。

    IAM の詳細については、IAM のロールと権限をご覧ください。

  2. AI Applications を有効にして API を有効にします。

  3. AI Applications のデータソースとアプリケーションを作成します。

    詳細については、エージェント検索の概要をご覧ください。

AI アプリケーションを有効にする

エージェント検索を使用してレスポンスをグラウンディングするには、次の手順に沿ってエージェント検索サービスを有効にする必要があります。

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

    [AI Applications] に移動

  2. 省略可: データ使用に関する利用規約を確認します。

AI Applications は、global ロケーション、または euus のマルチリージョンで使用できます。詳細については、AI Applications のロケーションをご覧ください。

AI Applications でデータストアを作成する

AI Applications でデータストアを作成するには、ウェブサイトのデータまたはドキュメントでグラウンディングすることを選択できます。

ウェブサイト

  1. Google Cloud コンソールで [データストアの作成] ページを開きます。

  2. [ウェブサイトのコンテンツ] ボックスで [選択] をクリックします。
    [データストアのウェブサイトの指定] ペインが表示されます。

  3. [ウェブサイトの高度なインデックス登録] チェックボックスがオンになっていない場合は、[ウェブサイトの高度なインデックス登録] チェックボックスをオンにします。
    [データストアの構成] ペインが表示されます。

  4. [インデックスに登録する URL パターンを指定してください] セクションで、次の操作を行います。

    • [追加するサイト] に URL を追加します。
    • 省略可: [除外するサイト] に URL を追加します。
  5. [続行] をクリックします。

  6. [データストアの構成] ペインで、

    1. [データストアのロケーション] リストから値を選択します。
    2. [データストア名] フィールドに名前を入力します。ID が生成されます。この ID は、データストアでグラウンディングされた回答を生成するときに使用します。詳細については、データストアでグラウンディングされた回答を生成するをご覧ください。
    3. [作成] をクリックします。

ドキュメント

  1. Google Cloud コンソールで [データストアの作成] ページを開きます。

  2. [Cloud Storage] ボックスで [選択] をクリックします。
    [Cloud Storage のデータをインポート] ペインが表示されます。

  3. [非構造化ドキュメント(PDF、HTML、TXT など)] セクションで、[非構造化ドキュメント(PDF、HTML、TXT など)] を選択します。

  4. [同期の頻度] オプションを選択します。

  5. [インポートするフォルダまたはファイルを選択します] オプションを選択し、フィールドにパスを入力します。

  6. [続行] をクリックします。
    [データストアの構成] ペインが表示されます。

  7. [データストアの構成] ペインで、

    1. [データストアのロケーション] リストから値を選択します。
    2. [データストア名] フィールドに名前を入力します。ID が生成されます。
    3. ドキュメントの解析とチャンキングのオプションを選択するには、[ドキュメント処理オプション] セクションを開きます。さまざまなパーサーの詳細については、ドキュメントを解析するをご覧ください。
    4. [作成] をクリックします。
  8. [作成] をクリックします。

データストアを使用して根拠のある回答を生成する

独自のデータでモデルをグラウンディングするには、次の手順で操作します。最大 10 個のデータストアがサポートされます。

データストア ID がわからない場合は、次の操作を行います。

  1. Google Cloud コンソールで、[AI Applications] ページに移動し、ナビゲーション メニューで [データストア] をクリックします。

    [データストア] ページに移動

  2. データストアの名前をクリックします。

  3. データストアの [データ] ページで、データストア ID を取得します。

コンソール

Google Cloud コンソールの Vertex AI Studio を使用してモデル出力を AI Applications にグラウンディングする手順は次のとおりです。

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

    [Vertex AI Studio] に移動

  2. グラウンディングを有効にする手順は次のとおりです。
    1. ナビゲーション メニューで [+ 新規]、[チャット] の順にクリックします。
    2. [モデル設定] ペインを開き、モデルを選択します。
    3. 省略可: [構造化出力] または [グラウンディング: Google] の切り替えボタンがオンになっている場合は、オフにします。
    4. [グラウンディング: データ] 切り替えボタンをクリックします。[根拠づけのカスタマイズ] ペインが表示されます。
      1. 次の表から、グラウンディング ソースのオプションを選択します。
      2. グラウンディング オプション 説明 入力
        RAG Engine お客様のデータと DIY コンポーネントを使用してグラウンディングします。 コーパスがない場合は、作成する必要があります。コーパスがある場合は、コーパスを入力します。
        エージェント検索 お客様のデータと Googleが管理する検索エンジンを使用してグラウンディングします。 [Gemini Enterprise Agent Platform データストアのパス] フィールドにパスを入力します。
        Elasticsearch Elasticsearch を使用してグラウンディングします。 次の情報を入力します。
        1. [Elasticsearch エンドポイント] フィールドに値を入力します。
        2. [Elasticsearch API キー] フィールドに値を入力します。
        3. [Elasticsearch インデックス] フィールドに値を入力します。
        4. [Elasticsearch 検索テンプレート] フィールドに値を入力します。
      3. [保存] をクリックします。
  3. テキスト ボックスにプロンプトを入力し、[送信] をクリックします。プロンプトの回答が AI Applications にグラウンディングされます。

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_ENTERPRISE=True

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

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

# Replace with your Agent Search data store details
DATASTORE_PATH = "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATASTORE_ID"

tool = Tool(
    retrieval=Retrieval(
        vertex_ai_search=VertexAISearch(
            datastore=DATASTORE_PATH
        )
    )
)

response = client.models.generate_content(
    model="gemini-2.5-flash",  # Or another supported model
    contents="What information can you find about topic X in the provided documents?", # Your query
    config=GenerateContentConfig(
        tools=[tool],
    ),
)

print(response.text)

REST

Agent Platform API を使用してテキスト プロンプトをテストするには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。

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

  • LOCATION: リクエストを処理するリージョン。global エンドポイントを使用するには、エンドポイント名からロケーションを除外し、リソースのロケーションを global に構成します。
  • PROJECT_ID: [プロジェクト ID](/resource-manager/docs/creating-managing-projects#identifiers)。.
  • MODEL_ID: マルチモーダル モデルのモデル ID。
  • PROMPT: モデルに送信するプロンプト。

HTTP メソッドと URL:

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

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

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "PROMPT"
    }]
  }],
  "tools": [{
    "retrieval": {
      "vertexAiSearch": {
        "datastore": projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATASTORE_ID
      }
    }
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

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

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

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "You can make an appointment on the website https://dmv.gov/"
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        "..."
      ],
      "groundingMetadata": {
        "retrievalQueries": [
          "How to make appointment to renew driving license?"
        ],
        "groundingChunks": [
          {
            "retrievedContext": {
              "uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AXiHM.....QTN92V5ePQ==",
              "title": "dmv"
            }
          }
        ],
        "groundingSupport": [
          {
            "segment": {
              "startIndex": 25,
              "endIndex": 147
            },
            "segment_text": "ipsum lorem ...",
            "supportChunkIndices": [1, 2],
            "confidenceScore": [0.9541752, 0.97726375]
          },
          {
            "segment": {
              "startIndex": 294,
              "endIndex": 439
            },
            "segment_text": "ipsum lorem ...",
            "supportChunkIndices": [1],
            "confidenceScore": [0.9541752, 0.9325467]
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "..."
  }
}

レスポンスを理解する

両方の API からのレスポンスには、LLM によって生成されたテキスト(候補)が含まれます。モデル プロンプトがデータソースに正常にグラウンディングされると、レスポンスにはグラウンディング メタデータが含まれます。このメタデータは、レスポンスのどの部分がデータから派生したかを識別します。ただし、このメタデータが提供されず、プロンプト レスポンスがグラウンディングされない場合もあります。その理由はいくつかあります。たとえば、ソースの関連性が低い、モデルのレスポンス内の情報が不完全である、などです。

出力データの内訳は次のとおりです。

  • ロール: グラウンディングされた回答の送信者。レスポンスには常にグラウンディングされたテキストが含まれるため、ロールは常に model になります。
  • テキスト: LLM によって生成されたグラウンディング済みの回答。
  • グラウンディング メタデータ: グラウンディング ソースに関する情報。次の要素が含まれます。
    • グラウンディング チャンク: 回答をサポートするインデックスの結果のリスト。
    • グラウンディング サポート: 引用を表示するために使用できる、回答内の特定の主張に関する情報。
    • セグメント: グラウンディング チャンクで裏付けられたモデルの回答の一部。
    • グラウンディング チャンクのインデックス: このクレームに対応するグラウンディング チャンク リスト内のグラウンディング チャンクのインデックス。
    • 信頼スコア: 主張が提供されたグラウンディング チャンクのセットにおいてどの程度根拠があるかを示す 0~1 の数値。Gemini 2.5 以降では利用できません。

次のステップ