メインコンテンツへスキップ
⚠️ このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。
自社で RAG システムを運用している場合や、AWS Bedrock などのサードパーティナレッジサービスにコンテンツをホスティングしている場合、これらの外部ソースを Dify に接続できます。Dify の組み込みナレッジベースへの移行は不要です。 AI アプリケーションは既存のインフラストラクチャから直接情報を取得できます。検索ロジックとコンテンツ管理はユーザー側で完全に制御できます。
外部ナレッジベースのアーキテクチャ
外部ナレッジベースの接続は 3 つのステップで行います
  1. Dify がクエリできる API サービスを構築する
  2. API エンドポイントを Dify に登録する
  3. 登録した API を通じて特定のナレッジソースを接続する
アプリケーション実行時、Dify はエンドポイントに検索リクエストを送信し、返されたチャンクを LLM レスポンスのコンテキストとして使用します。
LlamaCloud に接続する場合は、カスタム API を構築せず LlamaCloud プラグイン をインストールしてください。セットアップの完全なデモは 動画チュートリアル を参照してください。別のナレッジサービス向けにプラグインを構築する場合は、LlamaCloud プラグインの ソースコード を参照できます。
Dify は外部ナレッジベースに対して検索アクセスのみを持ちます。外部コンテンツの変更や管理はできません。ナレッジベースとその検索ロジックは独立して管理してください。

Step 1: 検索 API の構築

外部ナレッジベース API 仕様に準拠した API サービスを構築します。検索クエリを受け取り、類似度スコア付きのテキストチャンクを返す単一の POST エンドポイントが必要です。

Step 2: 外部ナレッジベース API の登録

外部ナレッジベース API には、エンドポイント URL と認証情報が保存されます。複数のナレッジベースで 1 つの API 接続を共有できます。
  1. ナレッジ に移動し、右上の 外部ナレッジベース API をクリックし、外部ナレッジベース API を追加 をクリックします。
  2. 以下のフィールドに入力します:
    • 名前:この API 接続を他と区別するためのラベルです。
    • API エンドポイント:外部ナレッジサービスのベース URL です。Dify はリクエスト送信時に /retrieval を自動的に付加します。
    • API キー:サービスの認証情報です。Dify はこれを Authorization ヘッダーの Bearer トークンとして送信します。
保存時、Dify はエンドポイントにテストリクエストを送信して接続を検証します。

Step 3: 外部ナレッジベースの作成

API の登録後、外部ナレッジソースを Dify に接続します。これにより、外部システムにリンクされたナレッジベースが Dify 内に作成されます。
  1. ナレッジ に移動し、外部ナレッジベースに接続 をクリックします。
    外部ナレッジベースに接続
  2. 以下のフィールドに入力します:
    • 外部ナレッジベース名ナレッジベースの説明(任意)。
    • 外部ナレッジベース API:登録した API 接続を選択します。
    • 外部ナレッジベース ID:外部システム内の特定のナレッジソースの識別子で、API に knowledge_id フィールドとして渡されます。 外部サービスがナレッジベースを区別するために使用する ID です。たとえば、Bedrock のナレッジベース ARN や、独自システムで定義した ID が該当します。
      外部ナレッジベース API外部ナレッジベース ID は作成後に変更できません。別の API やナレッジソースを使用する場合は、新しい外部ナレッジベースを作成してください。
    • 検索設定
      • Top K:クエリごとに取得するチャンクの最大数です。値を大きくすると結果が増えますが、関連性の低いコンテンツが含まれる可能性があります。
      • スコアしきい値:返されるチャンクの最小類似度スコアです。有効にすると、関連性の低い結果をフィルタリングできます。値を高くすると厳密な関連性で絞り込み、低くすると幅広い結果を含めます。 無効の場合、スコアに関係なく Top K の上限まですべての結果が返されます。
作成後、外部ナレッジベースは組み込みナレッジベースと同様にアプリケーションで使用できます。詳細はアプリ内でのナレッジベース統合を参照してください。

トラブルシューティング

接続拒否またはタイムアウト(セルフホスト環境)

Dify は送信 HTTP リクエストを Squid ベースの SSRF プロキシ経由でルーティングします。外部ナレッジサービスが Dify と同じホスト上で稼働している場合、またはドメインが許可リストに登録されていない場合、プロキシがリクエストをブロックします。 接続を許可するには、docker/ssrf_proxy/squid.conf.templateallowed_domains ACL にサービスのドメインを追加してください:
acl allowed_domains dstdomain .marketplace.dify.ai .your-kb-service.com
編集後、SSRF プロキシコンテナを再起動してください。

API レスポンス形式の問題

検索が失敗する場合や予期しない結果が返される場合は、外部ナレッジベース API 仕様に照らして API レスポンスを確認してください。 よくある問題:
  • 各レコードの metadata フィールドはオブジェクト({})である必要があります。null は使用できません。null 値は検索パイプラインでエラーを引き起こします。
  • content フィールドと score フィールドはすべてのレコードに必須です。