ナレッジベースとの統合
ナレッジベースは、外部の知識を大規模言語モデルに提供し、ユーザーの質問に正確に回答できるように活用されます。Difyのアプリケーションタイプを通じて作成したナレッジベースを関連付けることが可能です。
チャットボットの具体的な使用手順は以下の通りです:
- スタジオ - 最初から作成、チャットボットを作成します。
- コンテキスト設定に進み、追加をクリックして作成済みのナレッジベースを選択します。
- コンテキスト設定 - パラメータ設定で召回戦略を構成します。
- 機能の追加で引用と帰属を有効にします。
- デバッグとプレビューでナレッジベースに関連するユーザーの質問を入力し、デバッグを行います。
- デバッグが完了したら、AIナレッジベースQAアプリケーションとして保存して公開します。
ナレッジベースの関連付けと召回モードの設定
アプリケーションのコンテキストに複数のナレッジベースが関連付けられている場合は、より正確な検索結果を得るために召回モードを設定する必要があります。コンテキスト - パラメータ設定 - 召回設定に進んでください。
召回設定
検索エンジンは、関連するすべてのナレッジベース内でユーザーの質問に関連するテキストコンテンツを検索し、複数の関連ドキュメントを統合します。以下のテクニカルフローチャートは召回戦略のプロセスを示しています:
ユーザーの意図に基づいて、すべての「コンテキスト」に追加されたナレッジベースを同時に検索し、関連するテキスト断片を複数のナレッジベースから取得します。最もユーザーの質問に一致するコンテンツを選択し、最終的にRerank戦略を使用して最適なコンテンツを見つけてユーザーに回答します。この方法は、より科学的な検索原理に基づいています。
例として、AアプリケーションのコンテキストにK1、K2、K3の3つのナレッジベースが関連付けられている場合、ユーザーが質問を入力すると、これら3つのナレッジベースに対してクエリを実行し、関連するコンテンツを統合します。最適なコンテンツを見つけるためにRerank戦略を使用し、ユーザーの質問と最も関連性の高いコンテンツを特定します。これにより、結果がより正確かつ信頼性の高いものになります。
実際のQAシナリオでは、各ナレッジベースのコンテンツのソースや検索方法が異なる場合があります。複数の異なるコンテンツが返される場合は、Rerank戦略を利用することで、より科学的なコンテンツソートメカニズムを実現できます。これにより、候補となるコンテンツリストがユーザーの質問にどれだけ一致しているかを確認し、複数のナレッジベース間のソート結果を改善して最適なコンテンツを見つけ出すことができ、回答の品質やユーザーエクスペリエンスを向上させることが可能です。
Rerankの使用コストとビジネスニーズを考慮し、マルチ召回モードには以下の2つのRerank設定が用意されています:
ウェイト設定
この設定では、外部Rerankモデルを構成する必要はありません。コンテンツの再ソートに追加コストはかかりません。意味やキーワードの重み比率を調整することで、最適なコンテンツマッチング戦略を選択できます。
-
意味値が1の場合
意味検索モードのみを有効にします。埋め込みモデルを活用し、クエリ内にナレッジベースに正確な語彙が含まれていなくてもベクトル距離を計算して検索の深さを向上させ、正しいコンテンツを返します。また、複数言語のコンテンツを処理する際にも、意味検索は異なる言語間の意味変換を捉え、より正確なクロス言語検索結果を提供します。
-
キーワード値が1の場合
キーワード検索モードのみを有効にします。ユーザーが入力した情報テキストをナレッジベース全体で一致させ、ユーザーが正確な情報や用語を把握している場合に適しています。この方法は計算リソースを低減し、大量の文書を持つナレッジベース内で迅速に検索するのに向いています。
-
カスタムキーワードと意味重み
意味検索またはキーワード検索モードのみを有効にするのではなく、柔軟なカスタム重み設定を提供します。両者の重みを継続的に調整し、ビジネスシナリオに最適な重み比率を見つけることができます。
Rerank モデル
Rerank モデルは外部のスコアリングシステムであり、ユーザーの質問と各候補ドキュメントとの関連スコアを計算します。そして、それに基づいて意味のある順位付け結果を改善し、関連性の高いドキュメントリストを優先的に返します。
この方法は追加のコストが発生する可能性がありますが、ナレッジベースのコンテンツソースが複雑な場合に特に効果を発揮します。例えば、意味検索とキーワードマッチングが混在するコンテンツや、複数の言語で構成されたコンテンツの返却がある場合などです。
さらに詳しい情報は、リランクメカニズムをご覧ください。
Dify は現在、複数の Rerank モデルをサポートしており、“モデルプロバイダー” ページに Rerank モデル(例:Cohere、Jina AI など)の API キーを入力することができます。
モデルプロバイダー内での Rerank モデルの設定
調整可能なパラメータ
-
TopK
ユーザーの質問に最も類似したテキストセグメントを選定するために使用されます。システムは、モデルに採用されたコンテキストウィンドウのサイズに基づいて、取得するセグメントの数を動的に調整します。数値が高いほど、取得されるテキストセグメントの数が増えます。
-
スコア閾値
テキストセグメントを選択する際に使用される類似度の閾値を設定します。ベクトル検索による類似度スコアは、この閾値を上回る必要があり、数値が高いほど取得されるテキストの数は減少します。
複数のルートを持つ取得モードは、複数のナレッジベースを検索する際に高品質な取得効果を実現できますので、取得モードを複数のルートに設定することをお勧めします。
よくある質問
-
複数のルート取得での Rerank 設定の選択方法
ユーザーが正確な情報や用語を知っている場合、キーワード検索によって正確な一致結果を引き出せる場合は、“重み設定”でキーワードを 1 に設定してください。
ナレッジベースに正確な単語が含まれていない場合や、クロス言語クエリが存在する場合は、“重み設定”で意味を 1 に設定することをお勧めします。
ビジネスユーザーがユーザーの実際の質問シナリオに比較的精通しており、意味やキーワードの比率を自発的に調整したい場合は、“重み設定”で比率を調整することをお勧めします。
ナレッジベースの内容が複雑で、意味やキーワードなどの単純な条件では一致できない場合、より正確な回答が求められ、追加の費用を支払うことを考慮する場合は、Rerank モデルを使用してコンテンツ検索を行うことをお勧めします。
-
“重み設定”が見つからないか、Rerank モデルの設定が必要な場合の対処方法
ナレッジベースの検索方法がテキスト取得に与える影響は次のとおりです:
-
複数のナレッジベースを引用する際に “重み設定” を調整できず、エラーが表示される場合の対処方法
この問題が発生するのは、引用されたコンテキスト内で使用されている複数のナレッジベースが一貫していない埋め込みモデルを使用しているためです。コンテンツの競合を避けるために、“モデルプロバイダー”で Rerank モデルを設定して有効にするか、ナレッジベースの検索設定を統一することをお勧めします。
-
複数のルート取得モードの下で “重み設定” オプションが見つからず、Rerank モデルしか表示されない場合
ナレッジベースが「エコノミー」モードのインデックス設定を使用しているかどうかを確認してください。もしそうであれば、「高品質」モードのインデックス設定に切り替えてください。