Difyにナレッジベースを作成する
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
前回の記事で FAQ 資料が完成しました。この記事では、Dify のナレッジベースに FAQ ファイルをアップロードし、チャンク分割の設定を行い、検索テストで期待どおりの結果が返るかを確認するまでの作業をまとめています。
【広告】 XServer VPS には Dify のアプリイメージが用意されています。
VPS上に独立した Claude Code 環境を簡単に構築することができます。
VPSでいろいろ試すなら『XServer VPS』
ナレッジベースを作成する
ナレッジの基本設定
Dify の管理画面で、上部ナビゲーションの「ナレッジ」をクリックし、「+ ナレッジベースを作成」を選択します。
ナレッジベースの名前は、後から見て何のデータかわかるものにしておきます。今回は Claude Code Lab の記事を題材にしているので、そのまま記事シリーズの名前を付けました。
ドキュメントをアップロードする
対応ファイル形式
Dify のナレッジベースは、さまざまなファイル形式に対応しています。
| カテゴリ | 対応形式 |
|---|---|
| テキスト | TXT、Markdown、HTML、XML |
| ドキュメント | PDF、DOCX、PPTX、EPUB |
| データ | CSV、XLSX、XLS、JSONL |
| メール | EML、MSG |
前回の記事で、FAQ 資料は Markdown(.md)形式で作成しました。Dify がネイティブに対応しており、Q: / A: のプレフィックスも正しくパースされます。
アップロードの手順
ナレッジベースの作成画面で「ファイルをアップロード」を選択し、前回作成した5つの FAQ ファイルをまとめてアップロードします。
| ファイル | カテゴリ | Q&A数 |
|---|---|---|
| 01-basics-and-safety.md | 基本と安全性・環境構成の選定 | 15 |
| 02-environment-setup.md | Ubuntu・ユーザー・SSH・リソース制限 | 14 |
| 03-install-and-workflow.md | インストール・ワークフロー設定 | 8 |
| 04-file-sync-and-dev.md | ファイル同期・WordPress・開発ツール | 11 |
| 05-daily-dev-and-ops.md | 日常開発・新規プロジェクト・移行 | 15 |
アップロードが完了すると、テキストの分割設定画面に進みます。
チャンク分割の設定を確認する
チャンクとは何か
チャンクとは、アップロードしたドキュメントを検索可能な単位に分割した断片のことです。お客様が質問したとき、Dify はナレッジベース全体ではなく、関連するチャンクだけを検索して LLM に渡します。
分割の仕方が回答精度に直結します。チャンクが大きすぎると関係ない情報まで含まれ、小さすぎると文脈が失われます。FAQ 形式(1問1答)で資料を作っておくと、1つの Q&A ペアが1チャンクになるため、この問題を回避できます。
分割サイズの考え方
Dify のチャンク設定画面では、以下の項目を設定します。
| 項目 | 設定値 | 説明 |
|---|---|---|
| チャンク設定 | 汎用 | テキスト分割モード。Q&A形式でも正しく動作する |
| チャンク識別子 | \n\n(空行) | 空行で区切る。FAQ の Q&A ペア間に空行があるため、1問1答で分割される |
| 最大チャンク長 | 1,024 characters | デフォルトのまま。FAQ は1問あたり数百文字なので十分 |
| チャンクのオーバーラップ | 50 characters | 隣接するチャンクの重複部分。デフォルトのまま |
| インデックス方法 | 高品質 | Embeddingモデルでベクトル化する。精度重視 |
| 埋め込みモデル | text-embedding-3-small | 記事2で選定したOpenAIのEmbeddingモデル |
| 検索設定 | ベクトル検索 | セマンティック検索。意味的に近いチャンクを返す |
| トップ K | 3 | 検索結果の上位3件を LLM に渡す |
埋め込みモデルは、デフォルトでは text-embedding-3-large が選択されています。今回は text-embedding-3-small に変更しました。FAQ 用途では small で十分な精度があり、コストも抑えられます。一度「高品質」モードで埋め込みを行うと「経済的」モードに戻せないため、モデルの選択は最初に確認しておきます。
設定が決まったら「チャンクをプレビュー」で分割結果を確認します。FAQ の Q&A ペアごとに1チャンクになっていれば正しく動作しています。確認できたら「保存して処理」を実行します。
ナレッジベースの検索テストをする
テストクエリで期待どおりの結果が返るか確認
ドキュメントの処理が完了したら、ナレッジベースの「検索テスト」画面でテストクエリを実行します。質問文を入力すると、関連度の高いチャンクがスコア付きで返ってきます。
テストクエリは、実際にユーザーが聞きそうな自然な言い回しで試すのがポイントです。FAQ に書かれた質問文そのままではなく、少し表現を変えて検索してみます。
| テストクエリの例 | 期待するヒット |
|---|---|
| Claude Code って何? | Claude Code の基本説明に関する FAQ |
| WSL2ではだめなの? | 環境構成の比較に関する FAQ |
| 毎日の作業の流れを教えて | 日常の開発サイクルに関する FAQ |
検索結果のスコアは 0〜1 の範囲で、1 に近いほど関連度が高いことを示します。スコアが 0.3 以上であれば、おおむね関連するチャンクがヒットしていると判断できます。
期待どおりの FAQ がヒットしない場合は、以下を見直します。
- FAQ の質問文が抽象的すぎる — 質問文にキーワードが含まれていないと検索にヒットしにくい
- チャンク分割が正しくない — 1つのチャンクに複数の Q&A が混在していないか確認
- 回答文に情報が足りない — 回答が短すぎるとベクトルの特徴量が不足し、検索精度が下がる
検索テストで問題がなければ、ナレッジベースの準備は完了です。次の記事では、このナレッジベースを使ってチャットボットを構築し、サイトに公開します。
【広告】 XServer VPS には Dify のアプリイメージが用意されています。
VPS上に独立した Claude Code 環境を簡単に構築することができます。
VPSでいろいろ試すなら『XServer VPS』
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
本ページの内容は可能な限り正確な情報を提供するよう努めていますが、内容の正確性・最新性・安全性を保証するものではありません。本情報を利用して生じたいかなる損害についても、当方は一切の責任を負いません。実施にあたっては必ずご自身の判断と自己責任にてお願いいたします。