【必読】なぜ今、Aura ではなく LWR を選ぶべきなのか?

AgentforceとData 360を活用したLightning Knowledgeの多言語RAG構築手順

A professional, editorial-style 3D illustration representing a sophisticated global AI knowledge system. At the center is a luminous, pulsing digital core that symbolizes an intelligent agent. Surrounding this core are layers of translucent, interconnected data panels and floating geometric nodes that represent a vast vector database. Subtle, glowing typographic characters from various languages—such as Latin, Japanese, and others—drift through the data streams, merging seamlessly into the central core. Beams of light act as retrieval paths, scanning and highlighting specific clusters of information within the network. The setting is a dark, sleek, and minimalist digital void with a shallow depth of field, using a color palette of deep blues, violets, and bright cyan accents to convey a sense of high-tech efficiency, global connectivity, and advanced artificial intelligence. データ・AI連携

この記事はバージョン Summer ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。

グローバル展開している組織や、複数言語でのカスタマーサポートを提供している環境において、Agentforceに多言語の社内ナレッジを学習(グラウンディング)させる要件が増加しています。

本記事では、Lightning Knowledgeの翻訳機能を活用し、Data 360でのベクトルインデックス構築から、プロンプトテンプレート経由でAgentforceにRAG(Retrieval-Augmented Generation)を実装するまでの全体の流れと設定の考え方を解説します。

Knowledgeの取り込み、レトリーバーの作り方、プロンプトテンプレート作成について、基本的な流れと設定手順は以下記事の「Step 1: データ基盤の整備 (Data Cloud & Knowledge)」と「プロンプトテンプレートを作成」をご覧ください。

LWRって何?どんなメリットがあるの?
そんな疑問を解決するにはまずは以下の記事をご覧ください。
Salesforce LWRとは? Experience Cloudの次世代ランタイムを徹底解説

1. Lightning Knowledgeの多言語対応とData 360への取り込み

【公式ドキュメントに基づく仕様】
Lightning Knowledgeで多言語をサポートするには、ナレッジ設定から複数言語を有効化し、記事の翻訳バージョンを作成します。データモデル上、翻訳された記事は KnowledgeArticleVersion オブジェクトのレコードとして管理され、Language 項目で各言語が識別されます。

【実装アプローチと見解】
Data 360への取り込み時には、標準のSalesforce CRMコネクタを使用して KnowledgeArticleVersion をデータストリームとして取り込みます。
DMOへのマッピングの際、データストリームの Language と Knowledge Article Version DMO の Language とを紐づけるようにします。

  • 英語版Knowledgeを公開
  • DMOマッピング
  • 取り込み確認

日本語の記事から英語翻訳レコードを作成して公開します。

Language 同士をマッピングします。

en_US のナレッジDLO取り込みができたことを確認できました。(この後DMOレコードも生成されます)

2. Data 360での検索インデックス作成とレトリーバーの作成

【公式ドキュメントに基づく仕様】
Data 360に取り込んだKnowledgeデータをRAGで利用するためには、検索インデックス(Search Index)を作成する必要があります。対象のテキストデータはシステムによって自動的にチャンク化(細分化)され、ベクトルエンベディングとして保存されます。このプロセスにより、キーワードの完全一致ではなく、セマンティック(意味的)な検索が可能になります。

また、プロンプトテンプレートからData 360のインデックスを検索するには、AI モデル > 取得から「Retriever(レトリーバー)」を作成します。レトリーバーの新規作成時に、ターゲットとして先ほど作成したSearch Indexを指定して有効化します。

【実装アプローチと見解】
多言語のナレッジをベクトル化すると、同一記事の各言語版チャンクがインデックス内に並存することになります。エンベディングモデルが各言語のチャンクをベクトル空間に配置するため、ユーザーが入力したプロンプトの言語に近い意味合いを持つチャンクが、自動的に上位にスコアリングされる仕様として機能します。

また、言語ごとに別々のレトリーバーを作成するのではなく、全言語を含んだ1つのSearch Indexに対して単一のレトリーバーを構成するアーキテクチャを推奨します。言語の分岐はプロンプトテンプレートからの入力変数に任せることで設定の複雑化を防ぎ、メンテナンスコストを抑えることができます。

レトリーバーの検索条件に動的な Language 項目を追加することで、プロンプトテンプレートからパラメーターを渡すことができるようになります。

3. プロンプトテンプレートでのRAG実装

【公式ドキュメントに基づく仕様】
プロンプトビルダーを使用し、Agentforceから呼び出されるテンプレートを作成します。テンプレート内のリソースとして、作成したレトリーバーを挿入し、検索クエリとしてユーザーの入力などの変数をマッピングします。

【実装アプローチと見解】
プロンプトの指示文には言語に関する内容を含める必要はありません。プロンプトテンプレートの入力変数にテキストの Language 変数を設け、レトリーバーの検索パラメーターにその Language を指定します。

  • レトリーバーパラメーター指定
  • プレビュー結果

レトリーバーの動的パラメーター LanguageInput:Language をセットします。

プレビューで英語ナレッジが取得されて英語で回答を生成していることが確認できます。

4. Agentforceアクションとしての設定

【公式ドキュメントに基づく仕様】
作成し有効化したプロンプトテンプレートは、Agentforceエージェントの「アクション」として割り当てることができます。Agentforce Builderで対象のエージェントを開き、エージェントアクションの参照先として該当のプロンプトテンプレートを指定します。

【実装アプローチと見解】
エージェントがメッセージングセッションの「メッセージングユーザーの言語」MessagingSession.EndUserLanguage にアクセスできるよう、変数定義に linked variable を記述します。

variables:
    EndUserLanguage: linked string
        source: @MessagingSession.EndUserLanguage
        description: "This variable may also be referred to as MessagingEndUser ContactId"

EndUserLanguage 変数を使用して、プロンプトテンプレートを実行します。以下サンプル。

subagent product_support:
    (省略)
    reasoning:
        instructions: ->
            run @actions.generate_knowledge_answer
                with "Input:Language" = @variables.EndUserLanguage
                with "Input:Customer_Question" = @system_variables.user_input
                | 検索結果にない情報は回答に含めないでください。
                  トーン: 専門的かつ分かりやすい言葉遣いで回答してください。
                  回答方式:プロンプトテンプレートからの回答文をあなたの判断で削らないでください。
                  不明な場合: 関連する情報が見つからない場合は、正直に「情報が見つかりませんでした」と答えてください。

        actions:
            generate_knowledge_answer: @actions.generate_knowledge_answer
                with "Input:Language" = ...
                with "Input:Customer_Question" = ...
                (省略)

    actions:
        generate_knowledge_answer:
            description: "ナレッジ記事に基づいて、ユーザーの質問に対する回答を生成します。"
            inputs:
                "Input:Customer_Question": string
                    label: "Customer Question"
                    description: "ユーザーの質問文をセットする。"
                    is_required: True
                "Input:Language": string
                    label: "Language"
                    description: "ユーザーが使用する言語をセットする。"
                    is_required: True
                (省略)
            outputs:
                promptResponse: string
                    label: "Prompt Response"
                    description: "The prompt response generated by the action based on the specified prompt and input."
                    is_displayable: True
                    filter_from_agent: False
                (省略)
            target: "generatePromptResponse://Generate_Knowledge_Answer"
            require_user_confirmation: False
            include_in_progress_indicator: False
            label: "Generate Knowledge Answer"

5. まとめ

【公式ドキュメントに基づく仕様】
Salesforceプラットフォーム上での多言語RAG実装は、Lightning Knowledgeの翻訳機能、Data 360の標準コネクタとSearch Index、そしてレトリーバーという標準機能の組み合わせによって実現されます。これにより、外部のベクトルデータベースを構築・同期することなく、セキュアな環境内で完結したセマンティック検索とグラウンディングが可能です。

【実装アプローチと見解】
多言語対応においては、言語ごとにレトリーバーやアクションを細分化するのではなく、ナレッジのインデックスを単一に保ち、プロンプトテンプレート(LLMへのシステムプロンプト)の変数制御によってユーザーへの出力言語を最適化するアーキテクチャが、設定の複雑化を防ぎメンテナンス性を高めます。エージェントへデプロイする前の段階として、Prompt Builderのテスト機能を利用し、様々な言語のクエリに対して正確にナレッジが取得され、ユーザーの意図した言語で回答が生成されるかを入念に検証することを推奨します。

参考URL

Lightning Knowledge の記事の翻訳

取得拡張生成を使用したナレッジのグラウンディング

Agent Script Reference: Variables

Guide to Understanding Multi-Language Support in Agentforce

DXforceの管理人

福島 瑛二

2013年にJavaエンジニアとしてのキャリアをスタート。2019年にSalesforceと出会い、Salesforceエンジニアの道へ。

デザインや UI/UX の観点からもシステムを捉え、ユーザーにとって心地よい体験を実装することにやりがいを感じています。

CRM(顧客データ)や Data Cloud と連携した高度なサイトを目に見える形で表現できる Experience Cloud に大きな可能性を見出しており、バックエンドのデータ構造とフロントエンドの表現力を極めることがこれからの Salesforce エンジニアに求められるスキルだと確信しています。

Trailblazer: efukushima

福島 瑛二をフォローする

読者の声

タイトルとURLをコピーしました
DXforce 案内エージェント