# ナレッジベースの概要と設計方針

## RAGとは

RAG（Retrieval-Augmented Generation：検索拡張生成）は、LLM（大規模言語モデル）が回答を生成する際に、外部ドキュメント検索（Retrieval）で得た根拠情報を参照しながら生成（Generation）することで、回答の正確性・再現性を高める手法です。

### RAGの仕組み

![](/files/qu3tx3pTpRuo6WzKwgjg)

1. **ドキュメントを取り込み**（PDF/HTML/Markdown/FAQなど）
2. **チャンク分割**（後段の検索に適した粒度へ分割）
3. **埋め込み（Embedding）作成**し、ベクトルDBへ格納
4. ユーザーの質問を **ベクトル化**し、近傍検索で関連チャンクを取得
5. 取得したチャンクを **コンテキスト**としてプロンプトに差し込み、LLMが回答を生成

### RAGのメリット

* **最新情報を反映しやすい**：モデル自体の再学習なしでドキュメント更新に追従できる
* **ハルシネーション抑制**：根拠に基づく回答になりやすく、誤回答の防止につながる
* **出典提示・監査性**：参照元ドキュメントを示しやすい
* **運用で改善可能**：検索ヒット率、チャンク設計、メタデータ、評価で継続改善できる

{% hint style="warning" %}
RAGでも「検索で誤ったチャンクを拾う」「根拠が薄い」「質問が曖昧」などの条件では誤答が起き得ます。ナレッジ設計と評価が重要です。
{% endhint %}

## ナレッジベースとは

Difyのナレッジベースは、RAGを実現するための**ドキュメント管理・検索基盤**です。ドキュメントを登録し、チャンク化・インデックス化して、アプリケーションから検索して参照できる状態にします。

### ナレッジベース作成フロー

1. **ドキュメントのアップロード**
2. **セグメント設定（チャンク分割）**：自動設定またはルールベースでのカスタム設定が可能。
3. **インデックス作成**
   * **高品質モード**（推奨）：Embeddingモデルを使用してベクトル化
   * **経済的モード**：キーワード検索用のインデックスのみ作成（トークン消費を抑えるが精度は劣る場合がある）
4. **アプリケーションから検索・参照**

### 検索精度の向上機能（Dify推奨設定）

特にデジタルヒューマン用途など、高い回答精度が求められる場合は以下の設定を検討します。

* **ハイブリッド検索（Hybrid Search）**： ベクトル検索（意味の類似性）とキーワード検索（単語の一致）を組み合わせ、両方の長所を活かす手法です。専門用語が多い場合に有効です。
* **Rerank（再ランク付け）設定**： 検索で粗く抽出したチャンク候補を、Rerankモデルを用いて「質問との関連度」で再評価し、並び替える機能です。最も関連性の高い情報だけをLLMに渡すことで、回答精度が大幅に向上します。

## デジタルヒューマン向け設計方針

デジタルヒューマン（対話型エージェント）用途では、

* 質問が多岐にわたり
* 言い回しが揺れ
* 正誤がユーザー体験に直結する

ため、\*\*「答えやすい形に情報を整理する」\*\*ことが最優先です。

### よくある登録情報

| 情報種別          | 例                            |
| ------------- | ---------------------------- |
| **製品・サービス情報** | 製品カタログ、価格表、仕様、プラン、制限、比較、導入手順 |
| **FAQ**       | よくある質問と回答、エラー、トラブルシューティング    |
| **対応マニュアル**   | オペレーション手順、一次回答テンプレ、エスカレーション  |
| **企業情報**      | 概要、沿革、所在地、問い合わせ、規約、ポリシー      |

### ナレッジベースの分割戦略

ナレッジは「一つにまとめれば良い」わけではなく、検索精度・運用性の観点で分割が有効です。

### 分割の考え方（推奨）

* **用途で分割**：FAQ / 仕様 / マニュアル / 規約 など
* **更新頻度で分割**：頻繁に変わる情報と、固定情報を分ける
* **公開範囲（権限）で分割**：社外公開OK / 社内限定 / 機密 を分ける
* **回答の責任境界で分割**：正確性が必須の領域（契約・法務等）は特に独立管理

| 方針         | 用途        | メリット         |
| ---------- | --------- | ------------ |
| **単一ナレッジ** | 小規模プロジェクト | シンプル、管理が容易   |
| **目的別分割**  | 中規模以上     | 検索精度向上、更新が容易 |

### 推奨分割例

```jsx
デジタルヒューマンプロジェクト
├── ナレッジベースA: 製品情報（ハイブリッド検索推奨）
├── ナレッジベースB: FAQ（Q&A形式でチャンク化）
├── ナレッジベースC: 会社情報
└── ナレッジベースD: 対応マニュアル（社内用/参照優先度低）
```

## 設計時のチェックリスト

* [ ] どのような質問に答える必要があるか
* [ ] どの情報ソースがあるか
* [ ] 情報の更新頻度はどの程度か
* [ ] 機密情報は含まれるか
* [ ] マルチナレッジにするか単一にするか
* [ ] **検索設定（ハイブリッド検索/Rerank）は必要か**

## 参考URL

Difyナレッジベースガイド: <https://docs.dify.ai/ja/use-dify/knowledge>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalhumans.jp/dify-guide/knowledge-base/dify-docs-knowledge-base-overview-and-design-policy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
