1. Dify初心者です!
私自身Difyを触ったのは初めてですが、簡単にナレッジベースを用いたRAGチャットボットができたので、この手順で誰でも簡単にできるはずです!
初心者が対象なので、そもそもDifyとは何なのか簡単に説明します。
簡単に言うとDifyは、ノーコード/ローコードで、AIアプリ(チャットボット・RAG・ワークフロー)を簡単に作れるプラットフォームです。
2. 今回作るもの
タイトルの通り、ナレッジベースを用いたRAGチャットボットです。
構成としては以下のようなものになります。
- ユーザーが質問する
- AIに与えておいた文章の中から情報を検索する
- 関連する文章があれば抽出してAIに渡す
- AIが返答を生成する
チャットボットで、以下のようなやり取りができるようになります。
※ 記事内では、ナレッジベースに体組成に関するテキストファイルを入れていますが、
ご自身の好きな内容に変更してください。

3. 構築
早速構築に入ります。
3.1. ナレッジベースの作成
ちなみにテキストファイルの内容は、弊社ホームページの「よくある質問」の「体組成について」からいくつか抜粋してきました。
実際のテキストファイルです。
# よくある質問(体組成について)
## 体組成とは何ですか?
からだを構成する組成分で、「脂肪」「筋肉」「骨」「水分」などを指します。
タニタの体組成計では「体重」のほかに「体脂肪率」「筋肉量」「推定骨量」「内臓脂肪(レベル)」「基礎代謝量」などを測定することが出来ます。(※ただし、機種によって表示する項目が異なります)
## なぜ体組成(体脂肪)がはかれるのですか?
タニタの体組成計(体脂肪計)は生体インピーダンス法(Bioelectrical Impedance Analysis:BIA)という測定原理を応用して体内に流される微弱な電流を測定して、体脂肪などを導き出しています。
脂肪組織が電流をほとんど通さないという性質なのに対して、除脂肪組織(脂肪以外の組織で主に筋肉や水分)は電流を通しやすいという性質を持っています。また、組織や成分によって電気の通りやすさが異なりますので、それぞれの電気抵抗値(流した電気の量と出てきた電気の量の差)を計測することで、からだの組織を推測しています。
## BMIとは何ですか?
BMIは、「Body Mass Index」の略で、カラダの大きさを表す指数です。
体重(キログラム)を身長(メートル)の二乗で割った値です。計算機で計算する場合には、下記の方法で計算をお願いいたします。
BMI=体重(kg)÷身長(m)÷身長(m)
また、疾病率が最も少ない、理想的なBMI値は「22」とされています。
## 体脂肪率(体脂肪)とは何ですか?
体内に蓄積された脂分のことを体脂肪といいます。
その体脂肪の量が、体重に占める割合を体脂肪率といいます体脂肪率(%)=体脂肪量(kg)÷体重(kg)×100で表されます。体脂肪が過剰に蓄積された状態が肥満とされています。
次にチャンクの設定はデフォルトのままでいきます。
チャンク識別子の\n\nは、改行でチャンク分けされるということです。

インデックス方法はこれはユーザが質問したときに、関連する文章を検索するときにどのような仕組みを使うのかという選択です。
- 高品質
- AIのモデルを使って検索
- 経済的
- 単語ベースで検索
今回は高品質を選択し、埋め込みモデルはtext-embedding-3-largeを用います。
このモデルは文章を数字の配列に変換することができます。その配列を使ってユーザの質問から関連するチャンクを探し出せます。
この状態で保存して、ナレッジを作成します。
3.2. アプリの作成
ユーザー入力とLLMの間のプラスボタンから知識検索を押してください。

この部分をテスト実行すると出力を確認できます。
ちゃんと文章が検索できていますね。

コンテキストをresultとして、SYSTEMに/からコンテキストを選び、
「以下のコンテキストを使ってユーザーの質問に回答してください。」と設定します。
検索された文章を参照して返答を生成してくれます。
これで完成です!

3.3. おまけ
ちなみに含まれていない情報を質問すると以下のような回答が得られます。
テキストに含まれないことが書かれながらも、一般的な回答が得られます。

4. まとめ
今回はDifyを用いてナレッジベースを用いたチャットボットを構築しました。
Dify初心者の私でも簡単に構築できたのでよかったです。
プログラミングを全くせずにここまでできるのはかなり便利ですね。
次はもう少し色々な機能を入れて構築したいです。








