Gemini API と AI Studio の Google 検索によるグラウンディング機能を使用すると、モデルからの回答の精度と新しさを高めることができます。Google 検索によるグラウンディングが有効になっている場合、Gemini API は、回答のコンテンツとともに、より事実に基づく回答に加えて、グラウンディング ソース(インラインの補足リンク)と Google 検索の候補を返します。検索候補は、グラウンディングされた回答に対応する検索結果をユーザーに示します。
Google 検索によるグラウンディングでは、テキスト プロンプトのみがサポートされています。マルチモーダル(テキストと画像、テキストと音声など)のプロンプトはサポートされていません。Google 検索によるグラウンドングは、Gemini モデルで使用可能なすべての言語をサポートしています。
このガイドでは、いずれかの Gemini API SDK または REST API を使用して Google 検索でグラウンディングを始める方法について説明します。
Google 検索を使用するようにモデルを構成する
Google 検索によるグラウンディングが役立つ理由
生成 AI において、グラウンディングとは、モデルを検証可能な情報源に接続するプロセスを指します。これらのソースは、実際の職場の情報やその他の特定のコンテキストを提供する場合があります。グラウンディングは、AI 出力の精度、信頼性、有用性を高めるのに役立ちます。
グラウンディングは、ウェブからの最新情報を必要とするプロンプトでは特に重要です。グラウンディングを使用すると、モデルは知識のカットオフ日を超える情報にアクセスし、情報のソースを取得し、それ以外では正確に回答できなかった質問に回答できます。
Google AI Studio または Gemini API を使用して、モデルの出力を Google 検索にグラウンディングできます。Google 検索によるグラウンディングには次のような利点があります。
- 特定のコンテンツに関連付けられたモデルのレスポンスを許可します。
- モデルのハルシネーション(モデルが事実に基づいていないコンテンツを生成すること)を削減します。
- ユーザーがクリックして開くことができるソースにモデルのレスポンスをアンカーします。
- 生成されたコンテンツの信頼性と適用可能性が高まります。
Google 検索でグラウンディングを使用すると、モデルをインターネットの信頼できる検索結果に効果的に接続できます。グラウンディングのないモデルのレスポンスは学習したパターンに基づくため、時事に関するプロンプト(天気予報や最近のサッカーの試合の最終スコアなど)に対して事実に基づくレスポンスが返されない場合があります。インターネットでは新しい情報にアクセスできるため、グラウンディングを行ったプロンプトを使用すると、出典が明記された最新の回答を生成できます。
次に、グラウンディングのないレスポンスと、API を使用して生成されたグラウンディングされたレスポンスを比較した例を示します。(回答は 2024 年 10 月に生成されました)。
グランディングのない Gemini | Google 検索によるグラウンディング |
---|---|
プロンプト: 今年のスーパーボウルで優勝したのは? レスポンス: 今年(2023 年)のスーパーボウル LVII は、カンザスシティ チーフスが優勝しました。 |
プロンプト: 今年のスーパーボウルの優勝は? レスポンス: 今年のスーパーボウル チーフスは第 58 回スーパーボウルで優勝し、延長戦でサンフランシスコ 49ers を 25 対 22 で破りました。 |
根拠のないレスポンスでは、モデルはカンザスシティ チーフスの 2023 年のスーパーボウル優勝に言及しています。グラウンディングされたレスポンスでは、モデルは最近の 2024 年の勝利を正しく参照しています。
次の画像は、AI Studio で基盤となるレスポンスが表示される様子を示しています。
Google 検索候補
Google 検索でグラウンディングを使用するには、Google 検索の候補を表示する必要があります。これは、グラウンディングされたレスポンスのメタデータに含まれる候補クエリです。ディスプレイの要件について詳しくは、Google 検索候補を使用するをご覧ください。
動的取得
クエリによっては、Google 検索によるグラウンディングが他のクエリよりも効果的である可能性があります。動的取得機能を使用すると、Google 検索でグラウンディングを使用するタイミングをさらに細かく制御できます。
動的取得モードが指定されていない場合、Google 検索によるグラウンディングは常にトリガーされます。モードが動的に設定されている場合、モデルは構成可能なしきい値に基づいて、グラウンディングを使用するタイミングを決定します。しきい値は [0,1] の範囲の浮動小数点値で、デフォルトは 0.3 です。しきい値が 0 の場合、レスポンスは常に Google 検索が根拠になります。1 の場合、根拠はありません。
動的取得の仕組み
リクエストで動的取得を使用すると、Google 検索によるグラウンディングを有効にするタイミングを選択できます。これは、プロンプトが Google 検索に基づく回答を必要としておらず、モデルがグラウンディングなしで独自の知識に基づいて回答を提供できる場合に便利です。これにより、レイテンシ、品質、費用をより効果的に管理できます。
リクエストで動的取得構成を呼び出す前に、次の用語を理解してください。
予測スコア: グラウンディングされた回答をリクエストすると、Gemini はプロンプトに予測スコアを割り当てます。予測スコアは、[0,1] の範囲の浮動小数点値です。その価値は、プロンプトが Google 検索の最新情報に基づいて回答をグラウンディングできるかどうかによって異なります。したがって、ウェブ上の最新の事実に基づく回答が必要なプロンプトの場合、予測スコアが高くなります。モデルが生成した回答で十分であるプロンプトは、予測スコアが低くなります。
プロンプトとその予測スコアの例を次に示します。
プロンプト 予測スコア コメント 「牡丹の詩を書いて」 0.13 モデルはその知識を頼りにでき、回答にグラウンディングは必要ありません。 「2 歳の子供向けのおもちゃを教えて」 0.36 モデルは知識に依存でき、回答にグラウンディングは必要ありません。 「アジア風ワカモーレのレシピを教えて」 0.55 Google 検索はグラウンディングされた回答を提供できますが、グラウンディングは厳密には必須ではなく、モデルの知識で十分な場合もあります。 「Agent Builder とは何ですか?Agent Builder でのグラウンディングの課金はどのように行われますか。 0.72 Google 検索で、十分に根拠のある回答を生成する必要があります。 「前回の F1 グランプリで優勝したのは誰?」 0.97 根拠のある回答を生成するために Google 検索が必要。 しきい値: API リクエストで、しきい値を指定して動的取得構成を指定できます。しきい値は [0,1] の範囲の浮動小数点値で、デフォルトは 0.7 です。しきい値が 0 の場合、レスポンスは常に Google 検索でグラウンディングされます。しきい値の他の値には、次のことが適用されます。
- 予測スコアがしきい値以上の場合、回答は Google 検索に基づいています。しきい値が低いほど、Google 検索でグラウンディングを使用して生成されたレスポンスが含まれるプロンプトが増えます。
- 予測スコアがしきい値未満の場合、モデルは引き続き回答を生成することがありますが、Google 検索を根拠としません。
SDK または REST API を使用して動的取得のしきい値を設定する方法については、該当するコードサンプルをご覧ください。
AI Studio を使用している場合は、[根拠づけを編集] をクリックして、動的な取得しきい値を設定できます。
ビジネスニーズに合った適切なしきい値を見つけるには、想定されるクエリの代表的なセットを作成します。次に、レスポンスの予測スコアに基づいてクエリを並べ替え、ユースケースに適したしきい値を選択できます。
グラウンディングされた回答
プロンプトが Google 検索に正常にグラウンディングされた場合、レスポンスには groundingMetadata
が含まれます。接地されたレスポンスは次のようになります(簡潔にするため、レスポンスの一部は省略されています)。
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Carlos Alcaraz won the Gentlemen's Singles title at the 2024 Wimbledon Championships. He defeated Novak Djokovic in the final, winning his second consecutive Wimbledon title and fourth Grand Slam title overall. \n"
}
],
"role": "model"
},
...
"groundingMetadata": {
"searchEntryPoint": {
"renderedContent": "\u003cstyle\u003e\n.container {\n align-items: center;\n border-radius: 8px;\n display: flex;\n font-family: Google Sans, Roboto, sans-serif;\n font-size: 14px;\n line-height: 20px;\n padding: 8px 12px;\n}\n.chip {\n display: inline-block;\n border: solid 1px;\n border-radius: 16px;\n min-width: 14px;\n padding: 5px 16px;\n text-align: center;\n user-select: none;\n margin: 0 8px;\n -webkit-tap-highlight-color: transparent;\n}\n.carousel {\n overflow: auto;\n scrollbar-width: none;\n white-space: nowrap;\n margin-right: -12px;\n}\n.headline {\n display: flex;\n margin-right: 4px;\n}\n.gradient-container {\n position: relative;\n}\n.gradient {\n position: absolute;\n transform: translate(3px, -9px);\n height: 36px;\n width: 9px;\n}\n@media (prefers-color-scheme: light) {\n .container {\n background-color: #fafafa;\n box-shadow: 0 0 0 1px #0000000f;\n }\n .headline-label {\n color: #1f1f1f;\n }\n .chip {\n background-color: #ffffff;\n border-color: #d2d2d2;\n color: #5e5e5e;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #f2f2f2;\n }\n .chip:focus {\n background-color: #f2f2f2;\n }\n .chip:active {\n background-color: #d8d8d8;\n border-color: #b6b6b6;\n }\n .logo-dark {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #fafafa 15%, #fafafa00 100%);\n }\n}\n@media (prefers-color-scheme: dark) {\n .container {\n background-color: #1f1f1f;\n box-shadow: 0 0 0 1px #ffffff26;\n }\n .headline-label {\n color: #fff;\n }\n .chip {\n background-color: #2c2c2c;\n border-color: #3c4043;\n color: #fff;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #353536;\n }\n .chip:focus {\n background-color: #353536;\n }\n .chip:active {\n background-color: #464849;\n border-color: #53575b;\n }\n .logo-light {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #1f1f1f 15%, #1f1f1f00 100%);\n }\n}\n\u003c/style\u003e\n\u003cdiv class=\"container\"\u003e\n \u003cdiv class=\"headline\"\u003e\n \u003csvg class=\"logo-light\" width=\"18\" height=\"18\" viewBox=\"9 9 35 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M42.8622 27.0064C42.8622 25.7839 42.7525 24.6084 42.5487 23.4799H26.3109V30.1568H35.5897C35.1821 32.3041 33.9596 34.1222 32.1258 35.3448V39.6864H37.7213C40.9814 36.677 42.8622 32.2571 42.8622 27.0064V27.0064Z\" fill=\"#4285F4\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.3109 43.8555C30.9659 43.8555 34.8687 42.3195 37.7213 39.6863L32.1258 35.3447C30.5898 36.3792 28.6306 37.0061 26.3109 37.0061C21.8282 37.0061 18.0195 33.9811 16.6559 29.906H10.9194V34.3573C13.7563 39.9841 19.5712 43.8555 26.3109 43.8555V43.8555Z\" fill=\"#34A853\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.6559 29.8904C16.3111 28.8559 16.1074 27.7588 16.1074 26.6146C16.1074 25.4704 16.3111 24.3733 16.6559 23.3388V18.8875H10.9194C9.74388 21.2072 9.06992 23.8247 9.06992 26.6146C9.06992 29.4045 9.74388 32.022 10.9194 34.3417L15.3864 30.8621L16.6559 29.8904V29.8904Z\" fill=\"#FBBC05\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.3109 16.2386C28.85 16.2386 31.107 17.1164 32.9095 18.8091L37.8466 13.8719C34.853 11.082 30.9659 9.3736 26.3109 9.3736C19.5712 9.3736 13.7563 13.245 10.9194 18.8875L16.6559 23.3388C18.0195 19.2636 21.8282 16.2386 26.3109 16.2386V16.2386Z\" fill=\"#EA4335\"/\u003e\n \u003c/svg\u003e\n \u003csvg class=\"logo-dark\" width=\"18\" height=\"18\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003ccircle cx=\"24\" cy=\"23\" fill=\"#FFF\" r=\"22\"/\u003e\n \u003cpath d=\"M33.76 34.26c2.75-2.56 4.49-6.37 4.49-11.26 0-.89-.08-1.84-.29-3H24.01v5.99h8.03c-.4 2.02-1.5 3.56-3.07 4.56v.75l3.91 2.97h.88z\" fill=\"#4285F4\"/\u003e\n \u003cpath d=\"M15.58 25.77A8.845 8.845 0 0 0 24 31.86c1.92 0 3.62-.46 4.97-1.31l4.79 3.71C31.14 36.7 27.65 38 24 38c-5.93 0-11.01-3.4-13.45-8.36l.17-1.01 4.06-2.85h.8z\" fill=\"#34A853\"/\u003e\n \u003cpath d=\"M15.59 20.21a8.864 8.864 0 0 0 0 5.58l-5.03 3.86c-.98-2-1.53-4.25-1.53-6.64 0-2.39.55-4.64 1.53-6.64l1-.22 3.81 2.98.22 1.08z\" fill=\"#FBBC05\"/\u003e\n \u003cpath d=\"M24 14.14c2.11 0 4.02.75 5.52 1.98l4.36-4.36C31.22 9.43 27.81 8 24 8c-5.93 0-11.01 3.4-13.45 8.36l5.03 3.85A8.86 8.86 0 0 1 24 14.14z\" fill=\"#EA4335\"/\u003e\n \u003c/svg\u003e\n \u003cdiv class=\"gradient-container\"\u003e\u003cdiv class=\"gradient\"\u003e\u003c/div\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class=\"carousel\"\u003e\n \u003ca class=\"chip\" href=\"https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4x8Epe-gzpwRBvp7o3RZh2m1ygq1EHktn0OWCtvTXjad4bb1zSuqfJd6OEuZZ9_SXZ_P2SvCpJM7NaFfQfiZs6064MeqXego0vSbV9LlAZoxTdbxWK1hFeqTG6kA13YJf7Fbu1SqBYM0cFM4zo0G_sD9NKYWcOCQMvDLDEJFhjrC9DM_QobBIAMq-gWN95G5tvt6_z6EuPN8QY=\"\u003ewho won wimbledon 2024\u003c/a\u003e\n \u003c/div\u003e\n\u003c/div\u003e\n"
},
"groundingChunks": [
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4whET1ta3sDETZvcicd8FeNe4z0VuduVsxrT677KQRp2rYghXI0VpfYbIMVI3THcTuMwggRCbFXS_wVvW0UmGzMe9h2fyrkvsnQPJyikJasNIbjJLPX0StM4Bd694-ZVle56MmRA4YiUvwSqad1w6O2opmWnw==",
"title": "wikipedia.org"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4wR1M-9-yMPUr_KdHlnoAmQ8ZX90DtQ_vDYTjtP2oR5RH4tRP04uqKPLmesvo64BBkPeYLC2EpVDxv9ngO3S1fs2xh-e78fY4m0GAtgNlahUkm_tBm_sih5kFPc7ill9u2uwesNGUkwrQlmP2mfWNU5lMMr23HGktr6t0sV0QYlzQq7odVoBxYWlQ_sqWFH",
"title": "wikipedia.org"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4wsDmROzbP-tmt8GdwCW_pqISTZ4IRbBuoaMyaHfcQg8WW-yKRQQvMDTPAuLxJh-8_U8_iw_6JKFbQ8M9oVYtaFdWFK4gOtL4RrC9Jyqc5BNpuxp6uLEKgL5-9TggtNvO97PyCfziDFXPsxylwI1HcfQdrz3Jy7ZdOL4XM-S5rC0lF2S3VWW0IEAEtS7WX861meBYVjIuuF_mIr3spYPqWLhbAY2Spj-4_ba8DjRvmevIFUhRuESTKvBfmpxNSM",
"title": "cbssports.com"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4yzjLkorHiUKjhOPkWaZ9b4cO-cLG-02vlEl6xTBjMUjyhK04qSIclAa7heR41JQ6AAVXmNdS3WDrLOV4Wli-iezyzW8QPQ4vgnmO_egdsuxhcGk3-Fp8-yfqNLvgXFwY5mPo6QRhvplOFv0_x9mAcka18QuAXtj0SPvJfZhUEgYLCtCrucDS5XFc5HmRBcG1tqFdKSE1ihnp8KLdaWMhrUQI21hHS9",
"title": "jagranjosh.com"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4y9L4oeNGWCatFz63b9PpP3ys-Wi_zwnkUT5ji9lY7gPUJQcsmmE87q88GSdZqzcx5nZG9usot5FYk2yK-FAGvCRE6JsUQJB_W11_kJU2HVV1BTPiZ4SAgm8XDFIxpCZXnXmEx5HUfRqQm_zav7CvS2qjA2x3__qLME6Jy7R5oza1C5_aqjQu422le9CaigThS5bvJoMo-ZGcXdBUCj2CqoXNVjMA==",
"title": "apnews.com"
}
}
],
"groundingSupports": [
{
"segment": {
"endIndex": 85,
"text": "Carlos Alcaraz won the Gentlemen's Singles title at the 2024 Wimbledon Championships."
},
"groundingChunkIndices": [
0,
1,
2,
3
],
"confidenceScores": [
0.97380733,
0.97380733,
0.97380733,
0.97380733
]
},
{
"segment": {
"startIndex": 86,
"endIndex": 210,
"text": "He defeated Novak Djokovic in the final, winning his second consecutive Wimbledon title and fourth Grand Slam title overall."
},
"groundingChunkIndices": [
1,
0,
4
],
"confidenceScores": [
0.96145374,
0.96145374,
0.96145374
]
}
],
"webSearchQueries": [
"who won wimbledon 2024"
]
}
}
],
...
}
レスポンスに groundingMetadata
が含まれていない場合、レスポンスが正常に接地されていないことを意味します。たとえば、ソースの関連性が低い、モデルのレスポンス内の情報が不完全である、などです。
グラウンドド リザルトが生成されると、メタデータには、グラウンドド リザルトの生成に使用されたコンテンツのパブリッシャーにリダイレクトする URI が含まれます。次の簡略化された例のように、これらの URI には vertexaisearch
サブドメインが含まれています。https://vertexaisearch.cloud.google.com/grounding-api-redirect/...
メタデータには、ニュース メディアのドメインも含まれます。指定された URI には、グラウンドされた結果の生成後 30 日間アクセスできます。
searchEntryPoint
内の renderedContent
フィールドは、Google 検索候補を実装するために提供されているコードです。詳しくは、Google 検索候補を使用するをご覧ください。