Gemini モデルのレスポンスの根拠づけを行う

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

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

この機能を使用する場合は、Google 検索のエントリ ポイントを表示する必要があります。要件について詳しくは、Google 検索のエントリ ポイントをご覧ください。

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

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

次のモデルはグラウンディングに対応しています。

  • Gemini 1.0 Pro

Google 検索でグラウンディングを使用する場合は、Temperature を 0.0 にすることをおすすめします。この設定の詳細については、モデル リファレンスの Gemini API リクエスト本文をご覧ください。

REST

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

  • LOCATION: リクエストを処理するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • MODEL_ID: マルチモーダル モデルのモデル ID。
  • MODEL: projects/acme/locations/us-central1/publishers/google/models/gemini-pro
  • ROLE: コンテンツに関連付けられた会話における役割。シングルターンのユースケースでも役割の指定が必要です。指定できる値は次のとおりです。 USER: ユーザーが送信するコンテンツを指定します。
  • TOOLS: グラウンディングに使用するリソース。Google 検索でグラウンディングするには googleSearchRetrieval を使用します。
  • TEXT: プロンプトに含める指示のテキスト。

HTTP メソッドと URL:

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

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

{
"contents": [{
  "role": "user",
  "parts": [{
    "text": TEXT
  }]
}],
"tools": [{
  "googleSearchRetrieval": {}
}],
"model": MODEL
}'

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

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

{
  "candidates":[
     {
        "content":{
           "role":"model",
           "parts":[
              {
                 "text":"Chicago's forecast: Today, March 1st, the weather is rainy, overcast, and chilly with highs in the low 50s. A jacket for the evenings is recommended, since the evenings will be closer to 30 degrees."
              }
           ]
        },
        "finishReason":"STOP",
        "safetyRatings":[
           "..."
        ],
        "groundingMetadata":{
           "webSearchQueries":[
              "What's the weather in Chicago this weekend and do I need to bring a coat?"
           ]
        }
     }
  ],
  "usageMetadata":{

  }
}

コンソール

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

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

    Vertex AI Studio に移動

  2. [マルチモーダル] タブをクリックします。
  3. [開く] をクリックして、シングル プロンプトの設計ページを表示します。
  4. サイドパネルで [詳細設定] をクリックして、詳細設定を表示します。
  5. [根拠づけを有効にする] トグルをクリックします。
  6. [カスタマイズ] をクリックし、Google 検索をソースとして設定します。
  7. テキスト ボックスにプロンプトを入力し、[送信] をクリックします。

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

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.preview.generative_models import grounding
from vertexai.generative_models import GenerationConfig, GenerativeModel, Tool

# Initialize Vertex AI
vertexai.init(project=project_id, location=location)

# Load the model
model = GenerativeModel(model_name="gemini-1.0-pro-002")

# Use Google Search for grounding
tool = Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())

prompt = "When is the next total solar eclipse in US?"
response = model.generate_content(
    prompt,
    tools=[tool],
    generation_config=GenerationConfig(
        temperature=0.0,
    ),
)

print(response)

レスポンスを理解する

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

引用

引用を表示することを強くおすすめします。ユーザーは、パブリッシャーからのレスポンスを検証し、さらに学習するための手段を追加できます。

Google 検索ソースからのレスポンスの引用は、インラインと集計の両方で表示する必要があります。次の画像は、この方法の例を示しています。

引用の例

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

お客様が Google 検索でグラウンディングする場合でも、お客様は、代替の検索エンジン オプションを提供すること、代替の検索オプションをお客様のアプリのデフォルト オプションにすること、またはお客様自身の検索候補や第三者の検索候補または検索結果をお客様のアプリに表示することはできます。ただし、Google 以外の検索サービスや関連する検索結果は、グラウンディングの検索結果や検索エントリ ポイントとは別に表示され、Google が提供する検索結果と混同されないようにする必要があります。

Gemini のレスポンスをグラウンディングする

このセクションでは、Vertex AI API を使用して、Gemini 1.0 Pro テキスト レスポンスを Vertex AI Search データストアでグラウンディングする方法について説明します。

次のモデルはグラウンディングに対応しています。

  • Gemini 1.0 Pro

Gemini 1.0 Pro をグラウンディングする前に、次の前提条件を満たす必要があります。

  1. Vertex AI Search を有効にして API を有効にする。
  2. Vertex AI Search のデータソースとアプリを作成する。
  3. Vertex AI Search でデータストアをアプリにリンクする。データソースは、Vertex AI で Gemini 1.0 Pro の根拠づけを行うための基盤として機能します。
  4. データストアで Enterprise エディションを有効にする。

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

Vertex AI Search を有効にする

  1. Google Cloud コンソールで、[検索と会話] ページに移動します。

    検索と会話

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

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

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

モデルをソースデータにグラウンディングするには、データを準備して Vertex AI Search に保存する必要があります。これを行うには、Vertex AI Search でデータストアを作成する必要があります。

ゼロから始める場合は、Vertex AI Search への取り込み用にデータを準備する必要があります。開始するには、取り込むデータを準備するをご覧ください。取り込みには、データのサイズに応じて、数分から数時間かかることがあります。グラウンディングでは、非構造化データストアのみサポートされています。

取り込むデータを準備したら、検索データストアを作成できます。データストアが正常に作成されたら、それに結びつける検索アプリを作成し、Enterprise エディションを有効にします。

Gemini 1.0 Pro モデルをグラウンディングする

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

  1. Google Cloud コンソールで [Vertex AI Search] ページに移動し、ナビゲーション メニューで [データストア] をクリックします。<a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="BU2UnTd/bvXw0I31NoHStFtigmNHgUGOXn/QVSGplOhB4J1rwNxdLslXsSNCBkPOFvWIDj0tv6yobddHSWXSow==" target="console" track-name="consoleLink" track-type="tasks" }="">[データストア] ページに移動</a{:>
  2. データストアの名前をクリックします。
  3. データストアの [データ] ページで、データストア ID を取得します。

REST

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

PROJECT_ID=PROJECT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"  http://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent -d '{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": TEXT
    }]
  }],
  "model": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro",
  "tools": [{
    "retrieval": {
      "vertexAiSearch": {
        "datastore": projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID
      }
    }
  }]
}

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai

from vertexai.preview.generative_models import grounding
from vertexai.generative_models import GenerationConfig, GenerativeModel, Tool

# Initialize Vertex AI
vertexai.init(project=project_id, location=location)

# Load the model
model = GenerativeModel(model_name="gemini-1.0-pro-002")

# Use Vertex AI Search data store
# Format: projects/{project_id}/locations/{location}/collections/default_collection/dataStores/{data_store_id}
tool = Tool.from_retrieval(
    grounding.Retrieval(grounding.VertexAISearch(datastore=data_store_path))
)

prompt = "How do I make an appointment to renew my driver's license?"
response = model.generate_content(
    prompt,
    tools=[tool],
    generation_config=GenerationConfig(
        temperature=0.0,
    ),
)

print(response)

コンソール

Google Cloud コンソールの Vertex AI Studio を使用してモデル出力を Vertex AI Search でグラウンディングするには、次の操作を行います。

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

    Vertex AI Studio に移動

  2. [言語] タブをクリックします。
  3. [テキスト プロンプト] をクリックして、シングル プロンプトの設計ページを表示します。
  4. サイドパネルで [詳細設定] をクリックして、詳細設定を表示します。
  5. [根拠づけを有効にする] をオンに切り替えて、グラウンディングを有効にします。
  6. [カスタマイズ] をクリックし、Vertex AI Search をソースとして設定します。パスは projects/project_id/locations/global/collections/default_collection/dataStores/data_store_id の形式にする必要があります。
  7. テキスト ボックスにプロンプトを入力し、[送信] をクリックします。

プロンプト レスポンスが Vertex AI Search にグラウンディングされるようになりました。

次のステップ