ナレッジパイプラインの構築
工場の生産ラインを例に考えてみましょう。各ステーション(ノード)が特定の作業を担当し、それらを連携させて部品を組み立て、最終製品を完成させます。ナレッジパイプラインの構築も同様のプロセスです。視覚的なワークフロー設計ツールを使用し、ドラッグ&ドロップ操作だけで容易にデータ処理の流れを設計できます。これにより、ドキュメントの取り込み、処理、分割、インデックス化、検索戦略を自在に管理できます。 本ステップでは、ナレッジパイプライン全体のプロセス、各ノードの役割や設定方法について学び、独自のデータ処理フローをカスタマイズして、効率的にナレッジベースを管理・最適化する方法を解説します。インターフェースの状態
オーケストレーションキャンバスに入ると、次の状態を確認できます。- タブの状態: 「Documents(ドキュメント)」「Retrieval Test(検索テスト)」「Settings(設定)」タブはグレーアウトされ利用不可です。
- 必要ステップ:パイプラインのオーケストレーションと公開が完了しないと、ファイルアップロードやその他機能は利用できません。


ナレッジパイプラインの全体プロセス
まず、ナレッジパイプラインにおける処理プロセスを分解し、ドキュメントがどのように検索可能なナレッジベースへと変換されるのかを理解しましょう。 ナレッジパイプラインは、以下の主要なステップから構成されます:- データソース:さまざまな情報源(ローカルファイル、Notion、Webページなど)からのコンテンツ
- データ処理:データ内容の加工と変換
- 抽出器(Extractor):ドキュメントの解析・構造化
- 分割器(Chunker):構造化された内容を扱いやすい断片に分割
- ナレッジベース:分割構造と検索設定の構築
- ユーザー入力フォーム:ユーザーがパイプライン実行時に必要なパラメータや情報を入力するための定義
- テスト&公開:設定の検証および運用開始
ステップ1:データソースの設定
ナレッジベースには、単一または複数のデータソースを選択できます。現在、Difyでは主に4種類のデータソースをサポートしています:ファイルアップロード、クラウドストレージ、オンラインドキュメント、Webクローラー。 さらに多様なデータソースについては、Dify Marketplaceをご参照ください。ファイルアップロード
ローカルファイルはドラッグ&ドロップまたはファイル選択でアップロードできます。設定オプション
制限事項
出力変数
| 項目 | 説明 |
|---|---|
| ファイル形式 | PDF、XLSX、DOCXなどに対応 |
| アップロード方法 | ドラッグ&ドロップまたは選択、バッチ対応 |
| 項目 | 説明 |
|---|---|
| ファイル数 | 1回あたり最大50ファイルまで |
| ファイルサイズ | 1ファイルあたり最大15MB |
| ストレージ | サブスクリプションプランによりアップロード上限が異なります |
| 出力変数 | 形式 |
|---|---|
{x} Document | 単一ドキュメント |
オンラインドキュメント
Notion
Notionワークスペースと連携し、ページやデータベースをシームレスにインポート可能です。ナレッジベースは常に自動で最新状態に保たれます。設定オプション
| 項目 | オプション | 出力変数 | 説明 |
|---|---|---|---|
| Extractor | 有効 | {x} Content | 構造化・処理済み情報 |
| 無効 | {x} Document | オリジナルテキスト |
Webクローラー
Webコンテンツを大規模言語モデルでも読みやすい形式に変換します。ナレッジベースはJina ReaderとFirecrawlをサポートしています。Jina Reader
シンプルかつ使いやすいAPIを提供するオープンソースのWeb解析ツールです。Webコンテンツの高速クロールと処理に適しています。
パラメータ設定
| パラメータ | 種類 | 説明 |
|---|---|---|
| URL | 必須 | 対象Webページのアドレス |
| サブページのクロール | 任意 | リンク先ページもクロールするか |
| サイトマップ使用 | 任意 | サイトマップを利用してクロール |
| 制限 | 必須 | クロールする最大ページ数 |
| Extractor有効化 | 任意 | データ抽出方式の選択 |
Firecrawl
きめ細かなクロール制御オプションとAPIサービスを持つオープンソースのWeb解析ツールです。複雑なサイトの深層クロールやバッチ処理に適しています。
パラメータ設定
| パラメータ | 種類 | 説明 |
|---|---|---|
| URL | 必須 | 対象Webページのアドレス |
| 制限 | 必須 | クロールする最大ページ数 |
| サブページクロール | 任意 | リンク先ページもクロールするか |
| 最大深度 | 任意 | 開始URLからクロールする階層の深さ |
| 除外パス | 任意 | クロール対象から除外したいURLパターン |
| 限定パス | 任意 | 指定したパスのみクロール |
| Extractor | 任意 | データ抽出方式の選択 |
| 主要コンテンツのみ抽出 | 任意 | ページの主要テキストやメディアのみ抽出 |
クラウドストレージ
Google Drive、Dropbox、OneDriveなどのクラウドストレージサービスと連携し、Difyが自動でファイルを取得します。選択したドキュメントをインポートするだけなので、事前の手動ダウンロードは不要です。ステップ2:データ処理ツールの設定
このステップでは、コンテンツの抽出、分割、最適なナレッジベース用フォーマットへの変換を行います。これは、料理でいう「食材の下準備」と同じく、後に素早く加工できる状態を整える工程です。ドキュメントプロセッサ
PDF, XLSX, DOCXなど多様な形式のドキュメントが存在しますが、LLMはこれらをそのまま扱えません。そのため、抽出器(Extractor)が各種ファイルを解析・変換し、LLMが扱いやすい形式に変換します。 Difyのドキュメント抽出器、あるいはMarketplaceから「Dify Extractor」「Unstructured」等のツールを選択できます。Doc Extractor(ドキュメント抽出器)

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

Unstructuredは、高度なカスタマイズ可能性を備えた抽出戦略でドキュメントを機械可読形式へ変換します。
抽出戦略(auto, hi_res, fast, OCR-only)や分割方法(by_title, by_page, by_similarity)に柔軟に対応。要素ごとの座標や信頼度、レイアウトなどリッチなメタデータも出力し、企業のドキュメントワークフローや混合タイプファイルの精密な処理に適しています。
抽出戦略(auto, hi_res, fast, OCR-only)や分割方法(by_title, by_page, by_similarity)に柔軟に対応。要素ごとの座標や信頼度、レイアウトなどリッチなメタデータも出力し、企業のドキュメントワークフローや混合タイプファイルの精密な処理に適しています。
分割器(Chunker)
人間が一度に多くの情報を集中して理解できないように、LLMも大量情報の同時処理が苦手です。そのため、分割器は抽出後のドキュメントを小さな「チャンク」と呼ばれる断片に分割します。 用途やドキュメントの種類に応じ、最適な分割戦略が異なります。たとえば製品マニュアルは機能ごと、論文は論理セクションごとが理想的です。Difyでは主に3種類の分割器を用意しています。分割器の種類概要
| 分割器タイプ | 特徴 | 最適用途 |
|---|---|---|
| 汎用分割器 | 固定サイズ分割、区切り文字のカスタマイズ可能 | シンプルなドキュメント |
| 親子分割器 | 二層構造:マッチング精度+豊富なコンテキスト | コンテキスト保持必須な複雑文書 |
| Q&Aプロセッサ | スプレッドシートのQ&Aペア処理 | 構造化Q&Aデータ(CSV/Excel等) |
共通テキスト前処理ルール
すべての分割器で利用できるテキストクリーニングオプション:| オプション | 説明 |
|---|---|
| 連続空白・改行・タブの統一 | 連続する空白文字を単一空白へ変換 |
| URL・メールアドレスの削除 | Webリンクやメールアドレスを自動検出し削除 |
汎用分割器(General Chunker)
シンプルな構造の文書向けの基本的な分割モジュールです。テキスト分割や前処理オプションを柔軟にカスタマイズ可能です。 入力と出力変数| タイプ | 変数 | 説明 |
|---|---|---|
| 入力変数 | {x} Content | 分割対象となる文書コンテンツ |
| 出力変数 | {x} Array[Chunk] | 分割済みコンテンツ配列(各要素は検索・分析向け) |
| 設定項目 | 説明 |
|---|---|
| 区切り文字 | デフォルトは\n(段落区切り用改行)。正規表現も利用可。 |
| 最大チャンク長 | 各セグメントの最大文字数(上限超過時は自動分割) |
| チャンク重複 | 分割時にセグメント間で部分重複させることで情報保持・検索精度を向上 |
親子分割器(Parent-child Chunker)
クエリマッチング精度と豊富なコンテキスト両立のため、二層チャンク構造を採用しています。 親子分割器の仕組み- 子チャンク(高精度マッチング用):通常、1文ごとの細かなセグメント
- 親チャンク(豊富なコンテキスト):該当する子チャンクを含む広い範囲(段落やセクション単位)
| タイプ | 変数 | 説明 |
|---|---|---|
| 入力変数 | {x} Content | 原文テキスト |
| 出力変数 | {x} Array[ParentChunk] | 親チャンク配列 |
| 設定項目 | 説明 |
|---|---|
| 親チャンク区切り文字 | 親チャンクの分割ルール設定 |
| 親チャンク最大長 | 親チャンクの最大文字数 |
| 子チャンク区切り文字 | 子チャンク分割ルール |
| 子チャンク最大長 | 子チャンクの最大文字数 |
| 親モード | 「段落」または「全文書」いずれか選択 |
Q&Aプロセッサ
抽出&分割を1ノードで実施。FAQやQ&Aペアをテーブルとして持つCSV/Excelファイル専用です。 入出力変数| タイプ | 変数 | 説明 |
|---|---|---|
| 入力変数 | {x} Document | 単一ファイル |
| 出力変数 | {x} Array[QAChunk] | Q&Aチャンク配列 |
| 設定項目 | 説明 |
|---|---|
| 質問用カラム番号 | 質問内容の列番号 |
| 回答用カラム番号 | 回答内容の列番号 |
ステップ3:ナレッジベースノードの設定
ドキュメントの処理・分割が完了したら、保存や検索の方法を設定します。ここでは、インデックス作成方法や検索戦略を用途に応じて選択可能です。 本ノードの設定項目は、入力変数、チャンク構造、インデックス方式、検索設定となります。チャンク構造

汎用モード
標準的なドキュメント処理に最適です。ニーズに応じ、柔軟なインデックスと検索設定が選択可能です。親子モード
検索時の高精度マッチングと文脈提供が必要なエンタープライズ向け専門ドキュメントに最適です。HQ(高品質)インデックスのみ対応です。Q&Aモード
構造化された質問回答データ向けです。Q&Aペアが質問部に基づいてインデックス化され、関連回答が検索できます。こちらもHQモードのみ対応です。入力変数
入力変数はデータ処理ノードからの出力をナレッジベースのデータソースとして受け取ります。分割器の出力をナレッジベースノードへ接続します。- 汎用モード:
{x} Array[Chunk](汎用チャンク配列) - 親子モード:
{x} Array[ParentChunk](親チャンク配列) - Q&Aモード:
{x} Array[QAChunk](Q&Aチャンク配列)
インデックス方法と検索設定
インデックス方法はナレッジベース内のコンテンツ整理法を決定し、検索設定はそれに基づいた検索戦略を指定します。 ナレッジベースでは高品質とコスト効率の2方式があり、それぞれ検索方法が異なります。 高品質モードでは、埋め込みモデル(Embedding)によりテキストをベクトル化し、意味的な関連性検索が可能です(完全一致でなくても適切な回答に辿り着けます)。 コスト効率モードでは、各ブロックは10個のキーワードでインデックス化され、埋め込みモデルのコストは発生しません。インデックス方法と検索設定概要
| インデックス方法 | 検索設定 | 説明 |
|---|---|---|
| 高品質 | ベクトル検索 | 意味的類似性(自然言語での深い検索) |
| 全文検索 | キーワードベースの包括的検索 | |
| ハイブリッド検索 | 意味検索+キーワード検索の組合せ | |
| コスト効率 | 逆引きインデックス | 一般的な検索エンジン型方式 |
| チャンク構造 | インデックス方法 | パラメータ | 検索設定 |
|---|---|---|---|
| 汎用モード | 高品質 コスト効率 | 埋め込みモデル キーワード数 | ベクトル 全文 ハイブリッド検索 逆引きインデックス |
| 親子モード | 高品質のみ | 埋め込みモデル | ベクトル 全文 ハイブリッド検索 |
| Q&Aモード | 高品質のみ | 埋め込みモデル | ベクトル 全文 ハイブリッド検索 |
ステップ4:ユーザー入力フォームの作成
ユーザー入力フォームは、パイプライン実行時に必要な初期情報をユーザーから収集します。ワークフローの開始ノードと同様に、必要な设置情報(アップロードファイル、特定パラメータなど)を収集し、パイプラインの柔軟性・利便性を高めます。フォームの作成方法
-
パイプライン構築UI
- 「入力フィールド」をクリックして作成・設定を開始\

- 「入力フィールド」をクリックして作成・設定を開始\
-
ノードパラメータパネル
- ノード選択後、パラメータ入力欄の「+ ユーザー入力を作成」をクリック\

- ノード選択後、パラメータ入力欄の「+ ユーザー入力を作成」をクリック\
ユーザー入力フィールドの追加
各エントランス固有入力

+ボタンからそのソース専用フィールドを追加できます。選択したソースからのみアクセス可能です。

すべてのエントランス共通入力

+ボタンから追加できます。
サポートされる入力フィールドタイプ
ナレッジパイプラインでは7種の入力変数をサポートします:
| フィールドタイプ | 説明 |
|---|---|
| テキスト | 256文字以内の短文の入力欄 |
| 段落 | 長文テキストの入力欄 |
| セレクト | 設定済み候補リストから選択(カスタム不可) |
| ブール値 | 真偽値 |
| 数値 | 数値のみ入力 |
| 単一ファイル | 単一ファイルアップロード(各ファイルタイプ対応) |
| ファイルリスト | 複数ファイルの一括アップロード(各ファイルタイプ対応) |
フィールド設定オプション
全入力フィールドには必須/任意および追加設定があります。適切なチェックで必須化等を指定します。| 設定 | 名称 | 説明 | 例 |
|---|---|---|---|
| 必須設定 | 変数名 | 内部識別用(英数字・アンダースコア推奨) | user_email |
| 表示名 | UI上に表示される名称 | ユーザーメール | |
| タイプ固有設定 | タイプごとの条件 | テキストの最大長制限等 | |
| 追加設定 | デフォルト値 | 未入力時の既定値 | 数値は0、テキストは空文字 |
| プレースホルダー | 入力欄が空のときのヒント表示 | 「メールアドレス入力」 | |
| ツールチップ | 補足説明(マウスホバー時表示) | 「有効なメールアドレスを…」 | |
| 特殊任意設定 | タイプごとの特殊バリデーション | メール形式チェック等 |

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

- 名前とアイコン
ナレッジベース名を決定します。絵文字選択、画像アップロード、画像URLによるアイコン設定が可能です。 - ナレッジベース説明
簡単な説明を記入してください。AIがデータをより適切に理解し検索できるようになります。未入力の場合はDifyのデフォルト検索戦略が使われます。 - 権限
ドロップダウンから適切なアクセス権限を選択してください。
ステップ6:テスト
いよいよ最終工程です! 設定が整ったら、まずは全設定の完全性チェックを行いましょう。チェックは右上のチェックリストボタンで行え、不足項目があると通知されます。
テスト実行

- テスト開始:テスト実行をクリック
- テストファイルインポート:右側ウィンドウからファイル選択
- パラメータ入力:設定した入力フォームに従い必要なパラメータを入力
- パイプライン実行:次へをクリックしテスト開始
