Skip to main content

このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。

工場の生産ラインを例に考えてみましょう。各ステーション(ノード)が特定の作業を担当し、それらを連携させて部品を組み立て、最終製品を完成させます。ナレッジパイプラインの構築も同様のプロセスです。視覚的なワークフロー設計ツールを使用し、ドラッグ&ドロップ操作だけで容易にデータ処理の流れを設計できます。これにより、ドキュメントの取り込み、処理、分割、インデックス化、検索戦略を自在に管理できます。

本ステップでは、ナレッジパイプライン全体のプロセス、各ノードの役割や設定方法について学び、独自のデータ処理フローをカスタマイズして、効率的にナレッジベースを管理・最適化する方法を解説します。

インターフェースの状態#

オーケストレーションキャンバスに入ると、次の状態を確認できます。

  • タブの状態:パイプラインを公開するまで、ドキュメント と 検索テスト のタブは利用できません。
  • 必要ステップ:パイプラインのオーケストレーションと公開が完了しないと、ファイルアップロードは利用できません。

選択したテンプレートによって、初期画面の表示が異なります。

空白ナレッジベースパイプライン を選択した場合は、ナレッジベースノードだけが配置されたキャンバスが表示され、ノード横のガイドの指示に従って作成を進めます。

空白パイプライン

特定のパイプラインテンプレート を選択した場合は、あらかじめワークフローが組まれた状態でキャンバスに表示され、すぐに利用・編集が可能です。

テンプレートパイプライン

ナレッジパイプラインの全体プロセス#

まず、ナレッジパイプラインにおける処理プロセスを分解し、ドキュメントがどのように検索可能なナレッジベースへと変換されるのかを理解しましょう。

ナレッジパイプラインは、以下の主要なステップから構成されます:

Tip

データソース → データ処理(抽出器+分割器)→ ナレッジベースノード(分割構造+検索設定)→ ユーザー入力フォーム → テスト&公開

  1. データソース:さまざまな情報源(ローカルファイル、Notion、Web ページなど)からのコンテンツ
  2. データ処理:データ内容の加工と変換
    • 抽出器(Extractor):ドキュメントの解析・構造化
    • 分割器(Chunker):構造化された内容を扱いやすい断片に分割
  3. ナレッジベース:分割構造と検索設定の構築
  4. ユーザー入力フォーム:ユーザーがパイプライン実行時に必要なパラメータや情報を入力するための定義
  5. テスト&公開:設定の検証および運用開始

ステップ 1:データソースの設定#

ナレッジベースには、単一または複数のデータソースを選択できます。現在、Dify では主に 4 種類のデータソースをサポートしています:ファイルアップロード、クラウドストレージ、オンラインドキュメント、Web クローラー。

さらに多様なデータソースについては、Dify Marketplaceをご参照ください。

ファイルアップロード#

ローカルファイルはドラッグ&ドロップまたはファイル選択でアップロードできます。

ナレッジパイプラインの編成 01

設定オプション

項目説明
ファイル形式PDF、XLSX、DOCX などに対応。ユーザーは選択をカスタマイズできます
アップロード方法ドラッグ&ドロップまたはファイル選択でローカルファイルやフォルダをアップロード。バッチアップロード対応

制限事項

項目説明
ファイル数デフォルトで 1 回あたり 20 ファイル
ファイルサイズデフォルトで 1 ファイルあたり 15 MB。UPLOAD_FILE_SIZE_LIMIT で設定可能
ストレージ設定したストレージバックエンドの容量のみが上限となります

出力変数

出力変数形式
{x} Document単一ドキュメント

オンラインドキュメント#

Notion#

Notion ワークスペースと連携し、ページやデータベースをシームレスにインポート可能です。ナレッジベースは常に自動で最新状態に保たれます。

Notion

設定オプション

項目オプション出力変数説明
Extractor有効{x} Content構造化・処理済み情報
無効{x} Documentオリジナルテキスト

Web クローラー#

Web コンテンツを大規模言語モデルでも読みやすい形式に変換します。ナレッジベースは Jina Reader と Firecrawl をサポートしています。

Jina Reader#

シンプルかつ使いやすい API を提供するオープンソースの Web 解析ツールです。Web コンテンツの高速クロールと処理に適しています。

Jina Reader

パラメータ設定

パラメータ種類説明
URL必須対象 Web ページのアドレス
サブページのクロール任意リンク先ページもクロールするか
サイトマップ使用任意サイトマップを利用してクロール
制限必須クロールする最大ページ数
Extractor 有効化任意データ抽出方式の選択

Firecrawl#

きめ細かなクロール制御オプションと API サービスを持つオープンソースの Web 解析ツールです。複雑なサイトの深層クロールやバッチ処理に適しています。

ナレッジパイプラインの編成 04

パラメータ設定

パラメータ種類説明
URL必須対象 Web ページのアドレス
制限必須クロールする最大ページ数
サブページクロール任意リンク先ページもクロールするか
最大深度任意開始 URL からクロールする階層の深さ
除外パス任意クロール対象から除外したい URL パターン
限定パス任意指定したパスのみクロール
Extractor任意データ処理方式の選択
主要コンテンツのみ抽出任意ページの主要テキストやメディアのみ抽出

クラウドストレージ#

Google Drive、Dropbox、OneDrive などのクラウドストレージサービスと連携し、Dify が自動でファイルを取得します。選択したドキュメントをインポートするだけなので、事前の手動ダウンロードは不要です。

Tip

認証に関するサポートが必要な場合は、データソース認証ガイド をご参照ください。


ステップ 2:データ処理ツールの設定#

このステップでは、コンテンツの抽出、分割、最適なナレッジベース用フォーマットへの変換を行います。これは、料理でいう「食材の下準備」と同じく、後に素早く加工できる状態を整える工程です。

Tip

マルチモーダル埋め込みや検索用にマルチモーダルデータを抽出するカスタムデータ処理プラグインの開発方法については、ナレッジパイプラインでマルチモーダルデータを処理するツールプラグインの構築 をご参照ください。

ドキュメントプロセッサ#

PDF、XLSX、DOCX など多様な形式のドキュメントが存在しますが、LLM はこれらをそのまま扱えません。そのため、抽出器(Extractor)が各種ファイルを解析・変換し、LLM が扱いやすい形式に変換します。

Dify のテキスト抽出ノード、あるいは Marketplace から「Dify Extractor」「Unstructured」等のツールを選択できます。

ドキュメント内の画像

ドキュメント内の画像は、適切なドキュメントプロセッサを使用して抽出できます。抽出された画像は対応するチャンクに添付され、個別に管理でき、検索時にはそのチャンクと一緒に返されます。

抽出された画像の URL はチャンクテキスト内に残りますが、テキストをクリーンに保つためにこれらの URL を安全に削除できます。これは抽出された画像には影響しません。

各チャンクには最大 10 枚まで画像を添付できます。これを超える画像は抽出されません。

選択したプロセッサで画像が抽出されなかった場合、Dify は以下の Markdown 記法でアクセス可能な URL が参照されている 2MB 未満の JPG、JPEG、PNG、GIF 画像を自動的に抽出します:

  • ![alt text](image_url)
  • ![alt text](image_url "optional title")
Tip

以下の上限を環境変数で調整できます:

  • 画像サイズの上限:ATTACHMENT_IMAGE_FILE_SIZE_LIMIT

  • 1 チャンクあたりの添付画像数上限:SINGLE_CHUNK_ATTACHMENT_LIMIT

インデックス設定で Vision アイコン付きのマルチモーダル埋め込みモデルを選択した場合、抽出された画像も埋め込み・インデックス化され、検索対象となります。

Doc Extractor(テキスト抽出)#

ナレッジパイプラインの編成 4 01

情報処理の中核となり、入力変数からファイルを識別・読取・情報抽出を行い、次のノードで利用できる形式へ変換します。

Tip

詳細は テキスト抽出 をご参照ください。

Dify Extractor#

Dify Extractor は、Dify が提供する内蔵ドキュメント解析ツールです。一般的なファイル形式に幅広く対応し、特に Doc ファイルに最適化されています。画像抽出・保存や、画像 URL 返却も可能です。

Dify エクストラクタ

Unstructured#

Unstructured

Unstructured は、高度なカスタマイズ可能性を備えた抽出戦略でドキュメントを機械可読形式へ変換します。抽出戦略(auto、hi_res、fast、OCR-only)や分割方法(by_title、by_page、by_similarity)に柔軟に対応。要素ごとの座標や信頼度、レイアウトなどリッチなメタデータも出力し、企業のドキュメントワークフローや混合タイプファイルの精密な処理に適しています。

Tip

他のツールについては Dify Marketplace をご覧ください。


分割器(Chunker)#

人間が一度に多くの情報を集中して理解できないように、LLM も大量情報の同時処理が苦手です。そのため、分割器は抽出後のドキュメントを小さな「チャンク」と呼ばれる断片に分割します。

用途やドキュメントの種類に応じ、最適な分割戦略が異なります。たとえば製品マニュアルは機能ごと、論文は論理セクションごとが理想的です。Dify では主に 3 種類の分割器を用意しています。

分割器の種類概要#

分割器タイプ特徴最適用途
汎用分割器固定サイズ分割、区切り文字のカスタマイズ可能シンプルなドキュメント
親子分割器二層構造:マッチング精度+豊富なコンテキストコンテキスト保持必須な複雑文書
Q&A プロセッサスプレッドシートの Q&A ペア処理構造化 Q&A データ(CSV/Excel 等)

共通テキスト前処理ルール#

すべての分割器で利用できるテキストクリーニングオプション:

オプション説明
連続空白・改行・タブの統一連続する空白文字を単一空白へ変換
URL・メールアドレスの削除Web リンクやメールアドレスを自動検出し削除

汎用分割器(General Chunker)#

シンプルな構造の文書向けの基本的な分割モジュールです。テキスト分割や前処理オプションを柔軟にカスタマイズ可能です。

入力と出力変数

タイプ変数説明
入力変数{x} Content分割対象となる文書コンテンツ
出力変数{x} Array[Chunk]分割済みコンテンツ配列(各要素は検索・分析向け)

分割設定

設定項目説明
Delimiter区切りに使う文字列(例:###)を入力します。入力した文字列と完全に一致する箇所でテキストを分割します。
最大チャンク長各セグメントの最大文字数。上限超過時は強制分割されます。
チャンク重複分割時にセグメント間で部分重複させることで情報保持・検索精度を向上

親子分割器(Parent-child Chunker)#

クエリマッチング精度と豊富なコンテキスト両立のため、二層チャンク構造を採用し、RAG システムにおけるコンテキストと精度の矛盾を解決します。

親子分割器の仕組み

  • 子チャンク(高精度マッチング用):ユーザーのクエリに高精度でマッチングするための小さく精密な情報セグメント(通常、1 文ごと)
  • 親チャンク(豊富なコンテキスト):該当する子チャンクを含む広い範囲のコンテンツブロック(段落、セクション、またはドキュメント全体)で、大規模言語モデル(LLM)に包括的な背景情報を提供
タイプ変数説明
入力変数{x} Content分割対象となる文書コンテンツ
出力変数{x} Array[ParentChunk]親チャンク配列

分割設定

設定項目説明
親チャンク区切り文字親チャンクの分割ルール設定
親チャンク最大長親チャンクの最大文字数
子チャンク区切り文字子チャンク分割ルール
子チャンク最大長子チャンクの最大文字数
親モード「段落」(テキストを段落に分割)または「全文書」(ドキュメント全体を親チャンクとして直接検索に使用)いずれか選択

Q&A プロセッサ#

抽出&分割を 1 ノードで実施。FAQ や Q&A ペアをテーブルとして持つ CSV/Excel ファイル専用です。

入出力変数

タイプ変数説明
入力変数{x} Document単一ファイル
出力変数{x} Array[QAChunk]Q&A チャンク

変数設定

設定項目説明
質問用カラム番号質問として設定するコンテンツ列
回答用カラム番号回答として設定する列

ステップ 3:ナレッジベースノードの設定#

ドキュメントの処理・分割が完了したら、保存や検索の方法を設定します。ここでは、インデックス作成方法や検索戦略を用途に応じて選択可能です。

本ノードの設定項目は、入力変数、チャンク構造、インデックス方式、検索設定となります。

チャンク構造#

チャンク構造

チャンク構造は、ナレッジベースが文書コンテンツをどう整理・インデックス化するかを定めます。ドキュメントタイプ、用途、コストに適したモードを選択してください。

ナレッジベースは 3 つのチャンクモードをサポートします:汎用モード、親子モード、Q&A モード。初めてナレッジベースを作成する場合は親子モードが推奨されます。

Warning

重要:チャンク構造は一度保存・公開すると変更できません。慎重にご選択ください。

汎用モード#

標準的なドキュメント処理に最適です。柔軟なインデックスオプションを提供し、品質やコストの異なる要件に応じて適切なインデックス方法を選択できます。

汎用モードは高品質とコスト効率の両方のインデックス方法、および各種検索設定をサポートします。

親子モード#

検索時の高精度マッチングと対応するコンテキスト情報を提供し、完全なコンテキストを維持する必要がある専門ドキュメントに適しています。

親子モードは HQ(高品質)モードのみ対応で、クエリマッチング用の子チャンクと検索時のコンテキスト情報用の親チャンクを提供します。

Q&A モード#

構造化された質問回答データを使用する際に、質問と回答をペアにしたドキュメントを作成します。これらのドキュメントは質問部分に基づいてインデックス化され、クエリの類似性に基づいて関連する回答を検索できます。

Q&A モードは HQ(高品質)モードのみ対応です。

入力変数#

入力変数はデータ処理ノードからの処理結果をナレッジベースのデータソースとして受け取ります。分割器の出力をナレッジベースノードへ入力として接続する必要があります。

ノードは選択したチャンク構造に基づいて異なるタイプの標準入力をサポートします:

  • 汎用モード:x Array[Chunk] - 汎用チャンク配列
  • 親子モード:x Array[ParentChunk] - 親チャンク配列
  • Q&A モード:x Array[QAChunk] - Q&A チャンク配列

インデックス方法と検索設定#

インデックス方法はナレッジベース内のコンテンツインデックスの構築方法を決定し、検索設定は選択したインデックス方法に基づいた対応する検索戦略を提供します。

つまり、インデックス方法はドキュメントの整理方法を決定し、検索設定はユーザーがドキュメントを見つけるために使用できる方法を指定します。

ナレッジベースでは 高品質 と コスト効率 の 2 つのインデックス方法があり、それぞれ異なる検索設定オプションを提供します。

高品質モード では、埋め込みモデルを使用してチャンクを数値ベクトルに変換し、大量の情報をより効果的に圧縮・保存できます。これにより、ユーザーの質問の言い回しがドキュメントと完全に一致しなくても、意味的に関連する正確な回答をシステムが見つけることができます。

Tip

クロスモーダル検索(テキストと画像を意味的関連性に基づいて取得)を有効にするには、Vision アイコン付きのマルチモーダル埋め込みモデルを選択してください。ドキュメントから抽出された画像も埋め込み・インデックス化され、検索対象となります。

このような埋め込みモデルを使用するナレッジベースは、カード上で Multimodal と表示されます。

マルチモーダルナレッジベース

コスト効率モード では、各ブロックは 10 個のキーワードで検索用にインデックス化され、埋め込みモデルを呼び出さないためコストは発生しません。

Info

詳細は インデックス方法と検索設定を指定 をご参照ください。

インデックス方法利用可能な検索設定説明
高品質ベクトル検索意味的類似性に基づいてクエリの深い意味を理解
全文検索キーワードベースの包括的検索機能を提供
ハイブリッド検索意味検索とキーワード検索を組み合わせ
コスト効率逆引きインデックス一般的な検索エンジン検索方式で、クエリを主要コンテンツとマッチング
Note

選択した埋め込みモデルがマルチモーダルの場合は、Vision アイコンが表示されたマルチモーダルリランキングモデルも選択してください。そうでない場合、検索された画像は再ランクおよび検索結果から除外されます。

チャンク構造、インデックス方法、パラメータ、検索設定の構成については、以下の表もご参照ください。

チャンク構造インデックス方法パラメータ検索設定
汎用モード高品質


コスト効率
埋め込みモデル


キーワード数
ベクトル検索
全文検索
ハイブリッド検索
逆引きインデックス
親子モード高品質のみ埋め込みモデルベクトル検索
全文検索
ハイブリッド検索
Q&A モード高品質のみ埋め込みモデルベクトル検索
全文検索
ハイブリッド検索

サマリー自動生成#

すべてのチャンクに対してサマリーを自動生成し、検索性を向上させます。

サマリーも埋め込み・インデックス化され、検索対象となります。サマリーがクエリにマッチした場合、対応するチャンクも返されます。

自動生成されたサマリーは後から手動で編集したり、特定のドキュメントに対して再生成することができます。詳細はナレッジコンテンツの管理をご参照ください。

Tip

ビジョン対応の LLM を選択した場合、サマリーはチャンクテキストと添付画像の両方に基づいて生成されます。


ステップ 4:ユーザー入力フォームの作成#

ユーザー入力フォームは、パイプラインを効果的に実行するために必要な初期情報を収集するために不可欠です。ワークフローのユーザー入力ノードと同様に、このフォームはユーザーから必要な詳細情報(アップロードするファイル、ドキュメント処理の特定パラメータなど)を収集し、パイプラインが正確な結果を提供するために必要なすべての情報を確保します。

これにより、さまざまなユースケースシナリオに特化した入力フォームを作成でき、さまざまなデータソースやドキュメント処理ステップに対するパイプラインの柔軟性と使いやすさを向上できます。

フォームの作成方法#

ユーザー入力フィールドを作成する方法は 2 つあります:

  1. パイプライン構築インターフェース
    入力フィールド をクリックして入力フォームの作成と設定を開始します。\

    フィールドをクリックして入力フォームの作成と設定を開始します

  2. ノードパラメータパネル
    ノードを選択します。次に、右側パネルのパラメータ入力で、新しい入力項目のために「+ ユーザー入力を作成」をクリックします。新しい入力項目は入力フィールドにも収集されます。![ノードパラメータパネル](/images/use-dify/knowledge/knowledge-pipeline-orchestration-10.png)

ユーザー入力フィールドの追加#

各エントランス固有の入力#

ナレッジパイプラインの編成 11

これらの入力は各データソースとその下流ノードに固有です。ユーザーは対応するデータソースを選択した場合にのみ、これらのフィールドに入力する必要があります(例:異なるデータソース用の異なる URL)。

作成方法:データソースの右側にある+ボタンをクリックして、その特定のデータソース用のフィールドを追加します。これらのフィールドは、そのデータソースとその後続の接続ノードからのみ参照できます。これらの入力は各データソースとその下流ノードに固有です

すべてのエントランス用のグローバル入力#

ナレッジパイプラインの編成 13

グローバル共有入力はすべてのノードから参照できます。これらの入力は、区切り文字、最大チャンク長、ドキュメント処理設定など、汎用的な処理パラメータに適しています。ユーザーはどのデータソースを選択しても、これらのフィールドに入力する必要があります。

作成方法:グローバル入力の右側にある+ボタンをクリックして、任意のノードから参照できるフィールドを追加します。

サポートされる入力フィールドタイプ#

ナレッジパイプラインは 7 種類の入力変数をサポートします:

ナレッジパイプラインの編成 14

フィールドタイプ説明
テキストナレッジベースユーザーが入力する短文、最大 256 文字
段落長い文字列用の長文テキスト入力欄
セレクトオーケストレーターが事前設定した固定オプションから選択、ユーザーはカスタムコンテンツを追加不可
ブール値true/false値のみ
数値数値入力のみ受付
単一ファイル単一ファイルアップロード、複数のファイルタイプ(ドキュメント、画像、音声、その他のファイルタイプ)をサポート
ファイルリスト複数ファイルの一括アップロード、複数のファイルタイプ(ドキュメント、画像、音声、その他のファイルタイプ)をサポート
Tip

サポートされるフィールドタイプの詳細については、ユーザー入力 をご参照ください。

フィールド設定オプション#

すべての入力フィールドタイプには、必須、任意、および追加設定があります。適切なオプションをチェックしてフィールドを必須にするかどうかを設定できます。

設定名称説明例
必須設定変数名内部システム識別子、通常は英語とアンダースコアで命名user_email
表示名インターフェース表示名、通常は簡潔で読みやすいテキストユーザーメール
タイプ固有設定異なるフィールドタイプの特別な要件テキストフィールドの最大長 100 文字
追加設定デフォルト値ユーザーが入力していない場合のデフォルト値数値フィールドのデフォルトは 0、テキストフィールドのデフォルトは空
プレースホルダー入力ボックスが空のときに表示されるヒントテキスト「メールアドレスを入力してください」
ツールチップユーザー入力をガイドする説明テキスト、通常はマウスホバー時に表示「有効なメールアドレスを入力してください」
特殊任意設定異なるフィールドタイプに基づく追加設定オプションメール形式のバリデーション

設定完了後、右上のプレビューボタンをクリックしてフォームプレビューインターフェースを閲覧できます。フィールドのグループ化をドラッグして調整できます。感嘆符が表示された場合は、移動後に参照が無効になっていることを示します。

ナレッジパイプラインの編成 15


ステップ 5:ナレッジベースの命名#

ナレッジベース命名

デフォルトのナレッジベース名は「Untitled+番号」、権限は「自分のみ」、アイコンはオレンジ色の書籍です。DSL ファイルからインポートした場合は保存されたアイコンが使用されます。

左パネルの 設定 をクリックし、以下の情報を入力してください:

  • 名前とアイコン
    ナレッジベースの名前を決定します。
    絵文字を選択、画像をアップロード、または画像 URL を貼り付けてこのナレッジベースのアイコンとして設定できます。
  • ナレッジベース説明
    ナレッジベースの簡単な説明を入力してください。これにより AI がデータをより適切に理解し検索できるようになります。空のままにすると、Dify はデフォルトの検索戦略を適用します。
  • 権限
    ドロップダウンメニューから適切なアクセス権限を選択してください。

ステップ 6:テスト#

いよいよ最終工程です!これがナレッジパイプラインオーケストレーションの最終ステップです。

オーケストレーションが完了したら、まずすべての設定を検証する必要があります。次に、いくつかの実行テストを行い、すべての設定を確認します。最後に、ナレッジパイプラインを公開します。

設定完全性チェック#

テスト前に、設定の不備によるテスト失敗を避けるため、設定の完全性をチェックすることをお勧めします。

右上のチェックリストボタンをクリックすると、システムが不足している部分を表示します。

ナレッジパイプラインの編成 16

すべての設定が完了したら、テスト実行を通じてナレッジベースパイプラインの動作をプレビューし、すべての設定が正確であることを確認してから、公開に進みます。

テスト実行#

ナレッジパイプラインの編成 17

  1. テスト開始:右上の「テスト実行」ボタンをクリック
  2. テストファイルインポート:右側にポップアップするデータソースウィンドウでファイルをインポート
Warning

重要:デバッグと観察を容易にするため、テスト実行ごとに 1 ファイルのみアップロード可能です。

  1. パラメータ入力:インポート成功後、先に設定したユーザー入力フォームに従って対応するパラメータを入力
  2. テスト実行開始:次のステップをクリックしてパイプライン全体のテストを開始

テスト中は、履歴ログ(タイムスタンプ、実行ステータス、入出力サマリーを含むすべての実行記録を追跡)と変数インスペクタ(各ノードの入出力データを表示し、問題の特定とデータフローの検証を支援するダッシュボード)にアクセスして、効率的なトラブルシューティングとエラー修正を行えます。

テストツール