Vertex AI Search によるグラウンディング

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

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

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

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

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

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

前提条件

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

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

    [IAM] に移動

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

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

詳細については、Vertex AI Search の概要をご覧ください。

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

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

    AI Applications

  2. 利用規約を読んで同意し、[続行して API を有効にする] をクリックします。

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 Freeform] ページに移動します。

    Freeform に移動

  2. グラウンディングを有効にするには、[Grounding: your data] 切り替えをクリックします。
  3. [カスタマイズ] をクリックします。
    1. [Vertex AI Search] をソースとして設定します。
    2. 次のパス形式を使用して、データストアのプロジェクト ID とデータストアの ID を置き換えます。

      projects/project_id/locations/global/collections/default_collection/dataStores/data_store_id

  4. [保存] をクリックします。
  5. テキスト ボックスにプロンプトを入力し、[送信] をクリックします。

プロンプトの回答が 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_VERTEXAI=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 Vertex AI Search data store details
DATA_STORE_PATH = "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID"

tool = Tool(
    retrieval=Retrieval(
        vertex_ai_search=VertexAISearch(
            data_store=DATA_STORE_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

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

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

  • LOCATION: リクエストを処理するリージョン。global エンドポイントを使用するには、エンドポイント名からロケーションを除外し、リソースのロケーションを global に構成します。
  • PROJECT_ID: 実際のプロジェクト ID
  • 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/DATA_STORE_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 以降では利用できません。

次のステップ