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. ナレッジベースの新規作成
  • 2. コンテンツ分割の指定方法
  • 4. 検索方法の選定
  • 5. アップロード完了
  • 参考文献
  • ETL
  • 埋め込み (Embedding)
  1. マニュアル
  2. ナレッジベース

ナレッジベース作成

PreviousナレッジベースNext1. オンラインデータソースの活用

Last updated 3 months ago

ナレッジベースの作成および文書のアップロード手順は、主に以下のステップから成り立っています:

  1. ナレッジベースを新規作成し、ローカルの文書やを取り込みます。

  2. 文書を分割する際のモードを選び、その効果をプレビューします。

  3. 検索機能のためのインデックス設定と検索オプションを構成します。

  4. 文書の分割処理が完了するまで待ちます。

  5. アップロードが完了したら、アプリ内でナレッジベースを利用開始します 🎉

各ステップの詳細について説明します:

1. ナレッジベースの新規作成

Difyプラットフォームのトップメニューより 「ナレッジベース」→「新規作成」 を選択します。文書は、ローカルファイルのアップロードまたはオンラインデータの取り込みによってナレッジベースに追加できます。

  • ローカルファイルのアップロード:ファイルをドラッグ&ドロップまたは選択してアップロードします。一度に多数のファイルをアップロードすることが可能ですが、その上限はに依存します。

    ローカルファイルのアップロードには以下の制約があります:

    • 一度にアップロードできる最大サイズは15MBです;

    • 使用しているSaaSによって、一括アップロード可能なファイル数、文書の総アップロード数、ベクトルストレージの利用可能容量が制限されます。

    ナレッジベースの作成
  • オンラインデータの取り込み:ナレッジベース作成時にが可能で、詳細はオンラインデータ取り込みのガイドを参照してください。オンラインデータソースを利用するナレッジベースには、後からローカルの文書を追加したり、ローカルファイルタイプのナレッジベースへ変更したりすることはできません。これは、複数のデータソースが混在すると管理が複雑になるためです。

  • 文書がまだ準備できていない場合でも、空のナレッジベースを先に作成し、後ほどローカル文書をアップロードしたり、オンラインデータを取り込んだりすることができます。

2. コンテンツ分割の指定方法

以下の2つの分割モードがあります:

  • 汎用分割モード

    このモードでは、システムがユーザーが定義したルールに従ってコンテンツを独立したセクションに分けます。質問が入力されると、システムはその質問のキーワードを自動で分析し、これらのキーワードとナレッジベース内のセクションとの関連度を計算します。そして、関連度に基づいてセクションをランキングし、最も関連性の高いセクションを選びLLMへ送り、処理して回答を得ます。

    注意:以前の 「自動分割とクリーニング」モード は 汎用分割モード に自動的に更新されました。何も変更する必要はなく、デフォルト設定をそのまま使用し続けることができます。

  • 親子分割モード(階層分割モード)

    二層の構造を採用し、検索精度とコンテキスト情報のバランスを取ります。このモードでは、親セクション(Parent-chunk)がより大きなテキスト単位(例えば段落)を包含し、豊富なコンテキスト情報を提供します。子セクション(Child-chunk)はより小さなテキスト単位(例えば文)で、精確な検索に利用されます。システムは最初に子セクションを通じて精確な検索を行い関連性を確保した後、対応する親セクションを取得しコンテキスト情報を補完し、レスポンスを生成する際に正確さを保ちながら完全な背景情報を提供します。セクションの分割方法は、区切り文字と最大長さの設定を通してカスタマイズできます。

注意:分割モードを選択し、ナレッジベースの作成を完了した後は、後からモードを変更することはできません。ナレッジベースにドキュメントを新たに追加する場合も、選択したコンテンツ分割戦略に従います。

  1. インデックス設定方法

コンテンツを構造化する前処理(分割とクリーニング)を行った後、構造化されたコンテンツに対してどのように検索を行うかの設定が必要です。検索エンジンが効率的なインデックスアルゴリズムを用いて、ユーザーの問い合わせに最も関連性の高い検索結果を提供できるように、インデックスの設定方法が重要です。これは、LLMがナレッジベースから情報を検索する効率と回答の精度に直接影響します。

  • 高品質

    エンベッディングモデル(Embeddingモデル)を利用して、分割されたテキストブロックを数値ベクトルに変換し、大量のテキスト情報をより効率的に圧縮・保管します。これにより、ユーザーの問い合わせとテキストとのマッチングがより精密に行われます。

  • 経済的

    各テキストブロックごとに10個のキーワードを用いて検索を行います。精度は落ちますが、追加のコストはかかりません。

  • Q&Aモード(コミュニティ版のみ対応)

    ナレッジベースへの文書アップロード時に、システムがテキストを分割して要約し、各ブロックごとにQ&Aのペアを生成します。FAQ形式の文書に適しています。

高品質なインデックス設定方法の利用を推奨します。

4. 検索方法の選定

ユーザーからの問い合わせを受けた後、ナレッジベースは関連する情報を既存のドキュメントから見つけ出すために検索方法を用いる。ビジネスの要求やデータの特徴に合わせて、検索方法を柔軟に組み合わせたり変更したりすることで、より効果的かつ正確な検索結果を提供できる。

  • 高品質インデックス

    • ベクトル検索

      ユーザーの質問をベクトル化し、クエリテキストの数値ベクトルを作成。このクエリベクトルとナレッジベース内のテキストベクトルとの距離を比較し、最も近い内容を探索する。

    • 全文検索

      キーワードによる検索で、ドキュメント内の全単語を索引付ける。ユーザーが質問を提出すると、そのキーワードでナレッジベース内の適切なテキスト部分を検索し、一致する内容を返す。これは検索エンジンにおける一般的な全文検索と似ている。

    • ハイブリッド検索(推奨)

      全文検索とベクトル検索を同時に行い、リランクモデルを用いて両方の検索結果から最も適切な回答を選び出す。

  • 経済的安いインデックス

    • インバーテッド検索

      インバーテッド検索は、ドキュメント内のキーワードを迅速に検索するための索引構造で、オンライン検索エンジンで広く使用されている。

5. アップロード完了

参考文献

ETL

  • SaaS版では選択不可、デフォルトでUnstructured ETLを使用。

ファイル解析のサポート形式の違い:

DIFY ETL
Unstructured ETL

txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv

txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv、eml、msg、pptx、ppt、xml、epub

埋め込み (Embedding)

**埋め込み(Embedding)**は、単語や文章、あるいはドキュメント全体のような離散変数を、連続ベクトル表現に変換する技術を指します。この技術を用いることで、単語やフレーズ、画像などの高次元データを、より小さな次元空間にマッピングし、データを簡潔かつ効率的に表現できます。この方法は、データの次元を減らすだけでなく、重要な意味の情報も保持し、コンテンツの検索を効率化します。

埋め込みモデルは、テキストデータを数値ベクトル化することに特化した言語モデルの一種で、テキストを密度の高い数値ベクトルに変換し、その意味内容を効果的に表現することに長けています。

メタデータ

コンテンツをナレッジベースにアップロードした後の次のステップは、コンテンツの分割とデータのクレンジングです。このステップでは、コンテンツの前処理とデータの構造化が行われ、長いテキストは複数のセクションに分けられます。 LLMはユーザーからの質問を受け取った際、ナレッジベース内のセクションをどれだけ正確に検索し取り出せるかで、その質問に対する正確な回答が可能かどうかが決まります。詳細については、をご参照ください。

ナレッジベースを初めて作成する際は、を選択し、デフォルトのオプションを使用してナレッジベースの作成を行うことを推奨します。コンテンツセクションをカスタマイズしたい場合は、を参照し、正規表現の文法に従って設定してください。

汎用分割モードと親子分割モード

以下に、三つのインデックス設定方法を紹介します。詳細はをご覧ください。

インデックス設定方法

異なるインデックス作成方法によって、様々な検索オプションが提供される。詳細はセクションを参照。

検索方法の選定後

選んだ検索方式に基づき、セクションを参照し、キーワードとコンテンツの一致度をテストできる。

上述した設定を終えて、「保存して処理」ボタンをクリックすることで、ナレッジベースの作成が完了する。アプリ内でナレッジベースを統合する方法については、セクションを参照。ナレッジベースの更新や管理が必要な場合は、セクションをご覧ください。

ナレッジベース作成完了

RAGのプロダクションレベルのアプリケーションでは、データ召喚の効果を向上させるために、複数のデータソースを前処理およびクリーニングする必要があります。これをETL(抽出、変換、ロード)と呼びます。非構造化/半構造化データの前処理能力を強化するために、Difyは以下のオプションのETLソリューションをサポートしています:Dify ETL と。Unstructuredは、データを抽出してクリーンなデータに変換し、後続のステップに使用できるようにします。Difyの各バージョンでのETLソリューションの選択:

コミュニティ版では選択可能、デフォルトでDify ETLを使用、を介してUnstructured ETLを有効にできます。

異なるETLソリューションではファイル抽出の効果にも違いがあります。Unstructured ETLのデータ処理方法について詳細を知りたい場合は、を参照してください。

メタデータ機能を使用してナレッジベースを管理する場合は、を参照してください。

コンテンツ分割の指定方法
親子分割モード
分割ルール
インデックス設定方法
検索方法の選定
リコールテスト/引用帰属
ナレッジベースの統合
ナレッジベースの管理と文書のメンテナンス
Unstructured ETL
環境変数
公式ドキュメント
メタデータ
オンラインのデータ
サブスクリプションプラン
サブスクリプションプラン
オンラインデータの取り込み