チャットフローへの組み込み方

チャットフローにおいてナレッジベースを活用するためのKnowledge Retrievalノードの設定方法と、取得した情報をLLMノードで効果的に利用するためのRAG構成手順について解説します。

1. フロー構成の概要

ナレッジベース連携を行う推奨の最小構成は以下の通りです。

circle-info

左側にある+をクリックすると使用出来るブロック候補が表示されますので、順番に設置して、ノードの左右からでるノードを接続します。

例: Start → Knowledge Retrieval → LLM → Answer

  • Startノード: ユーザーからの質問を受け付けます。

  • Knowledge Retrievalノード: ユーザーの質問をクエリとして、ナレッジベースから関連情報を検索・取得します。

  • LLMノード: 「ユーザーの質問」と「取得したコンテキスト(参考情報)」の両方を受け取り、回答を生成します。

  • Answerノード: 生成された回答をユーザーに返します。

circle-info

Knowledge Retrievalは回答を生成するのではなく、回答に必要な「材料」を集める役割を担います。最終的な回答の品質は、LLMノードのプロンプト設計に依存します。

2. ノード設定のベストプラクティス

Knowledge Retrievalノード

  • クエリ設定: 原則として「ユーザーの入力変数」をそのまま指定します。フローによっては、前段で検索用にキーワード抽出などを行う場合もあります。

  • TopK(取得件数): 3〜5件程度を推奨します。多すぎるとノイズが増え、少なすぎると情報不足になります。

  • Score Threshold(類似度スコア): 0.5〜0.7程度を目安に設定し、関係の薄い情報が混入するのを防ぎます。

LLMノード

Knowledge Retrievalノードの出力(Context)を、システムプロンプト内で{{context}}などの変数として埋め込みます。

プロンプト設計の要点:

  • 根拠の限定: 「提供された参考情報のみに基づいて回答すること」を指示します。

  • 不明時の対応: 参考情報に答えがない場合は、正直に「情報がない」と答えるよう指示し、ハルシネーション(嘘の生成)を防ぎます。

3. プロンプト例

デジタルヒューマン(UneeQ等)での発話を想定し、音声合成(SSML)やアクションタグを含めたシステムプロンプトの例です。

4. 運用上の注意点

検索ヒットなし時の挙動: ナレッジベースからの検索結果が0件だった場合、LLMへ渡すコンテキストが空になります。その場合でも自然に応答できるよう、プロンプトに「情報がない場合の定型句」を含めるか、フロー上で条件分岐(IF/ELSE)を設定することを推奨します。

回答の精度向上: 期待する回答が得られない場合は、Knowledge Retrievalの「検索設定(Top Kや閾値)」を見直すか、ナレッジベース内のデータ(チャンク)を見直してください。

最終更新