データでグラウンディングする

このページでは、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 Applications を有効にする

  1. Google Cloud コンソールで、[AI アプリケーション] ページに移動します。

    AI アプリケーション

  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 アプリケーションにグラウンディングする手順は次のとおりです。

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

    [自由形式] に移動

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

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

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

プロンプトの回答が AI アプリケーションにグラウンディングされます。

Python

このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

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

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

# Load Data Store ID from Vertex AI Search
# datastore = "projects/111111111111/locations/global/collections/default_collection/dataStores/data-store-id"

response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents="How do I make an appointment to renew my driver's license?",
    config=GenerateContentConfig(
        tools=[
            # Use Vertex AI Search Tool
            Tool(
                retrieval=Retrieval(
                    vertex_ai_search=VertexAISearch(
                        datastore=datastore,
                    )
                )
            )
        ],
    ),
)

print(response.text)
# Example response:
# 'The process for making an appointment to renew your driver's license varies depending on your location. To provide you with the most accurate instructions...'

REST

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

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

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

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": "TEXT"
    }]
  }],
  "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 によって生成されたテキスト(候補)が含まれます。モデル プロンプトが Elasticsearch データソースに正常にグラウンディングされた場合、レスポンスにはグラウンディング メタデータが含まれます。これは、Elasticsearch データから取得されたレスポンスの部分を識別します。ただし、このメタデータが提供されず、プロンプト レスポンスがグラウンディングされない場合もあります。その理由はいくつかあります。たとえば、ソースの関連性が低い、モデルのレスポンス内の情報が不完全である、などです。

出力データの詳細は次のとおりです。

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

次のステップ