『Google Vertex AI Search&Conversationを使用してRAGチャットボットを構築する』

『Google Vertex AIを活用したRAGチャットボット構築』

ソース: 著者図

Googleは最近、彼らの管理されたRAG(取得強化生成器)サービス、Vertex AI Search & ConversationをGA(一般提供)にリリースしました。このサービスは、以前Google Enterprise Searchとして知られており、既に繁栄しているLLM(大規模言語モデル)チャットボット市場にさらなる競争をもたらします。

本記事では、LLMパワードチャットボットの構築に関するRAGフレームワークについてのいくつかの知識を持っていることを前提とします。以下の図は、LangchainからのRAGの良い紹介を提供します。

ソース: https://python.langchain.com/docs/use_cases/question_answering/

この記事では、Google Vertex AI Search & Conversationを使用してLLMチャットボットを設定することに主眼を置いています(この記事の残りでは、Vertex AI Searchを使用します)。

ソリューションダイアグラム

ソース: 著者図

Datastore

Vertex AI Searchは現在、html、pdf、およびcsv形式のソースデータをサポートしています。

ソース: https://cloud.google.com/generative-ai-app-builder/docs/agent-data-store

Vertex AI Searchは現在、html、pdf、およびcsv形式のソースデータをサポートしています。ソースデータはGoogleの検索インデックスから収集されます(Google検索で使用される同じインデックスです)。これは、ウェブサイト情報を抽出するための別個のスクレイピングメカニズムが必要な他のプロバイダと比べて主な利点です。

非構造化データ(現在はpdfとhtmlのみサポートされています)の場合、ファイルはまずCloud Storageバケットにアップロードする必要があります。このストレージバケットは、利用可能などの任意のリージョンに配置できます。

⚠️ Vertex AI Searchのデータストアは、Cloud Storageとは異なります。これは、他のプロバイダでしばしば「ベクトルデータベース」として参照されるものと似ています。

Vertex AI Searchの各アプリには現在独自のデータストアがあります。単一のアプリの下に複数のデータストアを持つことも可能です。

ソース: 著者のGCP環境のスクリーンショット

デモンストレーションの目的で、オンラインで利用可能な学生ハンドブックのサンプルPDFを使用します(https://www.bcci.edu.au/images/pdf/student-handbook.pdf)。注意:私たちはこの組織とは関連していません(オンラインで見つけることができるサンプルPDFです)

ステップ1 – PDFファイルの準備:

Pythonを使用してシングルのPDFハンドブックを複数のページに分割します。これにはわずか数秒かかります。

from PyPDF2 import PdfWriter, PdfReaderinputpdf = PdfReader(open("student-handbook.pdf", "rb"))for i in range(len(inputpdf.pages)):    output = PdfWriter()    output.add_page(inputpdf.pages[i])    with open("./split_pdfs_student_handbook/document-page%s.pdf" % i, "wb") as outputStream:        output.write(outputStream)

ステップ2 — GCSバケットへのアップロード:

PDFファイルをGoogle Cloud Storageにアップロードする必要があります。Googleコンソールを使用するか、お好きな言語でGCP SDKを使用することができます。

単一のPDF文書のみが必要な場合は、このデモでは「clickops」を使用します。

PDFファイルをCloud Storageバケットにドロップしましょう。

Source: Author’s screenshot from GCP environemnt

ステップ3 — アプリとデータストアのセットアップ:

Source: Author’s screenshot from GCP environment

GCPコンソールで、「Search and Conversation」を検索し、「アプリの作成」をクリックします。チャットアプリのタイプを選択します。会社とエージェントの名前を設定してアプリを構成します。注意:エージェントはグローバルリージョンでのみ利用可能です。

Source: Author’s screenshot from GCP environment

次に、データストアを作成します。 「Cloud Storage」を選択し、ステップ2で作成したバケットを選択します。

Source: Author’s screenshot from GCP environment

次に、データストアを作成するように求められます。これは、意味的検索とLLMのための埋め込みを格納するためのベクトルデータストアです。

「Cloud Storage」を選択します。次に、前のステップで作成したCloud Storageを選択します。

Source: Author’s screenshot from GCP environment

次に、「続行」をクリックします。その後、埋め込みが開始されます。このプロセスは、データの量に応じて数分から1時間かかる場合があります。また、GCPには非同期クライアントが利用可能なSDKライブラリがあり、プロセス全体を迅速化することができます。それ以外の場合は、常にGCPコンソールを使用することができます。デフォルトでは同期APIコールが使用されます。

進行状況はアクティビティタブで確認できます。

Source: Author’s screenshot from GCP environment

インポートが完了したら、左側の「プレビュー」に移動します。これにより、Dialogflow CXコンソールに移動します。

ステップ4 — Dialogflow:

Source: Author’s screenshot from GCP environment

Dialogflowコンソールで、「スタートページ」をクリックします。右側にデータストアの設定が開きます。同時に複数のデータストア(ウェブサイト、PDFなど)を選択することができます。この場合、ステップ3で作成した学生ハンドブックにしておきます。

データストア設定の下で、「Generator」を見つけてください。

Source: Author’s screenshot from GCP environment

以下のプロンプトを追加してください:

あなたはThe Best Collegeで働く仮想アシスタントです。学生ハンドブックに基づいて一般的なアドバイスを提供します。常に礼儀正しく建設的な言葉で応答してください。前回の会話:$conversation \nこれがユーザーの質問です:$last-user-utterance \n次に知っておく必要のある文脈情報があります:$request.knowledge.answers \nこちらがあなたの回答です:

$conversation、$last-user-utterance、$request.knowledge.answersはDialogflowのパラメーターです。

Source: Author’s screenshot from GCP environment

‘Input Parameter’に$last-user-utteranceと入力してください。これにより、ユーザーの質問がジェネレーターに渡されます。’Output Parameter’には$request.generative.student-assistant-responseと入力してください。必ずトップの「保存」ボタンを押してください!

Source: Author’s screenshot from GCP environment

Agentが言う部分には、$request.generative.student-assistant-responseと入力するのを忘れないでください。これにより、ジェネレーターからの出力がエージェントのチャットで受け取られることが保証されます。

ステップ5 – テストと統合:

このボットをテストするには、右上隅の「Test Agent」シミュレータをクリックするか、左側の「Manage Tab」を使用して統合を選択することができます。個人的には、「Dialogflow Messenger」を使用して「Test Agent」よりも好みます。なぜなら、最終的な応答形式が表示されるからです。

Source: Author’s screenshot from GCP environment

Dialogflow Messengerをクリックしたら、「非認証APIの有効化」を選択してください。これはテスト用です。実際のケースでは、認証の要件に応じてこれを有効にするかどうかを選択できます。

Source: Author’s screenshot from GCP environment
Source: Author’s screenshot from GCP environment

さあ、質問を入力してください。RAGが生成した回答は、学生ハンドブックPDFに基づいています。また、下部に参照リンクが付いています。クリックすると、該当する情報が含まれているPDFのページに移動します。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

ファインチューニングLLM パラメータ効率の改善 (PEFT) — LoRA および QLoRA — パート1

このブログでは、パラメータ効率的微調整(PEFT)のアイデアを理解し、PEFTの2つの最も重要な手法であるLoRAとQLoRAを探求します

データサイエンス

「生成AIのためのモダンなMLOpsプラットフォーム」

ジェネレーティブAI用のモダンなMLOpsプラットフォームは、機械学習オペレーションの実践をジェネレーティブモデルの特徴とシ...

データサイエンス

学習トランスフォーマーコード第2部 - GPTを間近で観察

私のプロジェクトの第2部へようこそここでは、TinyStoriesデータセットとnanoGPTを使用して、トランスフォーマーとGPTベース...

AIテクノロジー

NVIDIAは、AIプロセッサの供給において日本を優先しています

人工知能(AI)技術の世界的な覇権争いを反映した重要な動きとして、NVIDIAのCEOであるJensen Huangは、日本の急増するAIプロ...

機械学習

ディープラーニング実験の十のパターンとアンチパターン

この記事では、深層学習エンジニアとしての10年の経験から収集したパターンとアンチパターンのリストを紹介します深層学習エ...

データサイエンス

「GenAIのモデルの出力を改善する方法」

ジェネレーティブAIは、DLアルゴリズムのおかげで強力なコンテンツ生成器に進化しましたただし、より正確な結果を得るために...