外部ナレッジベースとの接続

この記事では、Difyプラットフォーム外の知識ベースのことを 「外部知識ベース」 と呼びます。

機能概要

コンテンツ検索に高度なニーズを持つ上級開発者にとって、Difyプラットフォームに組み込まれている知識ベース機能やテキスト検索・リコールメカニズムには制約があり、テキストのリコール結果を容易に変更することができません。

テキスト検索とリコールの精度に対する要求が高く、内部情報の管理の必要性があるため、一部のチームは独自にRAGアルゴリズムを開発し、テキストリコールシステムのメンテナンスを行ったり、コンテンツをクラウドベンダーの知識ベースサービス(例:AWS Bedrock)に統合することを選択しています。

中立的なLLMアプリケーション開発プラットフォームであるDifyは、開発者に多様な選択肢を提供することを目指しています。

外部知識ベースとの接続機能を活用することで、Difyプラットフォームと外部知識ベースを容易に接続することが可能になります。APIサービスを通じて、AIアプリケーションはより多くの情報ソースにアクセスできるようになります。具体的には、以下のことを意味します:

  • Difyプラットフォームは、クラウドサービスプロバイダーがホストする知識ベース内のテキストコンテンツを直接取得できます。そのため、開発者はDify内の知識ベースにコンテンツを再度移動させる必要がありません。

  • Difyプラットフォームは、独自に構築した知識ベース内でアルゴリズムによって処理されたテキストコンテンツを直接取得できます。これにより、開発者は自らの知識ベースの情報検索メカニズムに注力し、情報のリコール精度を継続的に最適化・向上させることができます。

以下は、外部ナレッジに接続するための詳細な手順です:

1. 適合外部ナレッジベースAPIを作成する

APIサービスの設定の前に、適合した外部ナレッジベースAPIを作成してください。外部ナレッジベースとDifyの間の統合が成功するように、Difyの外部ナレッジベースAPI仕様書を参照してください。

2. 外部ナレッジAPIを追加する

外部ナレッジベースに接続する際、Difyは現在、検索権限のサポートのみを行い、外部ナレッジベースの最適化や修正のサポートはしていません。開発者は外部ナレッジベースを自己管理する必要があります。

**「ナレッジ」**ページに移動し、右上隅の **「外部ナレッジAPI」**をクリックし、次に **「外部ナレッジAPIを追加」**をクリックします。次の情報を入力するためにページの指示に従ってください:

  • Name、異なる外部ナレッジAPIを区別するためのカスタマイズ可能な名前;

  • API Endpoint、外部ナレッジベースAPIエンドポイントのURL、例:api-endpoint/retrieval;詳しい指示については外部ナレッジAPIを参照してください;

  • APIキー、外部ナレッジへの接続キー、詳しい指示については外部ナレッジベースAPIを参照してください。

3. 外部ナレッジベースの接続

**「ナレッジベース」ページに移動し、「外部ナレッジベースの接続」**をクリックして、パラメータ設定ページに進みます。

以下のパラメータを入力してください:

  • ナレッジベースの名前と説明

  • 外部ナレッジベースAPI

    第2ステップで関連付けた外部ナレッジベースAPIを選択してください。DifyはこのAPIを使用して、外部ナレッジベースに保存されているテキストコンテンツを呼び出します。

  • 外部ナレッジベースID

    関連付ける特定の外部ナレッジベースIDを指定してください。詳細については、外部ナレッジベースAPIの定義を参照してください。

  • リコール設定の調整

    Top K: ユーザーが質問を行うと、外部知識APIから関連性の高いコンテンツセグメントを取得します。このパラメータは、ユーザーの問いに類似したテキストセグメントを選定するために使用します。デフォルト値は3で、数値が高いほど、より多くの関連性のあるテキストセグメントが取得されます。

    Score 閾値: テキストセグメントの選択における類似性の閾値を設定します。このスコアを超えるテキストセグメントのみが取得されます。デフォルト値は0.5で、数値が高いほどテキストと問いの類似性が強く、取得されるテキストの数は少なくなります。

4. 外部ナレッジベースのテストと検索結果

外部ナレッジベースとの接続が確立された後、ユーザーは **「検索結果」**で可能なキーワードをシミュレーションし、取得されるテキストセグメントをプレビューできます。リコール結果に満足できない場合は、リコールパラメータを調整したり、外部ナレッジベースの検索設定を見直したりすることができます。

5. アプリ内で外部ナレッジベースを統合する

  • チャットボット/エージェントタイプのアプリ

    構成ページで外部ナレッジベースを関連付けます

  • チャットフロー/ワークフロータイプのアプリ

    **「ナレッジ検索」**ノードを追加し、外部ナレッジベースを選択します

6. 外部ナレッジベースの管理

「ナレッジベース」 ページでは、外部ナレッジベースのカードの右上にEXTERNALラベルが表示されます。変更が必要なナレッジベースに入って 「設定」 をクリックすることで、以下の項目を変更できます:

  • ナレッジベースの名前と説明

  • 可視範囲

    「Only Me」「All Team Members」、**「Some Team Members」**の3つの権限範囲が提供されます。権限がないユーザーはそのナレッジベースにアクセスできません。ナレッジベースを他のメンバーに公開すると、そのメンバーもナレッジベースを閲覧、編集、削除する権限を持つようになります。

  • リコール設定

    Top K: ユーザーが質問を行った際に、外部知識APIから関連性の高いコンテンツセグメントを取得します。このパラメータは、ユーザーの問いに類似したテキストセグメントを選定するために使用されます。デフォルト値は3で、数値が高いほど、より多くの関連性のあるテキストセグメントが取得されます。

    Score閾値: テキストセグメントの選択における類似性の閾値を設定します。このスコアを超えるテキストセグメントのみが取得されます。デフォルト値は0.5で、数値が高いほどテキストと問いの類似性が強く、取得されるテキストの数は少なくなります。

外部ナレッジベースが関連付けられた 「外部ナレッジベースAPI」「外部ナレッジベースID」 は変更できません。変更が必要な場合は、新しい 「外部ナレッジベースAPI」 を関連付けて再接続してください。

接続示例

AWS Bedrockのナレッジベースに統合する方法

よくある問題

外部ナレッジベース API への接続時に例外が発生し、エラーが発生する時

以下は、返された情報の各エラー コードに対応するエラー プロンプトと解決策:

エラーコード原因解決方法

1001

無効な Authorization header 形式

リクエストの Authorization header 形式を確認してください

1002

検証異常

入力したAPIキーが正しいか確認してください

2001

ナレッジベース存在しない

外部ナレッジベースをチェックしてください

Last updated