---
title: "ブライトデータのウェブ検索をVertex AIパイプラインに統合する"
slug: vertex-ai-with-serp-api
date: 2025-11-02T11:42:14+00:00
modified: 2025-11-04T08:42:38+00:00
permalink: https://brightdata.jp/blog/ai/vertex-ai-with-serp-api
type: blog
---

[ ブログ ](https://brightdata.jp/blog "ブログ") / [AI](https://brightdata.jp/blog/ai)







 [AI](https://brightdata.jp/blog/ai)

# ブライトデータのウェブ検索をVertex AIパイプラインに統合する

Bright Data の SERP API を使用して Google Vertex AI でスケーラブルなファクトチェックパイプラインを構築し、リアルタイムで信頼性の高いウェブ検索コンテキストを実現する方法をご覧ください。

 6 分読





 [ ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg) ](https://brightdata.com/blog/authors/antonello-zanini)

 [Antonello Zanini

Technical Writer

 ](https://brightdata.com/blog/authors/antonello-zanini)





 ![Bright Data Web Search with Vertex AI Pipelines blog image](https://media.brightdata.jp/2025/11/Bright-Data-Web-Search-with-Vertex-AI-Pipelines-blog-image.png)





この記事では、次のことを学びます：

- Vertex AIパイプラインとは何か。
- Bright Data SERP APIをパイプラインに統合してファクトチェックを行う理由。
- 最新のウェブ検索コンテキストを取得するためにBright Data SERP APIを使用してVertex AIでファクトチェックパイプラインを構築する方法。

さっそく見てみよう！

## Vertex AIパイプラインとは？

[Vertex AI Pipelinesは](https://cloud.google.com/vertex-ai/docs/pipelines/introduction)Google Cloud上のマネージドサービスで、エンドツーエンドの機械学習ワークフローを自動化、オーケストレーション、再現します。

このサービスは、データ処理、トレーニング、デプロイなどの複雑なMLプロセスを、追跡、バージョン管理、サーバーレス環境での実行が可能な一連のモジュラーコンポーネントに分解することを可能にします。

つまり、Vertex AI PipelinesはMLOpsのライフサイクルを簡素化し、反復可能でスケーラブルなMLシステムの構築を容易にします。

## Vertex AIでファクトチェックパイプラインを構築する：その理由と方法

LLMは確かに強力だが、[その知識は静的だ](/blog/ウェブデータ/train-an-ai-model)。そのため、2024年に訓練されたLLMは、昨日の株式市場の動きや昨夜のスポーツの結果などを全く認識していない。これは「陳腐な」あるいは「幻覚のような」返答につながる。

これに対処するには、インターネットからの最新データをLLMに「根拠づける」システムを構築すればよい。LLMが応答を生成する前に、外部情報を与え、その出力が現在の事実に基づいていることを確認する。それがRAG[（検索-補強型生成](/blog/ウェブデータ/rag-explained)）である！

現在、[Geminiは、](https://ai.google.dev/gemini-api/docs/google-search)GeminiモデルをGoogle検索に接続するための[接地ツールを提供している](https://ai.google.dev/gemini-api/docs/google-search)。しかし、このツールは本番環境には対応しておらず、スケーラビリティに問題があり、また、グラウンディングデータのソースを完全にコントロールすることはできません。[GEO/SEOコンテンツ最適化エージェントで](/blog/ai/geo-and-seo-ai-agent)、このツールの動作をご覧ください。

より専門的で柔軟な代替手段は、[**Bright DataのSERP API**](/products/serp-api)です。このAPIは、検索エンジンの検索クエリをプログラムで実行し、完全なSERPコンテンツを取得することができます。言い換えれば、LLMのワークフローに統合できる、新鮮で検証可能なコンテンツの信頼できるソースを提供します。[ドキュメントを読んで](https://docs.brightdata.com/scraping-automation/serp-api/introduction)、SERPが提供するすべてを発見してください。

例えば、SERP API を事実確認パイプラインの一部として Vertex AI Pipelines に統合することができます。これは3つのステップで構成されます：

1. **クエリを抽出する**：LLMが入力テキストを読み、主な事実主張を特定し、Google検索可能なクエリに変換する。
2. **ウェブ検索コンテキストの取得**：このコンポーネントはこれらのクエリを受け取り、Bright Data SERP APIを呼び出してリアルタイムの検索結果を取得する。
3. **ファクトチェック**：LLMの最後のステップは、原文と検索された検索コンテキストを取り込み、ファクトチェックレポートを作成します。

**注**：これは、[データ/MLパイプラインにおけるSERP APIの](/ai/web-access)可能な[使用例の](/ai/web-access)一つに過ぎません。

## Bright Data のウェブ検索用の SERP API を Vertex AI パイプラインに統合する方法

このセクションでは、Vertex AIパイプラインにファクトチェックパイプラインを実装するために必要な各ステップを説明します。これはBright DataのSERP APIに依存し、APIは事実に基づいたウェブ検索のコンテキストを取得するために使用されます。

事実確認は、Vertex AIパイプラインノードでSERP APIを利用できる多くのユースケース（ニュース発見、コンテンツ要約、トレンド分析、調査支援など）の一つに過ぎないことを忘れないでください。したがって、この実装を他の多くのシナリオに簡単に適応させることができます。

以下の手順に従ってください！

### 前提条件

このチュートリアルのセクションに従うには、以下を確認してください：

- [Google Cloud Console](https://console.cloud.google.com/)アカウント。
- 有効な API キーを持つ[Bright Data アカウント](/?hs_signup=1)（管理者権限があることが理想的です）。

[API キーの取得方法については](https://docs.brightdata.com/api-reference/authentication#how-do-i-generate-a-new-api-key%3F)、Bright Data の公式ガイドに従ってください。すぐに必要になるので、安全な場所に保管してください。

### ステップ #1: 新しい Google Cloud プロジェクトの作成と設定

Google Cloud Console にログインし、[新しいプロジェクトを作成](https://developers.google.com/workspace/guides/create-project)します。また、[課金が有効になっていることを確認します](https://cloud.google.com/billing/docs/how-to/modify-project)（無料トライアルを使用しても問題ありません）。

この例では、Google Cloud プロジェクトを “Bright Data SERP API Pipeline” と呼び、プロジェクト ID を`bright-data-pipeline` とします：

![Creating a new Google Cloud project](https://media.brightdata.com/2025/11/image-1024x316.png)プロジェクトが作成されたら、それを選択して作業を開始します。このようなビューが表示されます：

![Your Google Cloud project’s dashboard](https://media.brightdata.com/2025/11/image-1-1024x539.png)このページでは、プロジェクト名、プロジェクト番号、プロジェクトIDを確認できます。プロジェクト番号と ID はこのチュートリアルで必要になるので、メモして安全な場所に保管してください。

Google Cloudプロジェクトの準備ができたので、次のステップは必要なAPIを有効にすることです。検索バーに「API &amp; Services」と入力してページに到達し、「Enable APIs and services」ボタンをクリックします：

![Pressing the “Enable APIs and services” button](https://media.brightdata.com/2025/11/image-2-1024x193.png)以下のAPIを検索し、有効化する：

- “[Vertex AI API](https://cloud.google.com/vertex-ai/docs/reference/rest)“
- “[Notebooks API](https://cloud.google.com/vertex-ai/docs/workbench/reference/rest)“

これら2つのAPIは、Vertex AI[Workbenchで](https://cloud.google.com/vertex-ai-notebooks?hl=en)Vertex AIを使用し開発するために必要です。

**注意**：パイプラインは他のいくつかのAPIにも依存しており、通常はデフォルトで有効になっています。問題が発生した場合は、これらも有効になっていることを確認してください：

- “Cloud Resource Manager API” (クラウドリソースマネージャAPI)
- “Cloud Storage API” (クラウドストレージAPI)
- “Service Usage API” (サービス利用API)
- “Compute Engine API” (コンピュートエンジンAPI)
- “ジェミニ for Google Cloud API”
- “Cloud Logging API”

無効になっているものがあれば、手動で有効にしてから続行してください。

完了です！これでGoogle Cloudプロジェクトができました。

### ステップ #2: クラウドストレージバケットのセットアップ

Vertex AI Pipelinesを実行するには、Cloud Storageバケットが必要です。Vertex AIは、[パイプライン](https://www.kubeflow.org/docs/components/pipelines/user-guides/data-handling/artifacts/)実行中に生成された中間データ、モデルファイル、ログ、メタデータなどの[パイプライン成果物を](https://www.kubeflow.org/docs/components/pipelines/user-guides/data-handling/artifacts/)保存する必要があるからです。つまり、設定されたバケットは、パイプラインコンポーネントがデータを読み書きするワークスペースとして機能する。

バケットを作成するには、Google Cloud Console で “Cloud Storage” を検索します。最初の結果を開き、左側のメニューから “Buckets” を選択し、”Create” ボタンを押す：

![Locating and clicking the “Create” button](https://media.brightdata.com/2025/11/image-3-1024x546.png)バケット作成フォームで

- `bright-data-pipeline-artifactsの`ように、グローバルにユニークな名前をつける。
- 場所の種類と地域を選択します。簡単のために、”us (アメリカ合衆国の複数の地域)” を選択することをお勧めします。

作成したら、バケット名をメモしておきましょう。後でパイプラインの設定で必要になるからです。このように表示されるはずです：

![Your Google Cloud Storage bucket page](https://media.brightdata.com/2025/11/image-4-1024x545.png)この場合、バケット名は

```none
bright-data-pipeline-artifacts です。
```

バケットURIは

```none
gs://bright-data-pipeline-artifacts です。
```

us” マルチリージョンを選択したので、サポートされている`us-*`リージョンであればどこからでもこのバケツにアクセスできます。これには、`us-central1`、`us-east1`、…、`us-west1`…などが含まれます。`us-central1` を設定することを推奨します。

次に、Vertex AI にバケット内のデータの読み書き権限を与える必要があります。バケット名をクリックして詳細ページを開き、”Permissions” タブを開きます：
![](https://paper-attachments.dropboxusercontent.com/s_E7D7175BB246CD9E753273561527119342123ECB9D70AE5F23FFB2C1FA2DD5AB_1761140149303_image.png)
アクセス許可(Grant access) “ボタンをクリックし、以下のように新しいアクセス許可ルールを追加します：

![Permission rules](https://media.brightdata.com/2025/11/image-5-1024x241.png)- **Principal**:`<YOUR_GC_PROJECT_NUMBER><a class="__cf_email__" data-cfemail="e3ce808c8e93969786a3878695868f8c938691cd84908691958a80868280808c968d97cd808c8e" href="/cdn-cgi/l/email-protection">[email protected]</a>`
- **役割** `ストレージ管理者`

(重要：重要：本番環境では、必要最小限のロールのみを割り当ててください。完全な “Storage Admin “アクセス権を使用するのは、このセットアップを簡単にするためです)。

![Giving the “Storage Admin” role to the Compute Engine service](https://media.brightdata.com/2025/11/image-6-1024x303.png)Save “をクリックして、新しいロールを確認します。これにより、プロジェクトの[Compute Engine](https://cloud.google.com/products/compute?hl=en)サービスに、Cloud Storageバケット内のオブジェクトにアクセスし、管理する権限が付与されます。

この権限がないと、Vertex AIパイプラインは実行中にデータを読み書きできず、以下のような[`403 Forbidden`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/403)エラーが発生します：

```none
google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/storage/v1/b/bright-data-pipeline-artifacts?fields=name&prettyPrint=false: <YOUR_GC_PROJECT_NUMBER><a class="__cf_email__" data-cfemail="3f125c50524f4a4b5a7f5b5a495a53504f5a4d11584c5a4d49565c5a5e5c5c504a514b115c5052" href="/cdn-cgi/l/email-protection">[email protected]</a> does not have storage.buckets.get access to the Google Cloud Storage bucket.リソースに対するパーミッション 'storage.buckets.get' が拒否されました (または存在しない可能性があります)。
```

すごい！Google Cloud Storageバケットを設定しました。

### ステップ3: IAM パーミッションの設定

Cloud Storageバケットと同様に、プロジェクトのCompute Engineサービスアカウントに適切なIAMパーミッションを与える必要があります。

このパーミッションによって、Vertex AIがあなたの代わりにパイプラインジョブを作成・管理できるようになります。この権限がないと、パイプラインはGoogle Cloudプロジェクト内で起動したり実行を制御したりする権限を持たない。

設定するには、Google Cloud Console で “IAM &amp; Admin” を検索し、ページを開きます。
Grant access “ボタンをクリックし、Compute Engineのデフォルトのサービスアカウント(`<YOUR_GC_PROJECT_NUMBER><a class="__cf_email__" data-cfemail="9bb6f8f4f6ebeeeffedbfffeedfef7f4ebfee9b5fce8fee9edf2f8fefaf8f8f4eef5efb5f8f4f6" href="/cdn-cgi/l/email-protection">[email protected]</a>)`に以下の2つのロールを追加します：

- “サービスアカウントユーザー”
- “Vertex AIユーザー”

![Giving the Compute Engine service account the right IAM roles](https://media.brightdata.com/2025/11/image-7-1024x388.png)ロールを割り当てたら、”Save “ボタンを押します。こうすることで、Vertex AIパイプラインがプロジェクトのコンピュートリソースを使用し、マネージドワークロードを実行できるようになります。

要するに、Vertex AIパイプラインがプロジェクトのコンピュートサービスアカウントの代理として動作する権限があることをGoogle Cloudに伝えます。これらの権限がないと、パイプラインジョブを起動しようとしたときに、以下のような`403 Forbidden`エラーが発生します：

```none
403 POST https://us-central1-aiplatform.googleapis.com/v1/projects/bright-data-pipeline/locations/us-central1/pipelineJobs?pipelineJobId=XXXXXXXXXXXXXXXXXXXXXXX&%24alt=json%3Benum-encoding%3Dint：リソース'//aiplatform.googleapis.com/projects/bright-data-pipeline/locations/us-central1'(または存在しないかもしれません)で'aiplatform.pipelineJobs.create'パーミッションが拒否されました：'IAM_PERMISSION_DENIED', 'domain': 'aiplatform.googleapis.com', 'metadata': {'resource': 'projects/bright-data-pipeline/locations/us-central1', 'permission': 'aiplatform.pipelineJobs.create'}}]。
```

すべての設定が完了しました！これでIAMが設定され、Vertex AIパイプラインの実行準備が整いました。

### ステップ #4: Vertex AI Workbenchを使い始める

開発を簡素化するため、Vertex AIパイプラインをクラウド上で直接構築します。

具体的には、Google CloudのVertex AIプラットフォーム内で完全に管理されたJupyterLabベースの開発環境であるVertex AI Workbenchを使用します。これは、プロトタイピングからモデルのデプロイまで、データサイエンスのワークフロー全体をサポートするように構築されています。

**注**： Vertex AI Workbenchが機能するためには、このAPIが必要なので、先に進む前に、”Notebooks API “が有効になっていることを確認してください。

Vertex AI Workbenchにアクセスするには、Google Cloud Consoleで “Vertex AI Workbench “を検索し、ページを開く。次に、”Instances “タブで “Create New “をクリックし、新しいインスタンスを起動する：

![Pressing the “Create New” button](https://media.brightdata.com/2025/11/image-8-1024x546.png)**注**：Vertex AI Workbenchは新しいインスタンスで[Jupyter 4を](https://blog.jupyter.org/jupyterlab-4-0-is-here-388d05e03442?gi=277981c5d3a2)サポートしていますが、現在すべての環境でJupyterLab 3がデフォルトで使用されています。このバージョンには、最新のNVIDIA GPUとIntelのライブラリとドライバがプリインストールされています。従って、このチュートリアルでは、JupyterLab 3を使うことにする。

インスタンス作成フォームでは、デフォルトのマシンタイプ（`n1-standard-4`）を含め、デフォルトの設定値のままにしておきます。このガイドでは、このマシンで十分です。

Create “をクリックし、インスタンスのプロビジョニングと起動に数分かかることに留意してください。インスタンスの準備ができたら、”Instances “テーブルに新しいエントリーができ、”Open JupyterLab “というリンクが表示される。それをクリックする：

![Following the “Open JupyterLab” link](https://media.brightdata.com/2025/11/image-9-1024x371.png)Google CloudでホストされているクラウドベースのJupyterLab環境にリダイレクトされます：

![The “Vertex AI Workbench” environment](https://media.brightdata.com/2025/11/image-10-1024x546.png)ここで、”Notebook “の下にある “Python 3 (ipykernel) “をクリックして、新しいノートブックを作成します。このノートブックは、Bright Dataと統合されたVertex AIパイプラインを記述し、テストするための開発環境となります：

![Your new notebook](https://media.brightdata.com/2025/11/image-11-1024x548.png)ファンタスティックこれで、Vertex AIデータパイプラインのロジックのコーディングと構築を開始する準備が整いました。

### ステップ #5: 必要な Python ライブラリのインストールと初期化

ノートブックに以下のセルを追加して実行し、このプロジェクトに必要なすべてのPythonライブラリをインストールすることから始めます：

```none
pip install kfp google-cloud-aiplatform google-genai brightdata-sdk --quiet --upgrade
```

これには数分かかるかもしれないので、環境がすべてをセットアップするまで辛抱してほしい。

各ライブラリが何をするのか、なぜ必要なのかを説明する：

- [`kfp`](https://pypi.org/project/kfp/)：これはKubeflow Pipelines SDKで、Pythonでプログラム的に機械学習パイプラインを定義、コンパイル、実行できる。パイプラインコンポーネントを作成するためのデコレーターとクラスが付属しています。
- [`google-cloud-aiplatform`](https://pypi.org/project/google-cloud-aiplatform/)：Python用のVertex AI SDK。モデルのトレーニング、エンドポイントのデプロイ、パイプラインの実行など、Google Cloud の Vertex AI サービスと直接やり取りするために必要なものを提供します。
- [`google-genai`](https://pypi.org/project/google-genai/)：GoogleのジェネレーティブAI SDKで、Geminiや他のジェネレーティブモデル（Vertex AIにもある）を使用し、オーケストレーションすることができる。パイプラインにLLMタスクが含まれているため、これは便利です。([Vertex AI SDKは現在非推奨です](https://cloud.google.com/vertex-ai/generative-ai/docs/deprecations/genai-vertexai-sdk)）。
- [`brightdata-sdk`](https://pypi.org/project/brightdata-sdk/)：Bright DataのSERP APIや他のウェブデータソースにパイプラインから直接接続し、リアルタイムデータを取得するために使用します。

すべてのライブラリがインストールされたら、それらをインポートし、専用のセルに以下のコードを記述してVertex AI SDKを初期化します：

```none
インポート kfp
from kfp.dsl import component, pipeline, Input, Output, Artifact
from kfp import compiler
from google.cloud import aiplatform
from typing import リスト

# プロジェクトの秘密で置き換える
project_id = "<your_gc_project_id>"
リージョン = "<your_region>"# (例えば、"us-central1")
bucket_uri = "<your_bucket_uri>" # (例："us-central1")# (例: "gs://bright-data-pipeline-artifacts")

# バーテックスAI SDKの初期化
aiplatform.init(project=PROJECT_ID、location=REGION、staging_bucket=BUCKET_URI)
```

[`aiplatform.init()`](https://cloud.google.com/python/docs/reference/aiplatform/latest/google.cloud.aiplatform#google_cloud_aiplatform_init)関数は、Vertex AIと通信するためのPython環境を設定します。この関数は、プロジェクト、リージョン、ステージングバケットを設定し、パイプラインの作成、ジョブのトレーニング、モデルのデプロイなど、Vertex AI のその後のすべての操作が自動的に正しいコンテキストを使用するようにします。

要するに、この 1 行のコードは、ノートブック セッションを Google Cloud プロジェクトに接続し、Vertex AI にパイプラインの成果物や一時的なデータを保存する場所を指示します。よくできました！

### ステップ #6: クエリ抽出コンポーネントの定義

Vertex AIパイプラインは[コンポーネントから](https://cloud.google.com/vertex-ai/docs/pipelines/components-introduction)構築されます。コンポーネントとは、特定のタスクを実行するPython関数のことです。先に説明したように、このパイプラインには3つのコンポーネントがあります。

まず、最初のコンポーネントである`extract_queries`コンポーネントから説明します！

`extract_queries`コンポーネント：

1. ファクトチェックされるテキストを入力として受け取る。
2. (`google-genai`ライブラリを介して)Geminiモデルを使用し、テキスト内の事実の主張を検証するのに役立つGoogle検索クエリのリストを生成する。
3. そのリストをPythonの配列`（List[str]`）として返す。

以下のように実装する：

```none
コンポーネント(
    base_image="python:3.10"、
    packages_to_install=["google-genai"]、
)
def extract_queries(
    input_text: str、
    project: str、
    location: str、
) -> List[str]：
    from google import genai
    from google.genai.types import GenerateContentConfig, HttpOptions
    from typing import リスト
    インポート json

    # Vertex を統合した Google Gen AI SDK を初期化する。
    client = genai.Client(
        vertexai=True、
        project=project、
        location=location、
        http_options=HttpOptions(api_version="v1")
    )

    # これは文字列の配列である。
    これは文字列の配列である。
        "type"："ARRAY"、
        "items"：{
            "type"："STRING"
        }
    }

    # クエリ抽出プロンプト
    プロンプト = f""
    あなたはプロのファクトチェッカーです。あなたの仕事は、次のテキストを読んで、次のものを抽出することです。
    主な事実の主張を検証するために必要な、具体的でググれる検索クエリのリスト
    を抽出することです。

    Pythonの文字列リストのみを返し、それ以外は何も返さないこと。

    例
    入力："1889年にギュスターヴ・エッフェルによって建てられたエッフェル塔の高さは300mである"
    出力: ["エッフェル塔はいつ建てられたのか", "誰がエッフェル塔を建てたのか", "エッフェル塔の高さは"]。

    以下はファクトチェックのためのテキストである：
    ---
    "{input_text}"
    ---
    """

    response = client.models.generate_content(
        model="gemini-2.5-flash"、
        contents=prompt、
        config=GenerateContentConfig(
            # 文字列のJSON配列を返すようにモデルを強制する
            response_mime_type="application/json"、
            response_schema=response_schema、
        ),
    )

    # 'response.text'には、スキーマに準拠したJSON文字列が確実に含まれる (例えば、'["query_1", ..., "query_n"]')
    query_list：リスト[str] = json.loads(response.text.strip())

    return query_list
```

KFP コンポーネントは自己完結型でなければなりません。つまり、インポートはすべてコンポーネント関数の内部で宣言する必要があります。

`genai.Client()`の`vertexai=True`、`project=project`、`location=location`パラメータは`google-genai`クライアントとVertex AI環境を接続するために必要です。これらは、設定されたモデルがパイプラインと同じリージョンとプロジェクトで実行されることを保証します。

モデルの選択に関しては、軽量で高速な[Gemini 2.5 Flashを](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash)使用する必要があります。いずれにせよ、必要であれば、より精度の高い別のGeminiモデルを設定することができる。

コンポーネントが1つ減り、あと2つです！

### ステップ7: SERP APIを利用したウェブ検索コンテキスト取得コンポーネントの作成

Googleで検索可能なクエリのリストが作成できたので、次はウェブ上でコンテキストを検索します。これを行うには、Bright DataのSERP APIを使用します。SERP APIを使用すると、構造化されたスケーラブルな方法で検索結果（デフォルトではGoogle）をプログラムでスクレイピングすることができます。

PythonからSERP APIにアクセスする最も簡単な方法は、[公式でオープンソースのBright Data SDKを](https://github.com/brightdata/bright-data-sdk-python)使うことです。このライブラリは、SERP APIを含むBright Data製品を呼び出すためのシンプルなメソッドを提供します。[詳しくはドキュメントをご覧ください](https://docs.brightdata.com/api-reference/SDK)。

特に`fetch_web_search_context`コンポーネントが便利です：

1. 前のステップで生成された検索クエリのリストを受け取ります。
2. Bright Data SDK を使用して、各クエリに対して SERP API を並列に呼び出します。
3. 検索結果を取得します（デフォルトではGoogleから）。
4. パイプラインの他のコンポーネントが使用できるファイルであるJSONアーティファクトとして、すべての結果を保存する。

このようなコンポーネントを専用のノートブックセルに次のように作成します：

```none
コンポーネント(
    base_image="python:3.10"、
    packages_to_install=["brightdata-sdk"]、
)
def fetch_web_search_context(
    queries：リスト[str]、
    api_key: str、
    output_file：Output[Artifact]、
):
    """
    クエリのリストを受け取り、Bright Data SDKを使用して各クエリを検索します、
    すべての結果を JSON ファイルアーティファクトとして出力します。
    """
    from brightdata import bdclient
    インポート json

    # Bright Data SDK クライアントの初期化
    client = bdclient(api_token=api_key)
    # 入力クエリに対して SERP API を呼び出す
    results = client.search(
        queries、
        data_format="markdown"
    )

    # 結果をアーティファクトファイルに書き込む
    with open(output_file.path, "w") as f：
        json.dump(results, f)
```

SERP APIは、[LLMへの取り込みに理想的な](https://www.kaggle.com/code/brightdataml/benchmarking-ai-on-different-data-formats)Markdown形式でコンテンツを返すように設定されていることに注意してください。

また、このコンポーネントの出力はかなり大きくなる可能性があるので、[アーティファクトとして保存するのがベスト](https://cloud.google.com/vertex-ai/docs/training/exporting-model-artifacts)です。アーティファクトはGoogle Cloud Storageのバケットに保存され、Vertex AIパイプラインのコンポーネント間で、メモリに負荷をかけたりデータ転送の制限を超えたりすることなく、効率的にデータを受け渡すことができます。

さあ、始めましょう！Bright Dataのウェブ検索機能のおかげで、次のコンポーネント（LLMがファクトチェックを行う）の入力として使用できるGoogleの検索コンテキストが準備できました。

### ステップ#8：ファクトチェッカーコンポーネントの実装

クエリ抽出コンポーネントと同様に、このステップでもLLMを呼び出します。しかし、このコンポーネントはクエリを生成する代わりに、前のステップで収集したウェブ検索結果を文脈上の証拠として使用し、元の入力テキストのファクトチェックを行う。

基本的には、検索されたウェブコンテンツがモデルの検証プロセスを導く、[SERPベースのRAGスタイルのワークフローを](/blog/ウェブデータ/build-a-rag-chatbot)実行する。

新しいノートブックのセルに、`fact_check_with_web_search_context`コンポーネントを以下のように定義する：

```none
コンポーネント(
    base_image="python:3.10"、
    packages_to_install=["google-genai"]、
)
def fact_check_with_web_search_context(
    input_text: str、
    web_search_context_file：Input[Artifact]、
    project: str、
    location: str、
) -> str：
    インポート json
    from google import genai

    # アーティファクトからウェブ検索コンテキストを読み込む
    with open(web_search_context_file.path, "r") as f：
        web_search_context = json.load(f)

    client = genai.Client(
        vertexai=True、
        project=project、
        ロケーション
    )

    prompt = f""
    あなたはAIファクトチェッカーです。原文とJSON検索コンテキストを比較し
    と比較し、Markdownでファクトチェックレポートを作成します。

    [オリジナルテキスト］
    "{input_text}"

    [ウェブ検索コンテキスト］
    "{json.dumps(web_search_context)}"
    """

    response = client.models.generate_content(
        model="gemini-2.5-pro",
        contents=prompt
    )

    return response.text
```

このタスクはより複雑であり、複数の証拠ソースを推論する必要がある。そのため、[Gemini 2.5 Proの](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro)ような、より能力の高いモデルを使用する方が良いでしょう。

素晴らしい！これでVertex AIパイプラインを構成する3つのコンポーネントが定義できました。

### ステップ #9: パイプラインの定義とコンパイル

3つのコンポーネントを1つのKubeflowパイプラインに接続します。各コンポーネントは順次実行され、あるステップの出力が次のステップの入力になります。

パイプラインを定義する方法は次のとおりです：

```none
パイプラインを定義する方法です。
    name="bright-data-fact-checker-pipeline"、
    description="Fetches SERP context to fact-check a text document.")
)
def fact_check_pipeline(
    input_text: str、
    bright_data_api_key: str、
    project: str = PROJECT_ID、
    location: str = REGION、
):
    # ステップ1：入力テキストからGoogleが検証可能なクエリを抽出する
    step1 = extract_queries(
        input_text=input_text、
        project=project、
        location=location
    )

    # ステップ2：検索クエリに対するブライトデータのSERP結果を取得する
    step2 = fetch_web_search_context(
        queries=step1.output、
        bright_data_api_key=bright_data_api_key
    )

    # ステップ3：先に取得したウェブ検索コンテキストを使ってファクトチェックを実行する
    step3 = fact_check_with_web_search_context(
        input_text=input_text、
        web_search_context_file=step2.outputs["output_file"]、
        project=project、
        location=location
    )
```

要するに、この関数は、先に構築した3つのコンポーネントを結びつけるものである。まずファクトチェッククエリを生成し、次にBright DataのSERP APIを使用して各クエリの検索結果を取得し、最後にGeminiモデルを実行して収集した証拠に基づいて主張を検証する。

次に、パイプラインをVertex AIが実行できるJSON仕様にコンパイルする必要がある：

```none
コンパイラ.コンパイラ().コンパイル(
    pipeline_func=fact_check_pipeline、
    package_path="fact_check_pipeline.json"
)
```

このコマンドは、Pythonパイプライン定義を`fact_check_pipeline.jsonという`JSONパイプライン仕様ファイルに変換します。

このJSONファイルは、Vertex AI Pipelinesがワークフローのオーケストレーション方法を理解するために信頼するブループリントです。このファイルには、すべてのコンポーネント、その入力と出力、依存関係、コンテナイメージ、実行順序が記述されている。

このJSONファイルをVertex AIで実行すると、Google Cloudが自動的にインフラストラクチャをプロビジョニングし、各コンポーネントを正しい順序で実行し、ステップ間のデータ受け渡しを処理する。パイプラインの完成です！

### ステップ #10: パイプラインの実行

Vertex AIパイプラインを、次のような明らかに誤った文章でテストしたいとします：

> 「パリはドイツの首都であり、ドイツの通貨は円である。

Jupyterノートブックに以下のセルを追加する。このAddはパイプラインを起動するロジックを定義する：

```none
text_to_check = """
パリは円を通貨として使うドイツの首都である。
"""

# Bright Data APIキーで置き換える
bright_data_api_key = "<your_bright_data_api_key>"

print("パイプラインジョブを開始します...")

# パイプラインジョブを定義する
job = aiplatform.PipelineJob(
    display_name="fact-check-pipeline-run"、
    template_path="fact_check_pipeline.json"、
    pipeline_root=BUCKET_URI、
    parameter_values={
        "input_text"：TEXT_TO_CHECK、
        "bright_data_api_key"：bright_data_api_key
    }
)

# ジョブの実行
job.run()

print("ジョブが送信されました！Vertex AI UIで進捗を確認できます。")
```

このコードは、先にコンパイルしたパイプラインJSON`（fact_check_pipeline.json`）、パイプラインルートとしてのストレージバケット、およびこの特定の実行に必要なパラメータ（検証する入力テキストとBright Data APIキー）を指定して、[新しいVertex AI Pipelineジョブを作成](https://cloud.google.com/vertex-ai/docs/pipelines/run-pipeline)します。

このセルを実行すると、Vertex AIが自動的にパイプライン全体をクラウドでオーケストレーションします。

**セキュリティ上の注意**：この例では、簡単のために Bright Data API キーをノートブックに直接ハードコードしていますが、これは本番環境では安全ではありません。実際のデプロイでは、[Google Cloud Secret Manager](https://cloud.google.com/security/products/secret-manager?hl=en)を使用して API キーのような機密性の高いクレデンシャルを保存および取得し、偶発的な暴露（ログなど）を避ける必要があります。

パイプラインを実行するには、すべてのセルを選択し、Jupyterノートブックの「▶」ボタンを押します。最後のセルにこのような出力が出ます：

![The pipeline has started](https://media.brightdata.com/2025/11/image-12-1024x257.png)これは、あなたのVertex AIファクトチェックパイプラインが正常に実行されていることを意味します。すごい！

### ステップ#11：パイプラインの実行を監視する

パイプラインジョブのステータスを確認するには、プロジェクトのGoogle Cloud ConsoleのVertex AI Pipelinesページにアクセスします：

```none
https://console.cloud.google.com/vertex-ai/pipelines?project={PROJECT_ID}。
```

この場合、URLは次のようになります：

```none
https://console.cloud.google.com/vertex-ai/pipelines?project=bright-data-pipeline です。
```

このURLをブラウザに貼り付けると、このようなページが表示されます：

![The Vertex AI Pipelines page](https://media.brightdata.com/2025/11/image-13-1024x545.png)Runs” テーブルの最初のエントリーをクリックすると、パイプラインジョブの実行ページが開きます：

![The pipeline job execution page](https://media.brightdata.com/2025/11/image-14-1024x545.png)ここで、パイプラインが構成するコンポーネントを視覚的に確認できます。ここでは、パイプラインが構成するコンポーネントを視覚的に確認できます。また、各ノードのステータスを確認したり、詳細なログを表示したり、パイプラインの実行中にその先頭から最後までのデータの流れを観察したりすることもできます。

### ステップ#12: 出力の探索

パイプラインの実行が完了すると、各ノードに正常終了を示すチェックマークが表示されます：

![All nodes in the pipeline have been executed successfully](https://media.brightdata.com/2025/11/image-15-1024x690.png)最初のノードをクリックすると、入力テキストから抽出されたGoogleで検索可能なクエリが表示されます。この例では、生成されたクエリは次のとおりです：

- `「ドイツの首都は？`
- `"ドイツの通貨は？"`

これらのクエリは、入力文の事実の主張を検証するのに最適です：

![Checking the output of the first node](https://media.brightdata.com/2025/11/image-16-1024x572.png)次に、2番目のノードと3番目のノードの間にあるアーティファクト・ノードをクリックする。設定したGoogle Cloud Storageバケット（この場合は`bright-data-pipeline-artifacts`）に保存されているJSONファイルへのリンクが表示されます。

Cloud Console でバケットに移動して、目的のページに直接アクセスすることもできます：

![The folders associated with the pipeline run in the bucket](https://media.brightdata.com/2025/11/image-17-1024x543.png)バケット内には、各コンポーネントのフォルダがあります。詳細には、`fetch_web_search_context`コンポーネントのフォルダには、SERP API を介して取得されたウェブ検索コンテキストが、Markdown 形式の文字列の配列として格納された JSON ファイルがあります：

![The file containing the retrieved SERP data](https://media.brightdata.com/2025/11/image-18-1024x284.png)このファイルをダウンロードして開くと、次のようなことがわかります：

![The array with the SERPs in Markdown](https://media.brightdata.com/2025/11/image-19-1024x600.png)このコンテンツは、識別された検索クエリごとに取得されたSERPのMarkdown表現である。

Vertex AIパイプラインのUIに戻り、出力ノードをクリックして全体の結果を確認する：

![The output produced by the pipeline](https://media.brightdata.com/2025/11/image-20-1024x545.png)お分かりのように、出力は詳細なMarkdownファクトチェックレポートである。同じ出力は、パイプライン実行のバケットフォルダ内の`executor_output.json`ファイルにも保存されます。それをダウンロードし、Visual Studio CodeのようなIDEで開いて検査する：

![Viewing the output file in Visual Studio Code](https://media.brightdata.com/2025/11/image-21-1024x389.png)Markdownの文字列を`.md`ファイル（例：`report.md`）にコピーすると、よりわかりやすく表示されます：

![Inspecting the final Markdown output](https://media.brightdata.com/2025/11/image-22-1024x423.png)レポートには、入力された文のどの部分が間違っていたのか、検証された事実は何なのかについての詳細な情報が記載されています。

出来上がりです！これは、RAGベースのVertex AIパイプラインでコンテキスト情報を取得するためのBright Dataのウェブ検索統合の威力を示しています。

### 次のステップ

これは、Bright Dataのウェブ検索データ検索をVertex AIパイプラインで使用するための実現可能性を示す簡単な例に過ぎないことを忘れないでください。実際のシナリオでは、これらのコンポーネントはもっと長く複雑なパイプラインの一部になる可能性が高い。

入力データは、ビジネス文書、内部レポート、データベース、ファイルなど、さまざまなソースから得られる可能性があります。さらに、ワークフローには他にも多くのステップが含まれる可能性があり、必ずしも事実確認レポートだけで終わるとは限らない。

## まとめ

このブログポストでは、Bright Data の SERP API を活用して Vertex AI パイプライン内でウェブ検索コンテキストを取得する方法を学びました。ここで紹介したAIワークフローは、データの正確性を確保するために、プログラムによる信頼性の高いファクトチェックパイプラインを構築したいと考えている人に最適です。

[同様の高度なAIワークフローを](/ai/agent-showcase)作成するには、[Bright DataのAIインフラストラクチャを](/ai)使用して、ライブのウェブデータを取得、検証、変換するためのあらゆるソリューションをご覧ください。

今すぐ無料のBright Dataアカウントを作成し、AIのためのウェブデータツールの実験を開始してください！



お問い合わせ無料トライアル![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 目次







Data for AI

Supercharge your AI with instant and reliable access to web data. No blockers. No hassle.

Talk to an expert

Bright Data MCP

Get started with Bright Data’s Web MCP Server today with 5000 free monthly requests and unlock your AI’s full potential.

Start free now







 [ ](https://news.ycombinator.com/submitlink?t=%E3%83%96%E3%83%A9%E3%82%A4%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E6%A4%9C%E7%B4%A2%E3%82%92Vertex+AI%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AB%E7%B5%B1%E5%90%88%E3%81%99%E3%82%8B&u=https://brightdata.jp/blog/ai/vertex-ai-with-serp-api) [ ](https://www.linkedin.com/shareArticle?mini=true&title=%E3%83%96%E3%83%A9%E3%82%A4%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E6%A4%9C%E7%B4%A2%E3%82%92Vertex+AI%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AB%E7%B5%B1%E5%90%88%E3%81%99%E3%82%8B&url=https://brightdata.jp/blog/ai/vertex-ai-with-serp-api) [ ](http://www.reddit.com/submit?title=%E3%83%96%E3%83%A9%E3%82%A4%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E6%A4%9C%E7%B4%A2%E3%82%92Vertex+AI%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AB%E7%B5%B1%E5%90%88%E3%81%99%E3%82%8B&url=https://brightdata.jp/blog/ai/vertex-ai-with-serp-api)







##  あなたは下記にもご興味がおありかもしれません

 [ ![OpenHuman with Bright Data](https://media.brightdata.jp/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.jp/blog/ai/openhuman-with-bright-data "Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス")

 [AI



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス

Bright Data CLIをOpenHumanに統合して、AIエージェント向けの本番対応ウェブアクセスとデータ収集を実現します。



 09-Sep-2026

 3 分読

 ](https://brightdata.jp/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.jp/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax "MiniMaxによるマルチモーダルウェブスクレイピング")

 [ウェブデータ



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### MiniMaxによるマルチモーダルウェブスクレイピング

Bright Data Web UnlockerとMiniMax M3ビジョンを組み合わせて、画像やウェブページのスクリーンショットから構造化データを抽出します。



 09-Sep-2026

 1 分読

 ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.jp/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex "2026年版 Codex向けCLIツール10選 – テスト＆ランキング")

 [AI



 ![Daniel Shashko](https://media.brightdata.jp/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### 2026年版 Codex向けCLIツール10選 – テスト＆ランキング

Codexをより速く、より有能にする10のCLIツール。サンドボックス内から実際のウェブアクセスを提供するBright Data CLIから始まります。



 06-Sep-2026

 4 分読

 ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex)
