difyで店舗からの問い合わせに答える社用チャットボット作成


社内システムや処理についてのマニュアルは多く存在するものの、それが社内フォルダのどこに保存されているのかがわかりにくかったりして、
結局本社の担当者に電話などで問い合わせが来ることになり、担当者が休日でも回答しているような状態になってしまっている。

担当者の負担を減らす＆店舗としても気軽に疑問を解消できるように
**社内ナレッジを回答してくれるチャットボット**を作りたいと思います！

例えば「A店の担当者は誰？」とか「レジのマニュアルはどこに保存されてる？」とかそんな質問に回答してほしい。
（マニュアルの内容を答えるOR保存場所を答えるどっちがいいかな）



## difyを登録

### テンプレを選択
「テンプレートから作成」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/056ff488-39a1-4aa1-bee7-7cc01b8b887c.png)

今回作りたいのは、RAGを使った情報検索機能付きチャットボット。（多分）
テンプレから「knowledge」で検索してこの赤枠のテンプレを使いました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/93e92e24-e72d-4200-8a24-0c6846069e63.png)

<!-- open属性あり -->
<details open><summary>RAGとは？</summary>


## RAGとは？
RAG（Retrieval-Augmented Generation）は、情報検索（Retrieval）と生成（Generation）を組み合わせた技術です。大規模言語モデル（LLM）単体では対応しにくい最新情報や専門知識を取り入れるために使われます。


✅ RAGの仕組み
情報検索（Retrieval）
外部データベースや文書から、ユーザーの質問に関連する情報を検索
生成（Generation）
検索結果を基に、LLMが自然な文章を生成


✅ RAGの主な特徴
最新情報の活用：学習データにない情報もリアルタイムで参照可能
精度向上：より正確な回答が得られ、ハルシネーション（誤情報生成）のリスクを低減
カスタマイズ性：企業独自の文書や社内データを活用できる


✅ 活用例
FAQ応答：社内マニュアルから必要な情報を抽出し、質問に即答
法律や医療情報：法改正や最新の医療データを反映した回答
ECサイト：製品情報を検索し、個別にパーソナライズした提案
RAGは、情報の正確性と柔軟性を高めるために、チャットボットや文書要約、検索エンジンで広く利用されています。

</details>

### ナレッジを登録
以下の形式でナレッジを登録できるとのこと。
実際に導入するとなると膨大なナレッジの量になるはずなので、どんな形式で誰がどの頻度で更新するのかなど色々検討事項が多そう。
とりあえず今はテストなので、csv、md形式でアップロード。

**1. アップロードする場合：csv、md形式
2. 連携させる場合：ウェブサイト、Nortion**


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/2f7061b9-5b46-4072-8eb1-98e200668d67.png)


## LLMの設定
今回は無料で使えるためGeminiを使用。
APIキーの取得も簡単でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/7791eff0-3ec0-40df-ba47-ea693adf979d.png)

コンテキスト：Knowledge Retrieval
→result Array[Object]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/7165395f-35d9-4863-9542-99bfbc924f36.png)

## 話し方を指示
以前店舗に対してアンケートを行ったところ既存のマニュアルに対して、「言葉遣いがまどろっこしくてわかりにくい」という声があったので、カジュアルに答えてくれるように指示をしてみる。

・SYSTEM＝
もともとなんかいろいろ入ってたところはそのままにして、下4行は追記。
「大阪弁の18歳の女の子（弊社設立時のペルソナ）、且つ小売店の店長が部下に話すような口調で話すように」と文章を加えてみた。


## ひっかかったポイント
「rerankモデルは必須です」というエラーが出た

### rerankモデルとは
https://note.com/ai_dev_lab/n/na85aaf3d86dd

ナレッジの設定画面のエラー

RAGで使用する場合、ナレッジの設定でRerankモデルを指定する必要があるとのこと
使用できるモデルの中でRerankモデルは2種類だけだったので、無料枠があるCohereを使う。
これも簡単にAPIキー取得できました。



### ナレッジの設定

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/8ff51b3e-b596-4fd7-85e4-f3ac90490904.png)


①「経済的」→「高品質」に変更

②検索設定
→「ハイブリット検索」を選択


③ウェイト設定
→Rerankモデルを選択

④Rerankモデルの選択
→Cohereをインストールして、トライアル版のAPIキーを入力




## 公開
ナレッジの設定でRerankモデルを設定するとエラーが消えたので、これで一旦公開してみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/379e1812-91ae-419d-b9f5-0881b53e12cb.png)


### マニュアルの内容を聞いてみるパターン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/7e2cc6ef-22e0-4b5b-9349-e988f76fe446.png)

ちゃんと答えてくれた。

### マニュアルの場所を聞いてみるパターン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/1f0da69b-3198-47c6-bc9d-3e21f239e037.png)


### マニュアルの場所のみ知っている情報を聞いてみたパターン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/246a531f-7783-4344-82d2-692bfd8136d8.png)
「マニュアルの場所を教えて」とはっきり聞かなくてもちゃんと場所を教えてくれた！
かしこい！


## 実際に運用していくとなったときの課題点

### ナレッジの更新
頻度：最低でも月1回くらいは更新したい
形式：csvやテキストファイルをインポートするより、非公開の簡易サイトを作ったほうがいいのか？
Notionにまとめたほうがいいのか？Notionは無料版でどこまでできるのか？

表みたいな状態の資料が多いけど、文章形式のほうが理解してもらいやすいのか？
→どちらもインポートしてためしてみたところ、文章形式のほうが良い回答が出た気がする
でも全部の文章形式＆にするのは結構大変


### セキュリティ面
IPアドレス制限とかしたければこのSTARTのところで設定できそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3939758/9e352a42-70cb-456d-a320-31732bbf2f00.png)



## その他アイデア
質問回答チャットボットについては、今回は店舗用として作りましたが本社用も欲しい。
同じものでもいい


## その他生成AIで作ってみたいアプリ
### アンケート要約アプリ
→都度ChatGPTとかワードクラウド使ってこまごま指示を出して要約しているので、都度指示ださなくても結果アップロードするだけで良い感じにまとめてくれるアプリがあればだれでも簡単に使える


### 交通費精算アプリ
→ルートをGoogleMapとかで選んであとは領収書の写真撮るだけで必要書類の作成がすべて終わるようなアプリ