> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 知識ベースを使用したカスタマーサービスボット

> このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/learn/tutorials/customer-service-bot) を参照してください。

前回の実験では、ファイルアップロードの基本的な使い方を学びました。しかし、読み込む必要のあるテキストが LLM のコンテキストウィンドウを超える場合、知識ベースを使用する必要があります。

> **コンテキストとは？**
>
> コンテキストウィンドウとは、LLM がテキストを処理する際に「見る」ことができ、「記憶」できるテキストの範囲を指します。これは、モデルが応答を生成したりテキストを続ける際に、どれだけの過去のテキスト情報を参照できるかを決定します。ウィンドウが大きいほど、モデルはより多くの文脈情報を利用でき、生成されるコンテンツは通常より正確で一貫性があります。

以前、LLM の幻覚の概念について学びました。多くの場合、LLM 知識ベースによりエージェントは正確な情報を見つけることができ、質問に正確に答えることができます。カスタマーサービスや検索ツールなどの特定分野での応用があります。

従来のカスタマーサービスボットは、多くの場合キーワード検索に基づいています。ユーザーがキーワード外の質問を入力すると、ボットは問題を解決できません。知識ベースはこの問題を解決するために設計されており、セマンティックレベルの検索を可能にし、人間のエージェントの負担を軽減します。

実験を始める前に、知識ベースの核心は検索であり、LLM ではないことを覚えておいてください。LLM は出力プロセスを強化しますが、本当の必要性は依然として回答を生成することです。

### この実験で学ぶこと

* チャットフローの基本的な使い方
* 知識ベースと外部知識ベースの使用方法
* 埋め込みの概念

### 前提条件

#### アプリケーションの作成

Dify で、**空白から作成 - チャットフロー** を選択します。

<Frame>
  ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/0147e0d6fa1412dcf38ff0b12d30e5fe.png)
</Frame>

#### モデルプロバイダーの追加

この実験では埋め込みモデルを使用します。現在サポートされている埋め込みモデルプロバイダーには、OpenAI と Cohere が含まれます。Dify のモデルプロバイダーで、`TEXT EMBEDDING`ラベルがあるものがサポートされています。少なくとも 1 つを追加し、十分な残高があることを確認してください。

<Frame>
  ![この実験では埋め込みモデルを使用します](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/ebfb40e8b80adb8d7e1096ee5da16fad.png)
</Frame>

> **埋め込みとは？**
>
> 「埋め込み」は、離散変数（単語、文、または文書全体など）を連続ベクトル表現に変換する技術です。
>
> 簡単に言えば、自然言語をデータに処理する際、テキストをベクトルに変換します。このプロセスを埋め込みと呼びます。意味的に類似したテキストのベクトルは近くになり、意味的に反対のテキストのベクトルは離れます。LLM はこのデータを使用してトレーニングを行い、後続のベクトルを予測し、テキストを生成します。

### 知識ベースの作成

Dify にログイン -> 知識 -> 知識を作成

Dify は 3 つのデータソースをサポートしています：ドキュメント、Notion、ウェブページ。

ローカルテキストファイルの場合、ファイルの種類とサイズ制限に注意してください。Notion コンテンツの同期には Notion アカウントのバインドが必要です。ウェブサイトの同期には **Jina** または **Firecrawl API** を使用する必要があります。

まずローカルドキュメントのアップロードを例として始めます。

#### チャンク設定

ドキュメントをアップロードすると、次のページが表示されます：

<Frame>
  ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/0dab2d0a607d9486ae973d897b0c08bd.png)
</Frame>

右側にセグメンテーションプレビューが表示されます。デフォルトでは自動セグメンテーションとクリーニングが選択されています。Dify はコンテンツに基づいて記事を自動的に多くの段落に分割します。カスタム設定で他のセグメンテーションルールを設定することもできます。

#### インデックス方法

通常は **高品質** を選択することが好まれますが、これは追加のトークンを消費します。**経済的** を選択するとトークンを消費しません。

#### 埋め込みモデル

使用前にモデルプロバイダーのドキュメントと価格情報を参照してください。

異なる埋め込みモデルは異なるシナリオに適しています。例えば、Cohere の`embed-english`は英語ドキュメントに適しており、`embed-multilingual`は多言語ドキュメントに適しています。

#### 検索設定

Dify は 3 つの検索機能を提供しています：ベクトル検索、全文検索、ハイブリッド検索。ハイブリッド検索が最もよく使用されます。

ハイブリッド検索では、重みを設定したり、再ランキングモデルを使用したりできます。重みを設定する際、検索がセマンティクスとキーワードのどちらをより重視すべきかを設定できます。例えば、下の画像では、セマンティクスが重みの 70% を占め、キーワードが 30% を占めています。

<Frame>
  ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/6a1f2b4a6e1b63febdaee3e01c1d39a4.png)
</Frame>

**保存して処理** をクリックするとドキュメントが処理されます。処理後、ドキュメントはアプリケーションで使用できます。

<Frame>
  ![保存して処理をクリックするとドキュメントが処理されます](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/fdc20eb804ec39a308726324f6b33f45.png)
</Frame>

#### ウェブサイトからの同期

多くの場合、ヘルプドキュメンテーションに基づいてスマートカスタマーサービスボットを構築する必要があります。Dify を例として、[Dify ヘルプドキュメンテーション](https://docs.dify.ai)を知識ベースに変換できます。

現在、Dify は最大 50 ページの処理をサポートしています。数量制限に注意してください。超過した場合は、新しい知識ベースを作成できます。

<Frame>
  ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/8936a4f7952c7aefe5f9d58ee730883c.png)
</Frame>

#### 知識ベースコンテンツの調整

知識ベースがすべてのドキュメントを処理した後、知識ベース内のセグメンテーションの一貫性を確認することが最善です。不一致は検索効果に影響し、手動で調整する必要があります。

ドキュメントコンテンツをクリックして、セグメント化されたコンテンツを閲覧します。無関係なコンテンツがある場合は、無効化または削除できます。

コンテンツが別の段落にセグメント化されている場合も、元に戻す必要があります。

#### 召回テスト

知識ベースのドキュメントページで、左サイドバーの召回テストをクリックしてキーワードを入力し、検索結果の精度をテストします。

### ノードの追加

作成した APP に入り、スマートカスタマーサービスボットの構築を始めましょう。

#### 質問分類ノード

異なるユーザーニーズを分離するために質問分類ノードを使用する必要があります。場合によっては、ユーザーが無関係な話題についてチャットすることもあるため、これに対しても分類を設定する必要があります。

分類をより正確にするために、より良い LLM を選択する必要があり、分類は十分に具体的で十分な区別がある必要があります。

参考分類は以下の通りです：

* ユーザーが無関係な質問をする
* ユーザーが Dify 関連の質問をする
* ユーザーが技術用語の説明を求める
* ユーザーがコミュニティへの参加について尋ねる

<Frame>
  ![ユーザーがコミュニティへの参加について尋ねる](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/627566df2b28b58ab84e53d3737c6927.png)
</Frame>

#### 直接返信ノード

質問分類では、「ユーザーが無関係な質問をする」と「ユーザーがコミュニティへの参加について尋ねる」は LLM 処理を必要とせず返信できます。したがって、これら 2 つの質問の後に直接返信ノードを直接接続できます。

「ユーザーが無関係な質問をする」：

ユーザーをヘルプドキュメンテーションに誘導し、自分で問題を解決しようとしてもらうことができます。例えば：

```
申し訳ございませんが、ご質問にお答えできません。さらにヘルプが必要な場合は、[ヘルプドキュメンテーション](https://docs.dify.ai)をご確認ください。
```

Dify は Markdown 形式のテキスト出力をサポートしています。Markdown を使用して出力のテキスト形式を豊かにできます。Markdown を使用してテキスト内に画像を挿入することもできます。

#### 知識検索ノード

「ユーザーが Dify 関連の質問をする」の後に知識検索ノードを追加し、使用する知識ベースをチェックします。

#### LLM ノード

知識検索ノードの次のノードでは、知識ベースから取得したコンテンツを整理するための LLM ノードを選択する必要があります。

LLM はユーザーの質問に基づいて返信を調整し、返信をより適切にする必要があります。

コンテキスト：知識検索ノードの出力を LLM ノードのコンテキストとして使用する必要があります。

システムプロンプト：`{{context}}`に基づいて、`{{user question}}`に答えてください。

<Frame>
  ![システムプロンプト](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/0052ebf236d55dc0c143c5dbfe5f1e76.png)
</Frame>

プロンプト作成エリアで`/`または`{`を使用して変数を参照できます。変数では、`sys.`で始まる変数はシステム変数です。詳細はヘルプドキュメンテーションを参照してください。

さらに、LLM メモリを有効にして、ユーザーの会話体験をより一貫性のあるものにすることができます。

### 質問 1：外部知識ベースの接続方法

知識ベース機能では、AWS Bedrock 知識ベースなどの外部知識ベース API を通じて外部知識ベースに接続できます。

<Frame>
  ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/7bcfb95e806966a868885814f0d7dc35.png)
</Frame>

### 質問 2：API を通じて知識ベースを管理する方法

知識ベース API を通じて知識ベースの追加、削除、ステータスのクエリができます。

<Frame>
  ![](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/intermediate/cda4458ccb9be9e1c3ec9821fb5c5f99.png)
</Frame>

知識ベースがデプロイされているインスタンスで、**知識ベース -> API** に移動し、API キーを作成します。API キーは安全に保管してください。

### 質問 3：カスタマーサービスボットをウェブページに埋め込む方法

アプリケーションのデプロイ後、ウェブページ埋め込みを選択し、適切な埋め込み方法を選択して、コードをウェブページの適切な場所に貼り付けます。
