Amazon S3上のPDFファイルをData Cloudに取り込んでRAGとして使ってみた
はじめに
こんにちは。Salesforce Data CloudのRAG機能についてより多くの方に知っていただきたいと思い、このブログ記事を作成しました。
AI技術、特に大規模言語モデル(LLM)の進化により、顧客対応の質の向上や業務効率化への期待が高まっています。その中で、LLMの回答精度を向上させる重要な技術が RAG (Retrieval Augmented Generation) です。
この記事では、Salesforceが提供するハンズオン資料「Agentforce Workshop」を利用し、基本的なRAGを構築・活用する手順を解説します。
Agentforce WorkshopはAgentforceをはじめとするSalesforceの多岐にわたる最新機能を網羅的に学べる素晴らしいリソースですが、今回は特に「RAGについて、まずはポイントを絞って理解したい!」という方のために、RAGに関連する部分のみを抽出してご紹介します。
特に、マニュアルやFAQといった「非構造化データ」(テキストが主体で、特定の形式を持たないデータ)を含むファイルを活用したRAGの構築方法は、初めての方には少し分かりにくい部分もあるかもしれません。この記事が、皆さんのRAG導入と理解の一助となれば幸いです。
作業手順
事前準備1:Coral Cloud Sample App環境の準備
Agentforce Workshopでは、「Coral Cloud Sample App」環境 を利用します。
この環境を使うメリットは、Salesforce Data Cloudが既にプロビジョニング(初期設定)済みであるということです。通常、Data Cloudのセットアップ(プロビジョニング)には1時間ほど必要になるため、この環境ならすぐにData Cloudを利用することができます。
デメリットは、14日間しか使えないということです。なので、環境を準備したら、一気にハンズオンのシナリオをやり切ってください!私は何度か環境が消えてしまい、その度にやり直しました。。。
なお、Salesforceでは、他にDeveloper環境も提供しています。こちらの環境では、Data Cloudのセットアップから行うことができますので、用途に応じて使い分けてください。
以下のリンクからCoral Cloud Sample App環境のセットアップを行ってください。「Sign up for a Salesforce org」の部分だけ行えばOKです。
➡️ Quick Start: Explore the Coral Cloud Sample App
事前準備2:生成AI機能(Einstein および Agentforce)の有効化
次に、Salesforce組織で生成AI機能を有効化する必要があります。詳細な手順は下記のガイドを参照してください。
➡️ Guided Workshop Setup - Enable Generative AI Features
事前準備3: Amazon S3との接続設定
それから、非構造化データが格納されているAmazon S3バケットへSalesforce Data Cloudから接続するための設定を行います。
このワークショップでは学習用としてAmazon S3の環境も提供されています。ご自身で別途Amazon S3バケット(データを保存する場所)を用意する必要がないので助かりますね。
手順の詳細は以下のリンクを参照してください。
➡️Exercise 2: Create an Amazon S3 Connection
Exercise 1: 非構造化データの取り込み
では、ここからRAGの構築作業に入っていきます。
S3バケット上の非構造化データ(PDFファイルなど)をData Cloudに取り込みます。
具体的な作業の流れは以下の通りです。
Step1. UDLO(Unstructured DLO), UDMO(Unstructured DMO)の作成
Step2. 検索インデックスの作成
Step3. S3上のファイル通知機能の認証
Step4. S3上のファイル通知機能の実行
Step5. 取り込まれたデータの確認
各手順の詳細は以下のリンクを参照してください。
➡️Retrieval Argumented Generation - Exercise 1: Ingest Unstructured Data
まず、構造化データの取り込みと異なり、今回のようにファイルをデータソースから取り込む場合は、データストリームを利用しません。
ハンズオンの手順ではStep2で検索インデックス(Search Index)を別途作成する流れになっていますが、実はStep1の10.でSearch Indexの設定画面があるように、検索インデックスが自動で作成されます。ハンズオンで作成するものと設定に大きな違いはありませんので、どちらを使ってもOKです。
また、検索インデックスが作成される際にレトリーバー(Retriever)も自動で作成されます。
なお、Data Cloudでは検索インデックスやレトリーバーをカスタマイズするための設定も提供されているので、そちらに興味がある方はヘルプドキュメントなどを見ながら色々と試してみることをお勧めします。
自動で作成された検索インデックス
自動で作成されたレトリーバー
それから、Step3とStep4はファイル通知を簡単に行うための手順で、実際の環境ではこの様なものは存在しません。そのため、下記のサイトなどを参考に、データソースとなるクラウドサービス側で設定を行う必要があります。この手順については別の記事で取り上げてみたいと思います。
Exercise 2: Einstein Searchによるグラウンディング
ステップ2で作成された検索インデックスを、プロンプトテンプレートに組み込み(グラウンディングし)、生成AIがこの知識ベースを参照できるようにします。
手順の詳細は以下のリンクを参照してください。
➡️Retrieval Argumented Generation - Exercise 2: Ground a Prompt with Einstein Search
私が試してみた時の回答結果はこちらです。
ちなみに、Einstein Searchでグラウンディングしないと、下図のような回答結果になります。グラウンディングの効果がわかりますね。
Exercise 3: 非構造化データでエージェント (Agentforce) を強化
グラウンディング済みのプロンプトテンプレートをAgentforce(対話型AIエージェント)のアクションに組み込みます。
- Agentforceとは?: Salesforceが提供する次世代型AIエージェントプラットフォームで、自律的に行動し、業務を効率化するAIエージェントです。
手順の詳細は以下のリンクですが、一部、今のUIには合わない部分がありましたので、その部分について私の方で実施した内容を共有します。参考になれば幸いです。
➡️Retrieval Argumented Generation - Exercise 3: Power Agents with Unstructured Data
Step 1: Create the agent custom actionの5.で、Loading Textという項目が追加されており、必須項目になっていたので、「Loading now...」と入力
Agentforceの設定を下記手順で行いました。
「+ New Agent」ボタンをクリック
「Create from a Template」、「Agentforce Service Agent」を選択して、「Next」ボタンをクリック
すべてのトピックを外して(「Added」ボタンをクリックし「Add」ボタンにして)、「Next」ボタンをクリック
Name、API Name、Companyフィールドを入力して、「Next」ボタンをクリック
- Name: Hotel Customer Service Agent
- API Name: Hotel_Customer_Service_Agent
- Company: Coral Cloud Resorts
そのままの状態で「Create」ボタンをクリック
「New」ボタンをクリックし、「+ New Topic」を選択
「Next」ボタンをクリック
トピックの Name、API Name、などを記入し、「Next」ボタンをクリック
* Name: Hotel Customer Service
* API Name: Hotel_Customer_Service
* Classification Description: Answer resort policy questions using RAG and unstructured data.
* Scope: Your job is to answer resort policy questions from customers and prospects politely.
- Instruction: Always use the Policy Questions action when a question is asked about hotel policies, experiences policies, wedding policies, or valet service policies.
「Policy Question」を選択し、「Finish」ボタンをクリック
画面右側にあるConversation Previewの入力フィールドに「What wedding venue options are available at Coral Cloud Resorts?」を入力し、実行すると、下のような回答が得られます
まとめ
Agentforce WorkshopのCoral Cloud Sample App環境を利用し、SalesforceでRAGを構築する基本的なステップをご紹介しました。プロビジョニング済みのAmazon S3とData Cloudで、RAGの強力な機能を比較的簡単に体験できたのではないでしょうか。
今回は提供されているS3環境を利用しましたが、実運用では独自のS3バケット等を利用するでしょう。
近いうちに、独自のS3バケット使用時のRAG構築手順や、より高度な設定に関するブログ記事も執筆予定です。ご期待ください。
最後までお読みいただき、ありがとうございました。ぜひAgentforce Workshopの他の演習にも挑戦し、Salesforceの最新機能をさらに深く学んでみてください。
Discussion