この文書では、Difyプラットフォームとは独立したナレッジベースを総称して**「外部ナレッジベース」**と呼びます。
高度なコンテンツ検索の要件を持つ上級開発者にとって、Difyプラットフォームに組み込まれたナレッジベース機能とテキスト検索・取得メカニズムには制約があり、検索結果を簡単に変更することができません。
テキスト検索と取得の精度に高い要求を持ち、内部資料の管理ニーズを満たすために、一部のチームは独自にRAGアルゴリズムを開発し、個人のテキスト取得システムを維持したり、コンテンツをクラウドプロバイダのナレッジベースサービス(例:AWS Bedrock)に統合したりしています。
中立的なLLMアプリケーション開発プラットフォームであるDifyは、開発者にさまざまな選択肢を提供することを目指しています。
外部ナレッジベースに接続する機能を使うことで、Difyプラットフォームと外部ナレッジベースを接続できます。APIサービスを通じて、AIアプリケーションはより多くの情報源からデータを取得できるようになります。具体的には:
Principle of external knowledge base connection
以下は外部ナレッジベースに接続するための詳細な手順です:
Difyとの接続を成功させるためには、外部ナレッジベースがDifyが作成した外部ナレッジベースAPI仕様を慎重に読み、APIサービスを構築する必要があります。
外部ナレッジベースを関連付ける
現在、Difyは外部ナレッジベースに対する最適化や変更をサポートしておらず、検索権限のみを有しています。開発者は外部ナレッジベースを自己管理する必要があります。
“ナレッジベース” ページに移動し、右上の “外部ナレッジベースAPI” をクリックし、 “外部ナレッジベースAPIを追加” を選択します。
ページの指示に従い、以下の内容を順番に入力してください:
api-endpoint/retrieval
);詳細な説明は外部ナレッジベースAPIを参照してください。外部ナレッジベースに接続する
“ナレッジベース” ページに移動し、追加したナレッジベースカードの下にある “外部ナレッジベースに接続” をクリックして、パラメーター設定ページに移動します。
以下のパラメータを入力してください:
ナレッジベースの名称と説明
外部ナレッジベースAPI: 第二ステップで関連付けられた外部ナレッジベースAPIを選択します。DifyはAPI接続を通じて、外部ナレッジベースに保存されているテキスト内容を呼び出します。
外部ナレッジベースID: 関連付ける特定の外部ナレッジベースIDを指定します。詳細については外部ナレッジベースAPIを参照してください。
召回設定の調整
Top K: ユーザーが質問を発起した際に、外部知識APIに関連性の高いコンテンツ片を要求します。このパラメータは、ユーザーの質問との類似度が高いテキスト片をフィルタリングするために使用されます。デフォルト値は3で、数値が大きいほど関連性のあるテキスト片が多く召回されます。
スコア閾値: テキスト片フィルタリングの類似度閾値で、設定されたスコアを超えるテキスト片のみが召回されます。デフォルト値は0.5です。数値が高いほど、テキストと質問要求の類似度が高く、召回されるテキストの数が少なくなり、結果的により精度が高まります。
外部ナレッジベースの接続と召回のテスト
接続が確立された後、開発者は 「召回テスト」 で可能な質問キーワードをシミュレーションし、外部ナレッジベースから召回されたテキスト片をプレビューできます。召回結果に満足できない場合は、召回パラメータの変更や外部ナレッジベースの検索設定の調整を試みてください。
アプリ内で外部ナレッジベースを統合
Chatbot / エージェント型アプリの編成ページにある 「コンテキスト」 で、EXTERNAL
ラベルの付いた外部ナレッジベースを選択します。
チャットフロー / ワークフロー型アプリに 「知識検索」 ノードを追加し、EXTERNAL
ラベルの付いた外部ナレッジベースを選択します。
外部ナレッジベースの管理
「ナレッジベース」ページでは、外部ナレッジベースのカードの右上にEXTERNALラベルが表示されます。変更が必要なナレッジベースに入って、**「設定」**をクリックして以下の内容を変更します:
ナレッジベースの名称と説明
可視範囲: 「自分だけ」、「全チームメンバー」、「一部のチームメンバー」の3つの権限範囲を提供します。権限のない人はそのナレッジベースにアクセスできません。ナレッジベースを他のメンバーに公開することを選択した場合、他のメンバーもそのナレッジベースの閲覧、編集、および削除権限を持つことになります。
召回設定
Top K: ユーザーが質問をした際に、外部知識APIに関連性の高いコンテンツ片を要求します。このパラメータは、ユーザーの質問との類似度が高いテキスト片をフィルタリングするために使用されます。デフォルト値は3で、数値が大きいほど関連性のあるテキスト片が多く召回されます。
スコア閾値: テキスト片フィルタリングの類似度閾値で、設定されたスコアを超えるテキスト片のみが召回されます。デフォルト値は0.5です。数値が高いほど、テキストと質問要求の類似度が高く、召回されるテキストの数が少なくなり、結果的により精度が高まります。
外部ナレッジベースに関連付けられた 「外部ナレッジベースAPI」 と 「外部知識ID」 は変更できません。変更が必要な場合は、新しい「外部ナレッジベースAPI」を関連付けて再接続してください。
ナレッジベースの設置
DifyはLlamaCloudプラグインを公式に提供しており、LlamaCloudナレッジベースに簡単に接続することができます。
LlamaCloud
を検索しますLlamaCloudプラグインを使用すると、カスタムAPIを作成することなく、DifyプラットフォームでLlamaCloudの強力な検索機能を直接利用できます。
詳細については、プラグインのGitHubリポジトリを参照してください。
以下の動画では、LlamaCloudプラグインを使用して外部ナレッジベースに接続する方法を詳しく説明しています:
外部ナレッジベースAPI接続時に異常が発生し、エラーが表示された場合の対処法は?
以下は、返された各エラーコードに対するエラーメッセージと解決策です:
エラーコード | エラーメッセージ | 解決策 |
---|---|---|
1001 | 無効なAuthorization header形式 | リクエストのAuthorization header形式を確認してください |
1002 | 認証異常 | 入力したAPIキーが正しいか確認してください |
2001 | ナレッジベースが存在しない | 外部ナレッジベースを確認してください |