Exa は、大規模言語モデルのレスポンスのグラウンディング用に最適化された、一般公開されているウェブデータにアクセスできる検索 API を提供します。このページでは、Exa を使用して Gemini の回答をグラウンディングする方法について説明します。
Gemini Enterprise Agent Platform での Exa ウェブ検索によるグラウンディングは、Gemini モデルを Exa の検索 API によって提供される一般公開のウェブデータに接続する別のサービス( Cloud de Confiance by S3NS 契約で定義)です。
ユースケース
Exa を使用したグラウンディングにより、モデルが最新の関連性の高いウェブデータにアクセスできるようになり、精度が向上し、ハルシネーションが減少します。一般的なユースケースには次のものがあります。
- 一般的なエージェントと chatbot: 最新の情報を取得して、より信頼性の高い回答を生成します。
- リサーチ エージェント: 複数のソースを横断して、ディープウェブの詳細なリサーチを行います。
- コーディング エージェント: 最新のコード スニペット、ドキュメント、技術リファレンスを取得します。
- 音声エージェント: リアルタイムで低レイテンシの音声インタラクションをサポートするウェブ検索。
- 業種別エージェント: 特定の業界や知識分野に合わせた、分野固有の最新情報を取得します。
- データ拡充: 最新のウェブ コンテキストとメタデータを使用して、内部データセットを拡充します。
- 自動化されたワークフロー: ニュース、人物、企業、その他の頻繁に更新されるデータを、社内ワークフローまたは本番環境ワークフロー用に定期的に収集します。
例
2026 年のスーパーボウルで優勝したのは?
| グラウンディングを使用しない場合 | グラウンディングを使用する場合 |
|---|---|
| スーパーボウル 2026 はまだ開催されていないため、優勝チームをお知らせすることはできません。 | 2026 年 2 月 8 日に開催された第 60 回スーパーボウルでは、シアトル シーホークスがニューイングランド ペイトリオッツを 29 対 13 で破り、優勝しました。 ソース: domain1.com、domain2.com、... |
サポートされているモデル
このセクションでは、Exa ウェブ検索によるグラウンディングをサポートするモデルを示します。
クリックしてサポートされているモデルを開く
始める前に
Exa でのグラウンディングを使用するには、Exa のウェブサイトから API キーを取得する必要があります。この API キーは、Gemini へのリクエストで使用されます。
Exa で Gemini の回答をグラウンディングする
Google Gen AI SDK または REST API を使用して、Gemini からグラウンディングされた回答をリクエストします。最適なパフォーマンスを得るには、デフォルト以外の値を厳密に必要とする場合を除き、省略可能なパラメータのデフォルト設定を使用することをおすすめします。
サンプルを実行する前に、Exa API キーの取得など、前提条件を満たしてください。
Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Google 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
サンプルを実行する前に、次のように置き換えます。
- MODEL_ID: 使用するサポートされているモデルの ID(
gemini-2.5-flashなど)。 - TEXT: モデルに送信するテキスト プロンプト。
- API_KEY: Exa ウェブ検索の API キー。
- SEARCH_TYPE: 省略可。実行する Exa 検索のタイプ。サポートされる値は
fastとinstantです。デフォルトはfastです。これにより、レイテンシが短縮され、ユーザー向けの検索やインタラクティブ ワークフローに適した包括的な結果が得られます。instantは、チャット、音声エージェント、予測入力など、レイテンシが最小限に抑えられている必要があるエクスペリエンスに使用します。検索深度よりも速度を優先することで、レスポンス時間を最小限に抑えます。 - EXCLUDE_DOMAINS: 省略可。検索結果から除外するドメインのリスト。指定した場合、これらのドメインからは結果が返されません。複数のドメインを除外するには、各ドメインをリスト内の引用符付きの文字列として個別に追加します(例:
["example.com", "example.net"])。指定できるドメインは最大 1,200 個です。 - INCLUDE_DOMAINS: 省略可。検索に含めるドメインのリスト。指定すると、これらのドメインの結果のみが返されます。複数のドメインを含めるには、各ドメインをリスト内の別々の引用符付き文字列として追加します(例:
["example.com", "example.net"])。指定できるドメインは最大 1,200 個です。 - MAX_CHARACTERS: 省略可。ハイライトに返す最大文字数。URL ごとに返されるハイライト テキストの合計長を制御します。
- NUM_RESULTS: 省略可。グラウンディングに使用する検索結果の最大数。指定しない場合、デフォルトで
5になります。
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="MODEL_ID",
contents="TEXT",
config=types.GenerateContentConfig(
tools=[
types.Tool(
exa_ai_search=types.ToolExaAiSearch(
# Required. Your API key for Exa web search.
api_key="API_KEY",
# Optional. Customize the search. Click a placeholder to
# enter a value, or remove the line to accept the default.
custom_configs={
"type": "SEARCH_TYPE",
"excludeDomains": ["EXCLUDE_DOMAINS"],
"includeDomains": ["INCLUDE_DOMAINS"],
"contents": {
"highlights": {
"maxCharacters": MAX_CHARACTERS,
},
},
"numResults": NUM_RESULTS,
},
)
)
],
),
)
print(response.text)
# The grounding metadata contains the web sources used to ground the response.
print(response.candidates[0].grounding_metadata.grounding_chunks)
Java
Java をインストールまたは更新する方法について学びます。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Google 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
サンプルを実行する前に、次のように置き換えます。
- MODEL_ID: 使用するサポートされているモデルの ID(
gemini-2.5-flashなど)。 - TEXT: モデルに送信するテキスト プロンプト。
- API_KEY: Exa ウェブ検索の API キー。
- SEARCH_TYPE: 省略可。実行する Exa 検索のタイプ。サポートされる値は
fastとinstantです。デフォルトはfastです。これにより、レイテンシが短縮され、ユーザー向けの検索やインタラクティブ ワークフローに適した包括的な結果が得られます。instantは、チャット、音声エージェント、予測入力など、レイテンシが最小限に抑えられている必要があるエクスペリエンスに使用します。検索深度よりも速度を優先することで、レスポンス時間を最小限に抑えます。 - EXCLUDE_DOMAINS: 省略可。検索結果から除外するドメインのリスト。指定した場合、これらのドメインからは結果が返されません。複数のドメインを除外するには、各ドメインをリスト内の引用符付きの文字列として個別に追加します(例:
["example.com", "example.net"])。指定できるドメインは最大 1,200 個です。 - INCLUDE_DOMAINS: 省略可。検索に含めるドメインのリスト。指定すると、これらのドメインの結果のみが返されます。複数のドメインを含めるには、各ドメインをリスト内の別々の引用符付き文字列として追加します(例:
["example.com", "example.net"])。指定できるドメインは最大 1,200 個です。 - MAX_CHARACTERS: 省略可。ハイライトに返す最大文字数。URL ごとに返されるハイライト テキストの合計長を制御します。
- NUM_RESULTS: 省略可。グラウンディングに使用する検索結果の最大数。指定しない場合、デフォルトで
5になります。
import com.google.genai.Client;
import com.google.genai.types.GenerateContentConfig;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Tool;
import com.google.genai.types.ToolExaAiSearch;
import java.util.List;
import java.util.Map;
public class ExaGroundingSample {
public static void main(String[] args) {
try (Client client = Client.builder().build()) {
GenerateContentConfig config =
GenerateContentConfig.builder()
.tools(
Tool.builder()
.exaAiSearch(
ToolExaAiSearch.builder()
// Required. Your API key for Exa web search.
.apiKey("API_KEY")
// Optional. Customize the search. Click a
// placeholder to enter a value, or remove the
// entry to accept the default.
.customConfigs(
Map.of(
"type", "SEARCH_TYPE",
"excludeDomains",
List.of("EXCLUDE_DOMAINS"),
"includeDomains",
List.of("INCLUDE_DOMAINS"),
"contents",
Map.of(
"highlights",
Map.of(
"maxCharacters",
MAX_CHARACTERS)),
"numResults", NUM_RESULTS))
.build())
.build())
.build();
GenerateContentResponse response =
client.models.generateContent(
"MODEL_ID", "TEXT", config);
System.out.println(response.text());
// The grounding metadata contains the web sources used to ground the response.
System.out.println(
response.candidates().get().get(0).groundingMetadata().get().groundingChunks().get());
}
}
}
Node.js
インストール
npm install @google/genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Google 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
サンプルを実行する前に、次のように置き換えます。
- MODEL_ID: 使用するサポートされているモデルの ID(
gemini-2.5-flashなど)。 - TEXT: モデルに送信するテキスト プロンプト。
- API_KEY: Exa ウェブ検索の API キー。
- SEARCH_TYPE: 省略可。実行する Exa 検索のタイプ。サポートされる値は
fastとinstantです。デフォルトはfastです。これにより、レイテンシが短縮され、ユーザー向けの検索やインタラクティブ ワークフローに適した包括的な結果が得られます。instantは、チャット、音声エージェント、予測入力など、レイテンシが最小限に抑えられている必要があるエクスペリエンスに使用します。検索深度よりも速度を優先することで、レスポンス時間を最小限に抑えます。 - EXCLUDE_DOMAINS: 省略可。検索結果から除外するドメインのリスト。指定した場合、これらのドメインからは結果が返されません。複数のドメインを除外するには、各ドメインをリスト内の引用符付きの文字列として個別に追加します(例:
["example.com", "example.net"])。指定できるドメインは最大 1,200 個です。 - INCLUDE_DOMAINS: 省略可。検索に含めるドメインのリスト。指定すると、これらのドメインの結果のみが返されます。複数のドメインを含めるには、各ドメインをリスト内の別々の引用符付き文字列として追加します(例:
["example.com", "example.net"])。指定できるドメインは最大 1,200 個です。 - MAX_CHARACTERS: 省略可。ハイライトに返す最大文字数。URL ごとに返されるハイライト テキストの合計長を制御します。
- NUM_RESULTS: 省略可。グラウンディングに使用する検索結果の最大数。指定しない場合、デフォルトで
5になります。
import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({});
const response = await ai.models.generateContent({
model: 'MODEL_ID',
contents: 'TEXT',
config: {
tools: [
{
exaAiSearch: {
// Required. Your API key for Exa web search.
apiKey: 'API_KEY',
// Optional. Customize the search. Click a placeholder to enter a
// value, or remove the line to accept the default.
customConfigs: {
type: 'SEARCH_TYPE',
excludeDomains: ['EXCLUDE_DOMAINS'],
includeDomains: ['INCLUDE_DOMAINS'],
contents: {
highlights: {
maxCharacters: MAX_CHARACTERS,
},
},
numResults: NUM_RESULTS,
},
},
},
],
},
});
console.log(response.text);
// The grounding metadata contains the web sources used to ground the response.
console.log(response.candidates[0].groundingMetadata.groundingChunks);
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: リクエストを処理するリージョン。グローバル エンドポイントを使用するには、エンドポイント名からロケーションを除外し、リソースのロケーションを `global` に構成します。
- PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID。
- MODEL_ID: 使用するモデルの ID。
- TEXT: モデルに送信するテキスト プロンプト。
- API_KEY: Exa ウェブ検索の API キー。
- SEARCH_TYPE: 省略可。実行する Exa 検索のタイプ。サポートされる値は
fastとinstantです。デフォルトはfastです。これは、レイテンシを短縮して包括的な結果を提供し、ユーザー向けの検索やインタラクティブなワークフローに適しています。instantは、チャット、音声エージェント、予測入力など、レイテンシが最小限に抑えられたエクスペリエンスに使用します。検索深度よりも速度を優先することで、応答時間を最小限に抑えます。 - EXCLUDE_DOMAINS: 省略可。検索結果から除外するドメインのリスト。指定すると、これらのドメインから結果は返されません。最大 1,200 個のドメインを指定できます。
- INCLUDE_DOMAINS: 省略可。検索に含めるドメインのリスト。指定した場合、結果はこれらのドメインからのみ取得されます。最大 1,200 個のドメインを指定できます。
- MAX_CHARACTERS: 省略可。ハイライトで返す最大文字数。URL ごとに返されるハイライト テキストの合計長を制御します。
- NUM_RESULTS: 省略可。グラウンディングに使用する検索結果の最大数。指定しない場合、デフォルトで
5になります。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
リクエストの本文(JSON):
{
"contents": [{
"role": "user",
"parts": [{
"text": "TEXT"
}]
}],
"tools": [{
"exaAiSearch": {
"api_key": "API_KEY",
"customConfigs": {
"type": "SEARCH_TYPE",
"excludeDomains": ["EXCLUDE_DOMAINS"],
"includeDomains": ["INCLUDE_DOMAINS"],
"contents": {
"highlights": {
"maxCharacters": MAX_CHARACTERS
}
},
"numResults": NUM_RESULTS
}
}
}],
"model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
割り当て
デフォルトの割り当ては、1 分あたり 200 件のプロンプトです。レート上限を引き上げる必要がある場合は、ユースケースと要件を添えて support@exa.ai と Google アカウント チームにお問い合わせください。
課金
Exa を使用したグラウンディングには、次の料金が発生します。
- Gemini トークンの消費量: プロンプト トークン、思考トークン、出力トークン。詳細は、料金をご覧ください。
- Gemini のデータによるグラウンディング: 詳細については、料金をご覧ください。
- Exa の検索 API の使用料金: 詳細については、Exa の料金ページをご覧ください。