Dify
日本語
日本語
  • 入門
    • Difyへようこそ
      • 特性と技術仕様
      • モデルプロバイダーリスト
    • クラウドサービス
    • コミュニティ版
      • Docker Compose デプロイ
      • ローカルソースコードで起動
      • aaPanelでのデプロイ方法
      • フロントエンドDockerコンテナを単独起動
      • 環境変数の説明
      • よくある質問
    • Dify Premium
    • Dify 教育版
  • マニュアル
    • モデル
      • 新しいプロバイダーの追加
      • 事前定義されたモデルの追加
      • カスタムモデルの追加
      • インタフェース
      • 配置ルール
      • 負荷分散
    • アプリ・オーケストレーション
      • アプリの作成
      • チャットボット
        • 複数モデルのデバッグ
      • エージェント
      • ツールキット
        • コンテンツモデレーション
    • ワークフロー
      • キーコンセプト
      • 変数
      • ノードの説明
        • 開始
        • 終了
        • 回答
        • LLM
        • 知識検索
        • 質問分類
        • 条件分岐
        • コード実行
        • テンプレート
        • テキスト抽出ツール
        • リスト処理
        • 変数集約
        • 変数代入
        • 反復処理(イテレーション)
        • パラメータ抽出
        • HTTPリクエスト
        • エージェント
        • ツール
        • 繰り返し処理(ループ)
      • ショートカットキー
      • オーケストレートノード
      • ファイルアップロード
      • エラー処理
        • 事前定義されたエラー処理ロジック
        • エラータイプの概要
      • 追加機能
      • プレビューとデバッグ
        • プレビューと実行
        • ステップ実行
        • 対話/実行ログ
        • チェックリスト
        • 実行履歴
      • アプリケーション公開
      • JSON形式での出力
      • 変更通知:画像アップロード機能がファイルアップロード機能に統合されました
    • ナレッジベース
      • ナレッジベース作成
        • 1. オンラインデータソースの活用
          • 1.1 Notion からデータをインポート
          • 1.2 Webサイトからデータをインポート
        • 2. チャンクモードの指定
        • 3. インデックス方式と検索オプションの設定
      • ナレッジベースの管理
        • ナレッジベース内ドキュメントの管理
        • APIを活用したナレッジベースのメンテナンス
      • メタデータ
      • アプリ内でのナレッジベース統合
      • リコールテスト/引用帰属
      • ナレッジベースの要求頻度制限
      • 外部ナレッジベースとの接続
      • 外部ナレッジベースAPI
    • ツール
      • クイック統合ツール
      • 高度統合ツール
      • ツールの設定
        • Google
        • Bing
        • SearchApi
        • StableDiffusion
        • Perplexity Search
        • AlphaVantage 株式分析
        • Dall-e
        • Youtube
        • Serper
        • SearXNG
        • SiliconFlow(Flux AI サポート)
        • ComfyUI
    • アプリ公開
      • シングルページWebアプリとして公開
        • Web アプリの設定
        • テキスト生成アプリ
        • 対話型アプリ
      • Webサイトへの埋め込み
      • API基づく開発
      • フロントエンドテンプレートに基づいた再開発
    • アノテーション
      • ログとアノテーション
      • アノテーション返信
    • モニタリング
      • データ分析
      • 外部Opsツール統合
        • LangSmithを統合
        • LangFuseを統合
        • Opikを統合
    • 拡張
      • API 拡張
        • Cloudflare Workers を使用した API ツールのデプロイ
        • コンテンツモデレーション
      • コード拡張
        • 外部データツール
        • コンテンツモデレーション
    • コラボレーション
      • 発見
      • メンバーの招待と管理
    • 管理
      • アプリの管理
      • チームメンバーの管理
      • 個人アカウントの管理
      • サブスクリプション管理
      • バージョン管理
  • ハンドオン工房
    • 初級編
      • ゼロからAI画像生成アプリの構築方法
      • AIエージェントの実践:個人のオンライン旅行アシスタントの構築方法
    • 中級編
      • チャットストリームエージェントを使用した Twitter アカウントの分析方法
      • ファイルアップロードを使用した記事理解アシスタントの構築方法
  • コミュニティ
    • サポートの求め
    • 貢献者ガイド
    • ドキュメントへの貢献
  • プラグイン
    • 機能紹介
    • クイックスタート
      • プラグインのインストールと活用
      • プラグイン開発の入門
        • 開発環境のセットアップ
        • ツール型プラグイン
        • モデル型プラグイン
          • モデルプロバイダーの構築
          • 定義済みモデルの組み込み
          • カスタムモデルの組み込み
        • エージェント戦略プラグイン
        • 拡張機能型プラグイン
        • バンドル
      • プラグインのデバッグ方法
    • プラグイン管理方法
    • スキーマ仕様
      • Manifest(マニフェスト)
      • Endpoint(エンドポイント)
      • Tool(ツール)
      • Agent(エージェント)
      • Model(モデル)
        • モデル設計規則
        • モデルスキーマ
      • 一般的な標準仕様
      • 永続化されたストレージ
      • Difyサービスの逆呼び出し
        • アプリ
        • モデル
        • ツール
        • ノード
    • ベストプラクティス
      • Slack Bot プラグインの開発
      • Dify MCP プラグインガイド:ワンクリックで Zapier に接続してメールを自動送信
    • プラグインの公開
      • プラグインの自動公開
      • Difyマーケットプレイスへの公開
        • プラグイン開発者ガイドライン
        • プラグインのプライバシー保護に関するガイドライン
      • 個人GitHubリポジトリへの公開
      • ローカルでの公開と共有
      • 第三者署名検証のためにプラグインに署名する
    • よくある質問
  • 開発
    • バックエンド
      • DifySandbox
        • 貢献ガイド
    • モデルの統合
      • Hugging Faceのオープンソースモデルを統合
      • Replicateのオープンソースモデルを統合
      • Xinferenceでデプロイしたローカルモデルを統合
      • OpenLLMでデプロイしたローカルモデルを統合
      • LocalAIでデプロイしたローカルモデルを統合
      • Ollamaでデプロイしたローカルモデルを統合
      • LiteLLM Proxyを使用してモデルを統合する
      • GPUStackとの統合によるローカルモデルのデプロイ
      • AWS Bedrock上のモデル(DeepSeek)の接続
    • 移行
      • コミュニティ版を v1.0.0 に移行する
  • もっと読む
    • 活用事例
      • DeepSeek & Dify連携ガイド:多段階推論を活用したAIアプリケーション構築
      • Ollama + DeepSeek + Dify のプライベートデプロイ:あなた自身のAIアシスタントの構築方法
      • あなた専用のQAチャットボットのトレーニング方法
      • コードなしでMidjourney プロンプトボットを作成する方法
      • Notion AI アシスタントを構築する
      • 数分で業務データを持つ公式サイトのAIチャットボットを作成する方法
      • DifyチャットボットをWixサイトに統合する方法
      • AWS Bedrockのナレッジベースに統合する方法
      • Difyで大規模言語モデルの「競技場」を体験する方法:DeepSeek R1 VS o1 を例に
      • Difyスケジューラーの構築
      • DifyクラウドでAI Thesis Slack Botを構築
    • さらに読む
      • LLMOpsとは何ですか?
      • 配列変数とは何ですか?
      • 検索拡張生成(RAG)
        • ハイブリッド検索
        • Rerank
        • リトリーバルモード
      • プロンプトエンジニアリング
      • DifyでJSONスキーマ出力を使用する方法
    • FAQ
      • ローカルデプロイに関するFAQ
      • LLM設定と使用に関するFAQ
      • プラグイン
  • ポリシー
    • オープンソースライセンス
    • ユーザ規約
      • 利用規約
      • プライバシーポリシー
      • 合規性レポートの入手方法
Powered by GitBook
On this page
  • 1 ナレッジベースの引用プロセス
  • ナレッジベースの関連付けとリコールモードの設定
  • メタデータを使用して知識をフィルタリングする
  1. マニュアル
  2. ナレッジベース

アプリ内でのナレッジベース統合

PreviousメタデータNextリコールテスト/引用帰属

Last updated 3 months ago

1 ナレッジベースの引用プロセス

ナレッジベースは、大言語モデルに対して外部知識を提供し、ユーザーの質問に正確に回答するために使用されます。Difyの内で作成されたナレッジベースを関連付けることができます。

チャットボットを例にすると、以下の手順で進めます:

  1. スタジオ -- アプリを作成 -- チャットボットを作成に進む

  2. コンテキスト設定に進み、追加をクリックし、作成済みのナレッジベースを選択

  3. コンテキスト設定 -- パラメータ設定内でリコール策略を設定

  4. ナレッジベース内のドキュメント検索を最適化するには、メタデータフィルタリングを活用します。

  5. コンテキスト設定 - 検索設定で検索パラメータを構成します。

  6. 機能追加内で引用と帰属をオンにする

  7. デバッグとプレビュー内でナレッジベース関連のユーザー質問を入力してデバッグ

  8. デバッグが完了したら、保存して公開し、AIナレッジベースQ&Aアプリケーションとして公開


ナレッジベースの関連付けとリコールモードの設定

現在のアプリケーションのコンテキストが複数のナレッジベースに関連している場合、検索結果をより正確にするためにリコールモードを設定する必要があります。コンテキスト→パラメータ設定→リコール設定 に進み、ナレッジベースのリコールモードを選択します。

検索設定

複数リコールモードでは、検索器はアプリに関連付けられたすべてのナレッジベースから、ユーザーの問題に関連するテキスト内容を検索します。そして、複数リコールの関連文書結果を統合します。以下は複数リコールモードの技術フローチャートです:

ユーザーの意図に基づいて、すべての 「コンテキスト」 に追加されたナレッジベースを同時に検索し、関連するテキスト断片を複数のナレッジベースからクエリし、ユーザーの問題に最も一致する内容を選択します。最適なコンテンツをRerank戦略で見つけてユーザーに回答します。この方法はより科学的な検索原理です。

例:アプリAのコンテキストには、K1、K2、K3 の3つのナレッジベースが関連付けられています。ユーザーが問い合わせを入力すると、3つのナレッジベースで検索を行い、複数の内容をまとめます。最適な内容を見つけるためには、Rerank戦略を使用してユーザーの問題に最も関連する内容を特定し、結果をより正確で信頼性の高いものにします。

Rerankの使用コストとビジネス要件を考慮すると、複数リコールモードは次の2つのRerank設定を提供します:

重み設定

この設定には外部のRerankモデルの構成は不要で、コンテンツの再並べ替えに追加コストは発生しません。セマンティクスまたはキーワードの重み比率を設定します。

  • セマンティック値が1の場合

    セマンティック検索モードが有効になります。このモードでは、埋め込みモデルを利用して、クエリに正確な単語がナレッジベースに存在しない場合でも、ベクトル距離を計算することで検索の精度を向上させ、適切なコンテンツを返すことができます。また、複数言語のコンテンツを扱う場合には、セマンティック検索が異なる言語間の意味を把握し、より正確なクロス言語検索結果を提供します。

  • キーワード値が1の場合

    この場合、キーワード検索モードが有効になります。ユーザーが入力した情報テキストがナレッジベース全体と一致し、ユーザーが正確な情報や用語を把握している場合に適しています。この方法は計算リソースを少なく消費し、大量の文書を迅速に検索するのに適しています。

  • カスタムキーワードとセマンティックの重み

    セマンティック検索またはキーワード検索モードのいずれかを選択する代わりに、柔軟なカスタム重み設定も利用可能です。両者の重みを調整し続けることで、ビジネスシナリオに最も適した重み比率を見つけることができます。

Rerankモデル

Rerankモデルは外部のスコアリングシステムで、ユーザーの質問と各候補文書の関連性スコアを計算します。これにより、セマンティックソートの結果が改善され、関連性に基づいて高い順に並べ替えられた文書リストが返されます。

この方法には追加のコストが発生しますが、ナレッジベースのコンテンツが複雑な場合に特に適しています。セマンティッククエリとキーワードマッチングのコンテンツが混在している場合や、複数言語のコンテンツが含まれる場合に優れた結果を提供します。

Difyは現在、複数のRerankモデルをサポートしており、"モデルサプライヤー"ページでRerankモデル(例:Cohere、Jina AIなど)のAPIキーを入力することができます。

調整可能なパラメータ

  • TopK

    ユーザーの質問に最も類似したテキストセグメントを選択するために使用されます。システムはモデルの選択に基づいてコンテキストウィンドウサイズを動的に調整し、セグメントの数を増やします。数値が高いほど、リコールされるテキストセグメントの数が増加します。

  • スコアの閾値

    テキストセグメントの選択に使用される類似性の閾値を設定します。ベクトル検索の類似性スコアは、設定したスコアを超える必要があり、数値が高いほどリコールされるテキストの数が減少します。

複数のリコールモードを利用することで、高品質なリコール効果を得ることができるため、リコールモードを複数のリコールモードに設定することを強くお勧めします。

メタデータを使用して知識をフィルタリングする

チャットフロー/ワークフロー

チャットフロー/ワークフローの知識検索ノードでは、メタデータフィルタリング機能を使用して文書を正確に検索できます。この機能は、文書のメタデータフィールド(タグ、カテゴリ、アクセス権限など)に基づいて検索結果を最適化するのに役立ちます。

設定手順

  1. フィルタリングモードを選択する

    • 無効モード(デフォルト):メタデータフィルタリング機能を無効にし、フィルタリング条件を設定しません。

    • 自動モード:システムは知識検索ノードに渡されるクエリ変数に基づいてフィルタリング条件を自動的に設定します。簡単なフィルタリング要件に適しています。

    自動モードを有効にした後も、モデル欄で文書検索タスクを実行するための適切な大規模モデルを選択する必要があります。

    • 手動モード:ユーザーが手動でフィルタリング条件を設定し、フィルタリングルールを自由に設定できます。複雑なフィルタリング要件に適しています。

  1. 手動モードを選択した場合は、以下の手順でフィルタリング条件を設定してください:

    1. 条件ボタンをクリックすると、設定ボックスが表示されます。

    1. 設定ボックスの**+条件を追加**ボタンをクリックします:

      • ドロップダウンリストから選択したナレッジベース内の既存のメタデータフィールドを選択し、フィルタリング条件リストに追加できます。

      複数のナレッジベースを同時に選択した場合、ドロップダウンリストにはこれらのナレッジベースに共通するメタデータフィールドのみが表示されます。

      • メタデータを検索検索ボックスで必要なフィールドを検索し、フィルタリング条件リストに追加することもできます。

    1. 複数のフィールドを追加する必要がある場合は、+条件を追加ボタンを繰り返しクリックします。

    1. フィールドタイプごとのフィルタリング条件を設定します:

    フィールドタイプ
    フィルタリング条件
    フィルタリング条件の説明と例

    文字列

    is

    フィールドの値は入力した値と完全に一致する必要があります。例えば、フィルタリング条件を is "公開済み" に設定した場合、「公開済み」とマークされた文書のみが返されます。

    is not

    フィールドの値は入力した値と一致してはいけません。例えば、フィルタリング条件を is not "下書き" に設定した場合、「下書き」とマークされていないすべての文書が返されます。

    is empty

    フィールドの値が空です。この条件を設定すると、その文字列がマークされていない文書を検索できます。

    is not empty

    フィールドの値が空ではありません。この条件を設定すると、その文字列がマークされている文書を検索できます。

    contains

    フィールドの値に入力したテキストが含まれています。例えば、フィルタリング条件を contains "レポート" に設定した場合、「月次レポート」や「年次レポート」など、「レポート」を含むすべての文書が返されます。

    not contains

    フィールドの値に入力したテキストが含まれていません。例えば、フィルタリング条件を not contains "下書き" に設定した場合、「下書き」を含まないすべての文書が返されます。

    starts with

    フィールドの値が入力したテキストで始まります。例えば、フィルタリング条件を starts with "Doc" に設定した場合、「Doc1」や「Document」など、「Doc」で始まるすべての文書が返されます。

    ends with

    フィールドの値が入力したテキストで終わります。例えば、フィルタリング条件を ends with "2024" に設定した場合、「レポート 2024」や「概要 2024」など、「2024」で終わるすべての文書が返されます。

    数値

    =

    フィールドの値は入力した数値と等しい必要があります。例えば、= 10 は数値が10とマークされているすべての文書に一致します。

    ≠

    フィールドの値は入力した数値と等しくてはいけません。例えば、≠ 5 は数値が5とマークされていないすべての文書を返します。

    >

    フィールドの値は入力した数値より大きい必要があります。例えば、> 100 は数値が100より大きいとマークされているすべての文書を返します。

    <

    フィールドの値は入力した数値より小さい必要があります。例えば、< 50 は数値が50より小さいとマークされているすべての文書を返します。

    ≥

    フィールドの値は入力した数値以上である必要があります。例えば、≥ 20 は数値が20以上とマークされているすべての文書を返します。

    ≤

    フィールドの値は入力した数値以下である必要があります。例えば、≤ 200 は数値が200以下とマークされているすべての文書を返します。

    is empty

    フィールドに値が設定されていません。例えば、is empty はそのフィールドに数値がマークされていないすべての文書を返します。

    is not empty

    フィールドに値が設定されています。例えば、is not empty はそのフィールドに数値がマークされているすべての文書を返します。

    時間

    is

    フィールドの時間値は選択した時間と完全に一致する必要があります。例えば、is "2024-01-01" は2024年1月1日とマークされている文書のみを返します。

    before

    フィールドの時間値は選択した時間より前でなければなりません。例えば、before "2024-01-01" は2024年1月1日より前とマークされているすべての文書を返します。

    after

    フィールドの時間値は選択した時間より後でなければなりません。例えば、after "2024-01-01" は2024年1月1日より後とマークされているすべての文書を返します。

    is empty

    フィールドの時間値が空です。この条件を設定すると、その時間情報がマークされていない文書を検索できます。

    is not empty

    フィールドの時間値が空ではありません。この条件を設定すると、その時間情報がマークされている文書を検索できます。

    1. メタデータフィルタリング値を選択して追加します:

      • 変数:変数(Variable)を選択し、そのチャットフロー/ワークフロー内で文書のフィルタリングに使用する変数を選択します。

      • 定数:**定数(Constant)**を選択し、必要な定数値を手動で入力します。

      時間フィールドタイプは定数のみを使用した文書フィルタリングをサポートしています。時間フィールドを使用して文書をフィルタリングする場合、システムは時間選択ツールを表示し、特定の時点を選択できるようにします。

    定数フィルタリング値を入力する場合、そのフィルタリング値はそのメタデータフィールド値のテキストと完全に一致する必要があり、システムはその文書を返します。例えば、フィルタリング条件を starts with "アプリ" または contains "アプリ" に設定した場合、システムは「Apple」とマークされた文書を返しますが、「apple」や「APPLE」とマークされた文書は返しません。

    1. フィルタリング条件間の論理関係 AND または OR を設定します。

      • AND:文書がすべてのフィルタリング条件を満たす場合にのみ、その文書を検索できます。

      • OR:文書がいずれかのフィルタリング条件を満たす場合、その文書を検索できます。

    1. ポップアップを閉じると、システムは自動的に選択内容を保存します。

    チャットボット

    チャットボットでは、メタデータフィルタリング機能はインターフェースの左下にあるコンテキストセクションの下に位置し、設定方法はチャットフロー/ワークフローでの操作と同じです。同じ手順でメタデータフィルタリング条件を設定できます。

    ナレッジベースでリンクされたアプリを表示する

    ナレッジベースの左側に関連するアプリを表示し、アプリケーションページでの変更をサッポトします。

    よくある質問

    1. 複数のリコールモードでのRerank設定の選択方法は?

    ユーザーが正確な情報や用語を知っている場合は、キーワード検索を使用して一致する結果を正確に取得できるため、「重み設定」のキーワード優先モードをお勧めします。

    ナレッジベースに正確な単語が表示されていない場合や、クロス言語クエリがある場合は、「重み設定」のセマンティック優先モードを選択することをお勧めします。

    ビジネスユーザーが実際の質問シナリオに詳しく、セマンティックまたはキーワードの比率を積極的に調整したい場合は、「重み設定」のカスタムモードを選択することをお勧めします。

    ナレッジベースのコンテンツが複雑であり、セマンティックまたはキーワードのシンプルな条件で一致させることができない場合、かつより正確な回答が必要で追加料金を支払うことを望む場合は、コンテンツ検索にRerankモデルを使用することをお勧めします。

    1. 「重み設定」が見つからない、またはRerankモデルの設定が必要な場合、どのように対処すれば良いですか?

    以下は、複数のリコール方法がナレッジベース検索に与える影響を示します:

    1. 複数のナレッジベースを引用する際、「重み設定」を調整できず、エラーが表示される場合はどう対処すれば良いですか?

    この問題が発生するのは、引用されている複数のナレッジベースで使用されている埋め込みモデルが一致しないためです。検索コンテンツの競合を避けるためには、以下の推奨解決策を試みてください。「モデルプロバイダー」で設定を行い、Rerankモデルを有効にするか、ナレッジベースの検索設定を統一してください。

    1. 複数のリコール方法が使用されている場合、「重み設定」オプションが見つからず、Rerankモデルしか表示されない理由は何ですか?

    ナレッジベースが「エコノミー」モードのインデックスモードを使用しているかどうかを確認してください。その場合は、「ハイクオリティ」モードのインデックスモードに切り替えてください。

実際の質疑応答シーンでは、各ナレッジベースのコンテンツの出典や検索方法が異なる場合があります。複数の混合コンテンツが返される検索に対して、はより科学的なコンテンツの並べ替えメカニズムです。これにより、候補コンテンツリストをユーザーの問題に一致させ、複数の知識間の結果の順序を改善し、最も一致するコンテンツを見つけて回答の質とユーザーエクスペリエンスを向上させることができます。

より詳細な情報はメカニズムをご覧ください。

モードを選択
手動モード
条件
条件を追加
複数のフィールドを追加
変数
日付選択ツール
ロジク
チャットボット
リンクされたアプリを表示する
すべてのアプリタイプ
Rerank戦略
リコール拡張
モデルサプライヤー内でRerankモデルを設定