via pixabay.com
はじめに
こんにちは!テラスカイのY.Hです!
皆さんのSalesforce組織に眠る、たくさんのPDFファイル。
もし、AIエージェントがその中身まで深く理解し、的確な回答を生成してくれたら、さらに業務が効率化すると思いませんか?
とはいえ、
「Data Cloudの設定って、何だか複雑そう…」
「そもそもPDFの中身を、どうやってAIに理解させるの?」
といった疑問の声もよく耳にします。
そこで本記事では、そんなSalesforce管理者・開発者の皆さんと一緒に、カスタムオブジェクトに添付されたPDFをAIの"知識"に変え、的確な応答を引き出すまでの一連の手順をハンズオン形式で分かりやすく解説します!
皆さんのSalesforce組織に眠る、たくさんのPDFファイル。
もし、AIエージェントがその中身まで深く理解し、的確な回答を生成してくれたら、さらに業務が効率化すると思いませんか?
とはいえ、
「Data Cloudの設定って、何だか複雑そう…」
「そもそもPDFの中身を、どうやってAIに理解させるの?」
といった疑問の声もよく耳にします。
そこで本記事では、そんなSalesforce管理者・開発者の皆さんと一緒に、カスタムオブジェクトに添付されたPDFをAIの"知識"に変え、的確な応答を引き出すまでの一連の手順をハンズオン形式で分かりやすく解説します!
概要
RAGについて
具体的な設定に入る前に、今回のシステムの全体像を掴んでおきましょう。鍵となる技術が RAG(ラグ) です。
RAG(検索拡張生成)とは、その名の通り「AIが外部の知識を"検索"してから回答を"生成"する仕組み」のこと。これによって、AIは学習していない社内固有のPDF情報なども、根拠を持って正確に回答できるようになります。
以下は、AIエージェントがPDFの情報を取得して回答する仕組みの全体像です。
RAG(検索拡張生成)とは、その名の通り「AIが外部の知識を"検索"してから回答を"生成"する仕組み」のこと。これによって、AIは学習していない社内固有のPDF情報なども、根拠を持って正確に回答できるようになります。
以下は、AIエージェントがPDFの情報を取得して回答する仕組みの全体像です。
Data Cloud:
Salesforceのレコードデータや、そこに添付されたPDFファイルを取り込み、AIが検索しやすい形に変換・格納しておく役割を担います。
Salesforceのレコードデータや、そこに添付されたPDFファイルを取り込み、AIが検索しやすい形に変換・格納しておく役割を担います。
今回作成するハンズオン成果物について
技術的な背景を理解したところで、次はこのハンズオンで「何を作るのか」というゴールを具体的に見ていきましょう。
■ 成果物
顧客の要望に合った商材を検索し、提案するプロンプトテンプレート
(※長くなるためエージェントの構築までは行いません)
■ 登場するカスタムオブジェクト
①「顧客要望」オブジェクト(CustomersNeeds__c)
顧客からヒアリングした要望や課題を記録しておくためのオブジェクトです。
API参照名: CustomersNeeds__c
項目:
・顧客要望No:テキスト型
・顧客要望の詳細:ロングテキスト型
・提案したい商材(仮説メモ):ロングテキスト型
・要望タイトル:テキスト型
②「商材」オブジェクト(MyContent__c)
自社で取り扱っている商材の情報を管理するオブジェクトです。各レコードには、その商材の詳細な提案書PDFが添付されています。
項目:
・コンテンツNo:テキスト型
・製造メーカー:テキスト型
・商材タイトル:テキスト型
・セールストーク:ロングテキスト型
■ 成果物
顧客の要望に合った商材を検索し、提案するプロンプトテンプレート
(※長くなるためエージェントの構築までは行いません)
■ 登場するカスタムオブジェクト
①「顧客要望」オブジェクト(CustomersNeeds__c)
顧客からヒアリングした要望や課題を記録しておくためのオブジェクトです。
API参照名: CustomersNeeds__c
項目:
・顧客要望No:テキスト型
・顧客要望の詳細:ロングテキスト型
・提案したい商材(仮説メモ):ロングテキスト型
・要望タイトル:テキスト型
②「商材」オブジェクト(MyContent__c)
自社で取り扱っている商材の情報を管理するオブジェクトです。各レコードには、その商材の詳細な提案書PDFが添付されています。
項目:
・コンテンツNo:テキスト型
・製造メーカー:テキスト型
・商材タイトル:テキスト型
・セールストーク:ロングテキスト型
ハンズオン:具体的な設定手順
Step 1:事前準備 (Data Cloudの有効化と権限設定)
■ 権限セットの割り当て
・実行ユーザーに「Data Cloud 管理者」の権限セットを割り当てる
■ Data Cloudの初期設定
・設定/Data Cloud 設定ホーム/「使用を開始」を押下
・設定/Einstein 設定/Einstein を有効化
・設定/Agentforce エージェント/Agentforceを有効化
■ 権限セットの設定
・設定/権限セット/Data Cloud Salesforce Connector/アプリケーション権限/コンテンツ/「禁止されていないファイルをクエリ」にチェックを入れる
・設定/権限セット/Data Cloud Salesforce Connector/アプリケーション権限/ナレッジの管理/「ナレッジの参照を許可」にチェックを入れる
■ 機能設定
・設定/SalesforceFiles/一般設定/「Data Cloud へのファイルの取り込みを有効化」にチェックを入れる
・実行ユーザーに「Data Cloud 管理者」の権限セットを割り当てる
■ Data Cloudの初期設定
・設定/Data Cloud 設定ホーム/「使用を開始」を押下
・設定/Einstein 設定/Einstein を有効化
・設定/Agentforce エージェント/Agentforceを有効化
■ 権限セットの設定
・設定/権限セット/Data Cloud Salesforce Connector/アプリケーション権限/コンテンツ/「禁止されていないファイルをクエリ」にチェックを入れる
・設定/権限セット/Data Cloud Salesforce Connector/アプリケーション権限/ナレッジの管理/「ナレッジの参照を許可」にチェックを入れる
■ 機能設定
・設定/SalesforceFiles/一般設定/「Data Cloud へのファイルの取り込みを有効化」にチェックを入れる
Step 2:データストリームの設定
前提知識:「ファイル」の情報は以下3つのオブジェクトにより管理されています。
より詳細な情報を知りたい方はこちらの記事をご参照ください。
ContentDocument:ファイルの情報
ContentVersion:ファイルの実体
ContentDocumentLink:ファイルの関連付け
■ ファイル添付取り込みの設定
1. Data Cloud で、[データストリーム] タブに移動し、 [新規]をクリック
2. Salesforce CRM データソースを選択し、[次へ]をクリック
3. Salesforce 組織を選択し、「オブジェクトを表示」をクリック
4. ContentDocumentを選択し、[次へ]をクリック
5. ContentDocumentの詳細画面に遷移後、オブジェクトカテゴリを「その他」に指定し、[次へ]をクリック
6. 「リリース」をクリック
上記手順を、ContentVersion、ContentDocumentLink、MyContent__c(ファイルが添付されているカスタムオブジェクト)に対しても同様に行う。
見落としやすいポイントとして、「データストリーム作成前に添付されたファイルはData Cloudに取り込まれない」という仕様があるためご注意ください。
より詳細な情報を知りたい方はこちらの記事をご参照ください。
ContentDocument:ファイルの情報
ContentVersion:ファイルの実体
ContentDocumentLink:ファイルの関連付け
■ ファイル添付取り込みの設定
1. Data Cloud で、[データストリーム] タブに移動し、 [新規]をクリック
2. Salesforce CRM データソースを選択し、[次へ]をクリック
3. Salesforce 組織を選択し、「オブジェクトを表示」をクリック
4. ContentDocumentを選択し、[次へ]をクリック
5. ContentDocumentの詳細画面に遷移後、オブジェクトカテゴリを「その他」に指定し、[次へ]をクリック
6. 「リリース」をクリック
上記手順を、ContentVersion、ContentDocumentLink、MyContent__c(ファイルが添付されているカスタムオブジェクト)に対しても同様に行う。
見落としやすいポイントとして、「データストリーム作成前に添付されたファイルはData Cloudに取り込まれない」という仕様があるためご注意ください。
Step 3:データレイクオブジェクト(DLO)の確認
1. Data Cloud で、[データレイクオブジェクト] タブに移動
2. 以下4つのデータレイクオブジェクトがリストされていることを確認
・ContentDocument_Home
・ContentVersion_Home
・ContentDocumentLink_Home
・MyContent__c_Home
2. 以下4つのデータレイクオブジェクトがリストされていることを確認
・ContentDocument_Home
・ContentVersion_Home
・ContentDocumentLink_Home
・MyContent__c_Home
Step 4:データモデル(DMO)へのマッピング
※Content Document Versionのみ自動でマッピングが行われます。
■ ContentDocument DLO を DMO にマッピングする
1. Data Cloud で、[データレイクオブジェクト] タブをクリック
2. ContentDocument_Homeを開き、データマッピングの「開始」ボタンをクリック
3. オブジェクトの選択/標準データモデル/「Content Document」を選択し、「完了」をクリック
4. 以下添付画像の通りマッピングを行う(参考Helpページはこちら)
■ ContentDocument DLO を DMO にマッピングする
1. Data Cloud で、[データレイクオブジェクト] タブをクリック
2. ContentDocument_Homeを開き、データマッピングの「開始」ボタンをクリック
3. オブジェクトの選択/標準データモデル/「Content Document」を選択し、「完了」をクリック
4. 以下添付画像の通りマッピングを行う(参考Helpページはこちら)
■ ContentDocumentLink DLO を DMO にマッピングする
1. Data Cloud で、[データレイクオブジェクト] タブをクリック
2. ContentDocumentLink_Homeを開き、データマッピングの「開始」ボタンをクリック
3. オブジェクトの選択/標準データモデル/「Content Document Relationship」を選択し、「完了」をクリック
4. 以下添付画像の通りマッピングを行う(参考Helpページはこちら)
1. Data Cloud で、[データレイクオブジェクト] タブをクリック
2. ContentDocumentLink_Homeを開き、データマッピングの「開始」ボタンをクリック
3. オブジェクトの選択/標準データモデル/「Content Document Relationship」を選択し、「完了」をクリック
4. 以下添付画像の通りマッピングを行う(参考Helpページはこちら)
■ MyContent__c DLO を DMO にマッピングする
1. Data Cloud で、[データレイクオブジェクト] タブをクリック
2. MyContent__c_Homeを開き、データマッピングの「開始」ボタンをクリック
3. オブジェクトの選択/カスタムデータモデル/「MyContent_Home」を作成し、「保存」をクリック
3. 以下添付画像の通りマッピングを行う
1. Data Cloud で、[データレイクオブジェクト] タブをクリック
2. MyContent__c_Homeを開き、データマッピングの「開始」ボタンをクリック
3. オブジェクトの選択/カスタムデータモデル/「MyContent_Home」を作成し、「保存」をクリック
3. 以下添付画像の通りマッピングを行う
Step 5:DMOリレーションの構築
■ ContentDocument DMOのリレーション構築
1. Data Cloud で、[データモデル] タブをクリック
2. Content Documentデータモデルを開き、「リレーション」タブをクリック
3. 以下添付画像の通りにリレーションを構築する
1. Data Cloud で、[データモデル] タブをクリック
2. Content Documentデータモデルを開き、「リレーション」タブをクリック
3. 以下添付画像の通りにリレーションを構築する
■ Content Document Version DMOのリレーション構築
1. Data Cloud で、[データモデル] タブをクリック
2. Content Document Versionデータモデルを開き、「リレーション」タブをクリック
3. 以下添付画像の通りにリレーションを構築する
1. Data Cloud で、[データモデル] タブをクリック
2. Content Document Versionデータモデルを開き、「リレーション」タブをクリック
3. 以下添付画像の通りにリレーションを構築する
■ Content Document Relationship DMOのリレーション構築
1. Data Cloud で、[データモデル] タブをクリック
2. Content Document Relationshipデータモデルを開き、「リレーション」タブをクリック
3. 以下添付画像の通りにリレーションを構築する
1. Data Cloud で、[データモデル] タブをクリック
2. Content Document Relationshipデータモデルを開き、「リレーション」タブをクリック
3. 以下添付画像の通りにリレーションを構築する
Step 6:検索インデックスの作成
1. Data Cloud で、[検索インデックス] タブをクリック
2. 「新規」ボタンをクリックし、「高度な設定」を選び次へ
3. 検索種別とソースオブジェクトを選択(ファイルが添付されるカスタムオブジェクトを選択)
2. 「新規」ボタンをクリックし、「高度な設定」を選び次へ
3. 検索種別とソースオブジェクトを選択(ファイルが添付されるカスタムオブジェクトを選択)
4. チャンク化する項目を選択し、「添付ファイルを含める」をクリックし、Content Document Versionをクリック
(※ここで「添付ファイルを含める」ボタンがグレーアウトしている場合、DMOリレーションの構築ができていない可能性が高いです)
(※ここで「添付ファイルを含める」ボタンがグレーアウトしている場合、DMOリレーションの構築ができていない可能性が高いです)
5. ベクトル化戦略はデフォルトのまま「次へ」をクリック
(ここではE5 Large V2 Embedding Modelを使用)
6. 絞り込む項目についてもデフォルトのまま「次へ」をクリック
7. ランキングについてもデフォルトのまま「次へ」をクリック
8. 最後に検索インデックス設定の詳細を確認し、「保存」をクリック
(ここではE5 Large V2 Embedding Modelを使用)
6. 絞り込む項目についてもデフォルトのまま「次へ」をクリック
7. ランキングについてもデフォルトのまま「次へ」をクリック
8. 最後に検索インデックス設定の詳細を確認し、「保存」をクリック
Step 7:データエクスプローラーの確認
■ 検索インデックスのステータスを確認
1. Data Cloud で、[検索インデックス] タブをクリック
2. Step6で作成した検索インデックスのステータスが「準備完了」になっていることを確認
1. Data Cloud で、[検索インデックス] タブをクリック
2. Step6で作成した検索インデックスのステータスが「準備完了」になっていることを確認
■ データエクスプローラーにてPDFの内容がチャンク化されていることを確認
1. Data Cloud で、「データエクスプローラー] タブをクリック
2. データモデルオブジェクトの「MyContent__c_Home chunk」を選択
3. 以下添付画像のようにPDFの内容がチャンク化されていることを確認する
1. Data Cloud で、「データエクスプローラー] タブをクリック
2. データモデルオブジェクトの「MyContent__c_Home chunk」を選択
3. 以下添付画像のようにPDFの内容がチャンク化されていることを確認する
Step 8:プロンプトテンプレートで動作確認
今回はエージェントの構築まで行うと長くなってしまうため、プロンプトビルダーにて検証を行います。
1. 設定/プロンプトビルダー/「新規プロンプトテンプレート」をクリック
2. 以下添付画像の通り設定を行い、新規のプロンプトテンプレートを作成する
1. 設定/プロンプトビルダー/「新規プロンプトテンプレート」をクリック
2. 以下添付画像の通り設定を行い、新規のプロンプトテンプレートを作成する
3. プロンプトを作成し、「保存&プレビュー」をクリック
4. 「顧客要望」レコードの内容にマッチする「商材」レコードを提案できていることを確認する
(レコードの項目情報のみならず、添付PDFに記載の価格情報やその他詳細情報が出力されていることが確認できる)
4. 「顧客要望」レコードの内容にマッチする「商材」レコードを提案できていることを確認する
(レコードの項目情報のみならず、添付PDFに記載の価格情報やその他詳細情報が出力されていることが確認できる)
入力に使用した「顧客要望」レコード:
出力された「商材」レコード:
複数の商材レコードの中から「顧客要望」レコードにマッチする以下の「商材」レコードが選ばれました
複数の商材レコードの中から「顧客要望」レコードにマッチする以下の「商材」レコードが選ばれました
おわりに
最後までお読みいただき、ありがとうございました!
ハンズオン、お疲れ様でした。
Data Cloudを使うことでSalesforce上のPDFファイルの内容について検索可能となります。
本記事で、その第一歩を体験していただけたなら幸いです。
今回の商材提案だけでなく、社内マニュアルのナレッジ化や過去の契約書参照など、この技術の応用範囲は非常に広いです。この記事が、皆さんのAI活用をさらに加速させるきっかけとなれば幸いです。
また次回のブログでお会いしましょう!
ハンズオン、お疲れ様でした。
Data Cloudを使うことでSalesforce上のPDFファイルの内容について検索可能となります。
本記事で、その第一歩を体験していただけたなら幸いです。
今回の商材提案だけでなく、社内マニュアルのナレッジ化や過去の契約書参照など、この技術の応用範囲は非常に広いです。この記事が、皆さんのAI活用をさらに加速させるきっかけとなれば幸いです。
また次回のブログでお会いしましょう!
参考
・すべての Salesforce オブジェクトからデータクラウドにファイル添付を取り込む:https://help.salesforce.com/s/articleView?id=data.c360_a_unstructured_data_connect_content_document.htm&type=5
・コンテンツオブジェクトデータマッピング:https://help.salesforce.com/s/articleView?id=data.c360_a_unstructured_data_connect_content_data_mappings.htm&type=5
・高度な設定でベクター検索インデックスを作成する:https://help.salesforce.com/s/articleView?id=data.c360_a_search_index_create_vector_index_config.htm&type=5
・ガイド: Agentforce データライブラリのセットアップとトラブルシューティング、知識に基づいた質問への回答:https://help.salesforce.com/s/articleView?id=004333412&type=1
・Salesforceの「ファイル」を使ってみよう:https://base.terrasky.co.jp/articles/7KH40
・コンテンツオブジェクトデータマッピング:https://help.salesforce.com/s/articleView?id=data.c360_a_unstructured_data_connect_content_data_mappings.htm&type=5
・高度な設定でベクター検索インデックスを作成する:https://help.salesforce.com/s/articleView?id=data.c360_a_search_index_create_vector_index_config.htm&type=5
・ガイド: Agentforce データライブラリのセットアップとトラブルシューティング、知識に基づいた質問への回答:https://help.salesforce.com/s/articleView?id=004333412&type=1
・Salesforceの「ファイル」を使ってみよう:https://base.terrasky.co.jp/articles/7KH40