ジャンプ スタート ソリューション: 生成 AI ナレッジベース

Last reviewed 2024-03-01 UTC

このガイドは、生成 AI ナレッジベース ソリューションを理解してデプロイするのに役立ちます。このソリューションでは、抽出型の質問応答(EQA)パイプラインを構築し、社内ナレッジベースのコンテンツを生成する方法について説明します。

このドキュメントは、LLM について一定の知識があるデベロッパーを対象としています。このドキュメントは、基本的なクラウドのコンセプトに精通していることを前提としていますが、必ずしも Google Cloud について理解している必要はありません。また、Terraform の使用経験も役に立ちます。

目標

このソリューション ガイドは、次のことに役立ちます。

  • ドキュメントから質問と回答のペアを抽出するアプリケーションと、ドキュメントがアップロードされたときにアプリケーションをトリガーするパイプラインをデプロイする。
  • アプリケーションの出力を使用して、プロンプトベースの AI モデルをトレーニングする。

アーキテクチャ

このソリューションでは、生成 AI ナレッジベース アプリケーションをデプロイします。次の図は、アプリケーション インフラストラクチャのアーキテクチャを示しています。

Vertex AI の生成 AI を使用してドキュメントから質問と回答のペアを抽出するアプリケーションのアーキテクチャ図

リクエスト フロー

以下では、アプリケーションのリクエスト処理フローについて詳しく説明します。フローの各ステップには、上のアーキテクチャ図に対応した番号が付いています。

生成 AI ナレッジベース アプリケーションを開始するには、Google Cloud コンソールまたは gcloud CLI を使用して、ドキュメントを Cloud Storage バケットに直接アップロードします。

  1. ドキュメントがアップロードされると、Cloud Functions の関数がトリガーされます。この関数は、抽出型の質問応答プロセスを実行します。

  2. 関数が、Document AI OCR を使用してドキュメントからすべてのテキストを抽出します。

  3. 関数が、ドキュメントのインデックスを作成し、ベクトル検索に登録します。ベクトル検索インデックスは、アップロードされたドキュメントから直接抽出されたコンテンツのみに基づいて、LLM が質問と回答のペアを抽出するためのコンテキストを提供します。

  4. 関数が、Vertex AI を使用して、ドキュメントから質問と回答を抽出して生成します。

  5. 関数が、抽出された質問と回答のペアを Firestore に保存します。

  6. Firestore データベースから JSONL ファイン チューニング データセットが生成され、Cloud Storage に保存されます。

  7. データセットに問題がないことを手動で検証したら、Vertex AI でファインチューニング ジョブを起動できます。

    チューニング ジョブが完了すると、チューニング済みのモデルがエンドポイントにデプロイされます。エンドポイントにデプロイされた後、Colab ノートブックでチューニング済みモデルにクエリを送信し、基盤モデルと比較できます。

使用するプロダクト

このセクションでは、このソリューションで使用するプロダクトについて説明します。

Terraform 構成言語に精通している場合は、サービスの一部の設定を変更できます。

コンポーネント プロダクトの説明 このソリューションでの目的
Cloud Storage 低コストで無制限のオブジェクト ストレージをさまざまなデータ型に使用できるエンタープライズ クラスのサービス。 PDF ドキュメント、抽出されたテキスト、チューニング データセット、チューニング済みモデルを保存します。
Eventarc 分離されたマイクロサービス間の状態変更(イベント)を管理し、配信、セキュリティ、認証、オブザーバビリティ、エラー処理を管理しながらさまざまな宛先にイベントをルーティングするサービス。 Cloud Storage バケット内の新しいドキュメントを監視し、Cloud Functions でイベントをトリガーします。
Cloud Functions サーバーやランタイム環境を管理せずに、Google Cloud イベントに応答する単一目的のスタンドアロン関数を作成できる軽量のサーバーレス コンピューティング サービス。 ドキュメントの処理ステップをオーケストレートします。
Document AI ドキュメントから非構造化データを取得して構造化データに変換するドキュメント理解プラットフォーム。面倒なタスクを自動化し、データ抽出を改善して、データからより深い分析情報を得ることができます。 ドキュメントからテキストを抽出します。
Vertex AI LLM と生成 AI アプリケーションのトレーニング、テスト、チューニング、デプロイを行う ML プラットフォーム。 ドキュメントから質問と回答を生成します。
ベクトル検索 Google 検索、YouTube、Play などの Google サービスの基盤と同じインフラストラクチャを利用できるサービス。 エンベディングを検索して、意味的に類似または関連するエンティティを見つけることができます。
Firestore 高可用性と高スループットを提供する、VM とクラスタ向けのフルマネージドで低レイテンシのファイル システム。 生成された質問と回答を保存します。

Cost

生成 AI ナレッジベース ソリューションで使用される Google Cloud リソースの費用の見積もりについては、Google Cloud 料金計算ツールで事前に計算された見積もりをご覧ください。

見積もりを出発点として使用して、デプロイの費用を計算します。見積もりを変更して、ソリューションで使用するリソースに対して行う予定の構成の変更を反映できます。

事前に計算された見積もりは、次のような特定の要因に関する前提条件に基づいています。

  • リソースがデプロイされている Google Cloud のロケーション。
  • リソースが使用される時間。

  • Cloud Storage に保存されているデータの量。

  • ナレッジベース アプリケーションが呼び出された回数。

  • モデルのチューニングに使用されるコンピューティング リソース。

始める前に

このソリューションをデプロイするには、まず Google Cloud プロジェクトと IAM 権限が必要です。

Google Cloud プロジェクトを作成または選択する

ソリューションをデプロイするときに、リソースがデプロイされている Google Cloud プロジェクトを選択します。既存のプロジェクトを使用するか、新しいプロジェクトを作成するかは、次の要素を考慮して判断してください。

  • ソリューション用のプロジェクトを作成し、デプロイメントが不要になった場合は、プロジェクトを削除して、それ以上の請求を避けることができます。既存のプロジェクトを使用する場合、不要になったプロジェクトを削除する必要があります。
  • 新しいプロジェクトを使用すると、本番環境ワークロードに使用されるリソースなど、以前にプロビジョニングされたリソースとの競合を回避できます。

新しいプロジェクトにソリューションをデプロイする場合は、デプロイを開始する前にプロジェクトを作成します。

プロジェクトを作成するには、次の手順を完了します。

  1. Google Cloud コンソールでプロジェクトの選択ページに移動します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトの作成を開始するには、[プロジェクトを作成] をクリックします。

  3. プロジェクトに名前を付けます。生成されたプロジェクト ID をメモしておきます。

  4. 必要に応じて他のフィールドを編集します。

  5. プロジェクトを作成するには、[作成] をクリックします。

必要な IAM 権限を取得する

デプロイ プロセスを開始するには、次の表に示す Identity and Access Management(IAM)権限が必要です。ソリューションをデプロイするプロジェクトに対して roles/owner 基本ロールが付与されている場合、必要な権限がすべてすでに付与されています。roles/owner のロールがない場合は、これらの権限(またはこれらの権限を含むロール)を付与するよう管理者に依頼してください。

必要な IAM 権限 必要な権限を含む事前定義ロール

serviceusage.services.enable

Service Usage 管理者
roles/serviceusage.serviceUsageAdmin

iam.serviceAccounts.create

サービス アカウント管理者
roles/iam.serviceAccountAdmin

resourcemanager.projects.setIamPolicy

プロジェクト IAM 管理者
roles/resourcemanager.projectIamAdmin
config.deployments.create
config.deployments.list
Cloud Infrastructure Manager 管理者
roles/config.admin

ソリューション用に作成されたサービス アカウント

コンソールからデプロイ プロセスを開始すると、ユーザーに代わってソリューションをデプロイするために(また、必要に応じて後でデプロイを削除するために)サービス アカウントが作成されます。このサービス アカウントには、特定の IAM 権限が一時的に割り当てられます。つまり、ソリューションのデプロイと削除のオペレーションが完了すると、権限が自動的に取り消されます。ソリューションのデプロイを削除した後に、このガイドの後半で説明するように、サービス アカウントを削除することをおすすめします。

サービス アカウントに割り当てられているロールを表示する

Google Cloud プロジェクトまたは組織の管理者が必要とする場合に備え、各ロールを以下に示します。

  • roles/aiplatform.user
  • roles/artifactregistry.admin
  • roles/documentai.editor
  • roles/firebase.admin
  • roles/iam.serviceAccountUser
  • roles/serviceusage.serviceUsageAdmin
  • roles/iam.serviceAccountAdmin
  • roles/resourcemanager.projectIamAdmin

ソリューションをデプロイする

このソリューションを最小限の労力でデプロイできるように、Terraform 構成が GitHub で提供されています。Terraform 構成では、ソリューションに必要なすべての Google Cloud のリソースを定義しています。

次のいずれかの方法でソリューションをデプロイできます。

  • コンソールから: デフォルトの構成でソリューションを試して動作を確認する場合は、この方法を使用します。Cloud Build は、ソリューションに必要なすべてのリソースをデプロイします。デプロイされたソリューションが不要になった場合は、コンソールから削除できます。ソリューションのデプロイ後に作成したリソースは、個別に削除する必要があります。

    このデプロイ方法を使用する場合、コンソールからデプロイするの手順に沿って操作します。

  • Terraform CLI を使用: このソリューションをカスタマイズする場合、または Infrastructure as Code(IaC)のアプローチを使用してリソースのプロビジョニングと管理を自動化する場合は、この方法を使用します。GitHub から Terraform 構成をダウンロードし、必要に応じてコードをカスタマイズしてから、Terraform CLI を使用してソリューションをデプロイします。ソリューションをデプロ