知識検索

1 定義

知識ベースからユーザーの質問に関連するテキスト内容を検索し、それを下流のLLMノードのコンテキストとして使用することができます。


2 シナリオ

一般的なシナリオ:外部データ/知識に基づくAI質問応答システム(RAG)を構築。RAGの基本概念についてもっと知る。

下図は最も基本的な知識ベース質問応答アプリケーションの例です。このプロセスの実行ロジックは、ユーザーの質問がLLMノードに渡される前に、知識検索ノードでユーザーの質問に最も関連するテキスト内容を検索し、召喚することです。その後、LLMノード内でユーザーの質問と検索されたコンテキストを一緒に入力し、LLMが検索内容に基づいて質問に答えるようにします。


3 どのように設定するか

設定プロセス:

  1. クエリ変数を選択し、知識ベース内の関連するテキストセグメントを検索するための入力として使用します。一般的な対話型アプリケーションでは、開始ノードのsys.queryをクエリ変数として使用します。

  2. 検索する知識ベースを選択します。オプションとして選択可能な知識ベースは、Dify知識ベース内で事前に作成する必要があります。

  3. 下流ノードを接続し設定します。一般的にはLLMノードです。

出力変数

知識検索の出力変数resultは、知識ベースから検索された関連テキストセグメントです。この変数のデータ構造には、セグメント内容、タイトル、リンク、アイコン、メタデータ情報が含まれています。

下流ノードの設定

一般的な対話型アプリケーションでは、知識ベース検索の下流ノードは通常LLMノードであり、知識検索の出力変数resultはLLMノード内のコンテキスト変数に関連付けられて設定されます。関連付け後、プロンプトの適切な位置にコンテキスト変数を挿入することができます。

コンテキスト変数は、LLMノード内で定義された特殊な変数タイプで、プロンプト内に外部検索されたテキスト内容を挿入するために使用されます。

ユーザーが質問すると、関連するテキストが知識検索で召喚された場合、そのテキスト内容がコンテキスト変数の値としてプロンプトに挿入され、LLMが質問に答えます。関連するテキストが検索されなかった場合、コンテキスト変数の値は空となり、LLMは直接ユーザーの質問に答えます。

この変数は、LLMが質問に答える際のプロンプトコンテキストとして外部知識の参照に使用されるだけでなく、そのデータ構造にセグメントの引用情報が含まれているため、アプリケーション側の引用と帰属機能もサポートします。

Last updated