実践！Difyのナレッジベース作成ガイド

## Difyの機能や操作手順まとめ


### 1. ナレッジベースとは？📚

Difyのナレッジベースとは、「よくある質問（FAQ）、マニュアル、専門記事、体験談」などの情報を一か所に整理して保管し、AIがそれらを参照できるようにするための仕組みです。つまり、RAG（Retrieval-Augmented Generation）の概念に基づいた機能です。RAGの詳細については別の記事で解説しておりますので、そちらをご参照ください。

https://qiita.com/Casineria/items/69ab8514b7dba0f94485

https://qiita.com/Casineria/items/93340ab398d1718d36a5

本記事では、Difyのナレッジベースの具体的な使い方について説明します。操作方法に焦点を当てていますが、技術的な詳細を理解したい方向けに、各項目で参考リンクを掲載していますので、必要に応じてご覧ください。

### 2. ナレッジベースの作成・文書アップロード💾

#### 作成手順：
**1. 新規作成**：トップメニューから「ナレッジベース」→「新規作成」  
![スクリーンショット 2025-02-18 21.40.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3867059/fc7cbc7a-8392-4e53-a3af-aad9608a0091.png)

**2.ファイルアップロード**：  
   - ローカルファイル（TXT、Markdown、DOCX、HTML、JSON、PDFなど）  
   - オンラインデータソース（ウェブサイト、Notionなど）
> ※Difyのファイルサイズ、アップロード可能数はサブスクリプションプランに依存
>
>新規データを作成する場合、**Markdown形式**が結局おすすめ
>　理由...
>1. シンプルで記述しやすい 
> 純粋なテキストに見出しやリスト、強調などが簡単に書けるため、情報の整理が容易
>2. 編集・保守が楽
>   テキストエディタで手軽に編集でき、必要に応じてHTMLやPDFに変換も可能
>3. 構造化しやすい
>   各項目を階層化できるので、悩みごとや解決策を明確に区別でき、AIが情報を抽出しやすい構造

詳しくはこちら

https://note.com/wndcon/n/nd92f40129819

![スクリーンショット 2025-02-18 21.41.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3867059/6ace59b2-f951-4c24-8fea-840f577c267b.png)



**3. コンテンツの分割と前処理✂️**：  
とりあえず「親子分割モードのデフォルト設定」を選択👍

>ナレッジベースにアップロードした文書は、**コンテンツ分割**により小さなブロック（チャンク）に分割されます。チャンクに分ける理由は、大きな文章を小さな塊にすることで、「どこにどんな情報があるか」がわかりやすくなるため
>#### 例えば赤ずきんをチャンクに分けると... 
>
>  1. **チャンク1:はじまり**：赤ずきん、おばあさんに会いに森へ
>  2. **チャンク2:狼の罠**：オオカミが先回りし、赤ずきんとおばあさんを飲み込む
>  3. **チャンク3:狩人救出**：狩人が助け、オオカミ退治
>
>こうやって分けておけば、どの部分に何が書いてあるかがすぐに分かりますね。
>
> #### 分割モードとは 📝  
> **1. 汎用分割モード（シンプルに分けるって意味）**  
> - **特徴**：文章を区切り（改行や句読点など）に基づいて、そのまま短いチャンクに分割 
> - **例**：  
>   「今日は雨が降っています。傘を持って行きましょう。」  
>   → 「今日は雨が降っています。」と「傘を持って行きましょう。」の2つに分割  
> - **利点**：ルールがシンプルなため、準備は簡単、どんな文章も大体使える。  

> **2. 親子分割モード（階層的な分けるって感じ)**  
> - **特徴**：大きなチャンク（親）と、その中に含まれる小さなチャンク（子）を組み合わせて分割 
> - **例えば...**：
>   - **親チャンク**：「赤ずきん」  
>     - **子チャンク1:はじまり**：赤ずきん、おばあさんに会いに森へ。
>     - **子チャンク2:狼の罠**：オオカミが先回りし、赤ずきんとおばあさんを飲み込む
>     - **子チャンク3:狩人救出**：狩人が助け、オオカミ退治
> - **利点**：大きな流れ（親チャンク）と詳細な内容（子チャンク）の両方を持ってるから、AIが**文脈**を理解しやすい。 
> #### まとめ 📌  
> - 分割モードでは、**長い文章をどうやって分けるかのルールを決められる**  
> - 基本は**親子分割モード**でいいけど、AIの課金抑えたいなら**汎用分割モード**でシンプルに実装しよう！


![スクリーンショット 2025-02-18 21.55.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3867059/e7a6eaf8-a84c-4c87-b441-f00013f5b42c.png)


**4. インデックス設定と検索方法🔎**：  
 とりあえず「高品質モード」を選択しておけばOK
>
>**解説**
>RAGでは、AIが知識を検索しやすくするために 「インデックス」 を作成する。これは、テキストを「意味の近さ」で検索できるようにする仕組み。
> - **例えば「DifyでRAGを設定するメリットは？」と質問したら...**
>   **こんな手順でシステムは動く!!**
>     - **質問をベクトル化（Embedding）**：
まずは、質問文を「数値データ(ベクトル)」に変換
>     - **ベクトル検索**：
質問のベクトルと、事前に設定したナレッジベースのベクトル(先ほどのチャンクで設定している)を照らし合わせて検索。
>     - **関連情報をLLMに渡し、回答を生成**：
検索で見つけた情報をもとに、ChatGPTなどのLLMが回答を作成。
>
>このような変換ができるように、Difyの「高品質モード」は、アップロードされたデータを、あらかじめ前処理(ベクトル化)しておいて、精度向上、検索結果の評価、できるようにしているらしい。

**詳細はこちら**


https://docs.dify.ai/ja-jp/guides/knowledge-base/create-knowledge-and-upload-documents


https://note.com/brave_quince241/n/n13640d7797d8


![スクリーンショット 2025-02-18 22.21.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3867059/ea7dfd56-8c6d-4517-98cf-8d1ae2d91d22.png)

**5. 埋め込みモデルの設定**：  
🌟 用途に合わせて選択！
正確さを最優先なら → **text-embedding-3-large**
速度とコストを重視なら → **text-embedding-3-small**
バランスを取りたいなら → **text-embedding-ada-002**

> 埋め込みモデル（Embedding Model）とは、先ほど説明した文章や単語を数値のかたまり（ベクトル）に変換するためのAIモデルです。よく使われるのが以下の3つで、お好きなのを選んでくださいということ。  
> 下記は一応その特徴らしい(by ChatGPT)
> ##### 📌 1. **text-embedding-3-large**（高性能・大規模モデル）  
> - **特徴**：  
>   - 高い精度でテキストの意味を理解できます。  
>   - 大規模な学習をしており、長い文章や複雑な内容にも強いです。  
> - **おすすめの用途**：  
>   - 知識検索やFAQシステムなど、正確な検索結果が求められる場合  
>   - 大規模なナレッジベースを扱う場合  
> - **ポイント**：高性能ですが、計算コストが高くなる場合があります💡  
>
> #### 📌 2. **text-embedding-3-small**（軽量・高速モデル）  
> - **特徴**：  
>   - 処理が軽く、動作が速いモデルです。  
>   - 意味理解は「large」より少し劣りますが、十分に実用的です。  
> - **おすすめの用途**：  
>   - リアルタイムのチャットボットや、高速な検索が求められる場合  
>   - モバイルアプリや小規模なシステム  
> - **ポイント**：速度重視で、軽量かつコストを抑えたい場合に適しています🚀  
>
> #### 📌 3. **text-embedding-ada-002**（定番モデル・コストパフォーマンス重視）  
> - **特徴**：  
>   - OpenAIが提供する定番の埋め込みモデルです。  
>   - 高いコストパフォーマンスで、精度と速度のバランスが良いです。  
> - **おすすめの用途**：  
>   - コストを抑えながらも高品質な結果を求める場合  
>   - 多言語対応が必要なナレッジベース  
> - **ポイント**：価格と性能のバランスが取れており、多くのプロジェクトで選ばれています💰  

とりあえず、text-embedding-ada-002で設定しました

![スクリーンショット 2025-02-18 22.20.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3867059/f33b0397-0cf8-4881-9c13-3a63b1da6d25.png)


**6. 検索結果とRAGの実現🔄**：  
「ハイブリッド検索」を選択！

>**検索とは。。。**
ベクトル化したユーザーからの質問に、近い値をベクトル化したナレッジベースから探すこと
>**再ランキング（Rerank）とは。。。**
選ばれたナレッジベースのデータを再評価して、最も適切な情報を選択すること 
> どの検索方法を使うかで、**回答の正確さやスピードが大きく変わる**のでここは結構大事  
> ここでは、代表的な3つの検索設定を解説！  

> #### 📌 1. **ベクトル検索（Vector Search）** 🧠  
> - **特徴**：文章の「意味」に基づいて検索します。  
>   - AIが文章をベクトル（数値）に変換して、意味が近いものを探します。  
>   - キーワードが完全に一致しなくても、「意味が似ている文章」を見つけられます。  
> - **例**：  
>   質問：「安眠のコツは？」  
>   → 「夜はスマホを控えましょう」「就寝前にハーブティーがおすすめ」など意味の近い回答を返します。  
> - **おすすめの用途**：FAQ検索、悩み相談、ドキュメント検索など  
> - **ポイント**：意味を理解するので、誤字や言い回しが違っても適切な結果を出せます✨  

> #### 📌 2. **全文検索（Full-Text Search）** 📝  
> - **特徴**：文章の「言葉（キーワード）」を基に検索します。  
>   - 文書全体をインデックス化して、入力されたキーワードが含まれている部分を探します。  
>   - 検索エンジンのように、直接的なキーワード一致を得意とします。  
> - **例**：  
>   質問：「睡眠不足」  
>   → 「睡眠不足を改善する方法」「睡眠不足の原因とは？」など、キーワードが含まれる文章を返します。  
> - **おすすめの用途**：FAQのキーワード検索やマニュアル内検索など  
> - **ポイント**：キーワードがはっきりしている場合に高速で正確な検索が可能です🚀  

> #### 📌 3. **ハイブリッド検索（Hybrid Search）** 🧩  
> - **特徴**：**ベクトル検索と全文検索を組み合わせた方法**です。  
>   - まず全文検索で「キーワードが含まれる文章」を探し、  
>   - 次にベクトル検索で「意味が近い文章」を再ランキングします。  
> - **例**：  
>   質問：「快眠するには？」  
>   → 「睡眠の質を高める方法」「就寝前のルーティン」など、意味も関連性も高い回答を返します。  
> - **おすすめの用途**：FAQ、ヘルプセンター、ナレッジベースなど、多様な質問が想定される場合  
> - **ポイント**：正確さと広がりのバランスが良く、**最もおすすめの検索設定**です✨  

> #### 📊 検索設定の選び方  
> - **シンプルな検索が欲しい場合** → 「全文検索」がおすすめです💨  
> - **意味を理解した検索が欲しい場合** → 「ベクトル検索」がおすすめです💡  
> - **正確さと意味のバランスを重視したい場合** → 「ハイブリッド検索」がおすすめです🌟  


![スクリーンショット 2025-02-18 22.28.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3867059/73e052d7-e7f8-4b0e-9d7c-aec2f509f283.png)


## まとめ🎉

- **Dify**は、最新情報をリアルタイムに扱うナレッジベースプラットフォームです。  
- **コンテンツの分割**と**インデックス設定**により、LLMがより正確な回答を出せる環境を構築します。  
- **高品質な検索**と**API連携**により、業務の効率化や柔軟なカスタマイズが実現可能です。

これらの機能を活用して、RAGを組み込んだ高精度なAIアプリケーションを、たった数分で構築できる点がDifyの大きな魅力です！🚀

実際に構築したRAGでアプリを作ってみる解説記事は下記を参照ください。

https://qiita.com/Casineria/items/2941fabf0eaed8354e3e