Dataikuを使って完全ノーコードで、1時間でRAG作成→AIチャットボットを作ってみた(自動車保険の約款編)

# 目次

[1.はじめに](#1-はじめに)
[2.完成形のご紹介](#2-完成形のご紹介)
[3.環境準備](#3-環境準備)
[4.PDF読み込み](#4-PDF読み込み)
[5.PDF文字起こし](#5-PDF文字起こし)
[6.RAG作成](#6-RAG作成)
[7.AIチャットボット作成](#7-AIチャットボット作成)
[8.おわりに](#8-おわりに)


# 1. はじめに
4/25に下記の通りプレスリリースで**Dataiku Answers**発表しました。

[**Dataikuが、企業全体で生成AIチャットを可能に**
Dataiku Answersは安全でカスタマイズされた拡大可能な対話型AIを企業に提供](https://www.dataiku.com/ja/%E3%83%97%E3%83%AC%E3%82%B9%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9/dataiku-answers/)


_Dataiku Answersは、データチームがエンタープライズ規模で検索拡張生成（RAG）を使用して生成AIを搭載したチャット機能を構築するための新しい方法です。Dataiku Answersを使用することで、指定した大規模言語モデル（LLM）を選択し、RAG技術を利用して組織固有のデータを供給し、組織全体のあらゆる部門のためにカスタマイズされたAIチャットボットを構築できます。_

<br>

ということで早速、文系ノーコーダーの私がAIチャットボットの構築にチャレンジしてみました。

# 2. 完成形のご紹介
自動車保険のパンフレットと約款でRAGをつくり、それを参照するAIチャットボットを作りました。

所要時間：１時間弱で完全**ノーコード**でできました。(もちろんコーディングを使ってカスタマイズしていくことも可能です)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/bdd21a1e-f589-f51a-5ec0-63b829b49153.png)

実際に「パンクは車両保険の補償の対象ですか？」と質問してみると、こんな回答とソースが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/2384244a-a89a-6c68-1d07-e55445555a55.png)

比較のために、今回作成したRAG（Knowledge Bank）を使わずに、単純なChatGPT４が持っている知識だけで回答するよう指示すると、誤った回答が返ってきました。ということで作成したRAGがちゃんと機能していることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/5aeb4715-20c4-70c2-4bde-0060142bbdd2.png)

今回作成したフローはこちらです。
PDF読み込み→PDFの文字起こし→RAG作成→チャットボット作成の流れです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/d8535d4d-74e3-b06d-ba9c-20ba9e713cfe.png)

# 3. 環境準備

## 3-1.　Dataikuの環境
[無料版](https://www.dataiku.com/ja/%E8%A3%BD%E5%93%81/%E5%90%84%E7%A8%AE%E3%83%97%E3%83%A9%E3%83%B3%E3%81%A8%E6%A9%9F%E8%83%BD/)もしくは[Cloudトライアル](https://www.dataiku.com/ja/%E8%A3%BD%E5%93%81/%E5%A7%8B%E3%82%81%E3%82%8B/)をご用意ください。もちろん有償のインストール版をお持ちの方はそちらをご利用ください。

おすすめはセットアップが簡単なCloud版です。

※Chatbotを社内に展開する際はExplorerもしくはReaderライセンスが必要になります。




## 3-2.　Plugin
- [Text extraction and OCR](https://www.dataiku.com/product/plugins/tesseract-ocr/)
- Dataiku Answers 　※まだ一般公開されていないようです。近いうちにこちらの[Plugin](https://www.dataiku.com/product/plugins/?filter%5Bplugins-type%5D=webapp)に表示されるはずです。

## 3-3.Code Envの設定

新しくPython3.9の環境を作り、Packageをインストールします。(私はこのあたりの知識がないので、今回一番時間がかかったのはここです。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/0a8d70c3-0984-63ae-02b2-783845b8d096.png)


## 3-4.LLM
ご自身でご契約されているLLMのAPI Keyが必要になります。（※こちらのキャプチャはCloud版）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/bf166145-7d53-66c3-220b-4598bcdf3346.png)

## 3-5.PDF
データの取り込み方は様々な方法が考えられますが、今回はPDFにしました。
ご自身でPDFをご用意ください。

私は自分で契約している保険会社の自動車保険のパンフレットと約款を用意しました。
- [自動車保険 パンフレット兼重要事項説明書のご案内](https://www.tokiomarine-nichido.co.jp/service/pdf/total_assist_pamphlet_240101.pdf)
- [自動車保険 Ｗｅｂ約款のご案内](https://www.tokiomarine-nichido.co.jp/service/pdf/total_assist_yakkan_240101.pdf)



# 4. PDF読み込み

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/5d762fc7-af26-4651-5963-5e1b92b32e6a.png)

DSS上で新しいプロジェクトを開いて用意したPDFを読み込ませます。データセットからフォルダーを選んで、PDFをアップロードする箱をつくります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/6954c1b5-84ca-9acc-cbfa-b52605562e66.png)

今回使いたいPDFをアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/80c1cc59-9726-3a9d-087a-a0137e2b3a45.png)



# 5. PDF文字起こし
Dataikuってこんなこともできるのー！？って驚いた機能の１つです。
要はOCRの機能（Pluginから追加）があります。PDFから文字起こしをしてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/3e1af6a3-b084-d96d-3395-08703d46b70e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/8e3a80de-c557-4ed6-0d37-2b53e1dcd8da.png)
今回は**Text extraction**(テキスト抽出)を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/c5e31174-eb84-3035-835c-792d1586be2c.png)

そうすると、下図のようにPDFに記載されたテキストが抽出できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/2b94ced6-5c21-0f00-8c44-92fcc03488c4.png)

# 6. RAG作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/f63382f2-2922-e3ee-e8c0-d334a8632b44.png)

次はRAGを作っていきます。**埋め込みレシピ**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/c0fcaf3d-d832-e577-585e-0276945c621a.png)

設定画面は下図のように入力していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/94913569-e4ed-ca99-5d71-62ffda5aa185.png)

Knowledge bank settingをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/eb36385a-8ed6-af8d-2a73-c466b5a6cd8d.png)

Environmentは今回設定した環境を選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/f5548fbf-082d-eac3-0486-bdd535d7f3d3.png)


# 7. AIチャットボット作成
WebAppのVisual Webappから**Answer**を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/f9dc8885-9305-ebb4-4cf1-6cdf35a27079.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/a387fbf1-2b05-95eb-9aa4-b822f6bfc6aa.png)

設定は下記の通りです。Logging DatasetとGeneral Feedback Datsetは新しいものを作ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/90d0c850-7c6f-a289-e891-c68476a134dd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/a4a18f9e-c944-5c55-8741-34db1911fdfd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/e3642489-c0f4-95fc-3b89-7f9fe72622f2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/0528b8fb-261f-a38c-2050-2032c30ddd44.png)

# 8. おわりに 

いかがでしたか？　ノーコードでRAG＋AIチャットボットができることで、市民開発でき、AIやLLMの活用が飛躍的に広がっていく世界が見えてきました。

では、なぜDataikuを使う必要があるのでしょう？

- 上記で説明した通り操作が簡単、コーディングによるカスタマイズも可能です。そうすることによりスピーディにスケールさせることができます。
- 精度を良くするために、インプットデータを増やすことが可能です。複数なDBからデータを集めたり、インタネット上のデータをスクレイピングしてKnowledgeBase(KB)を自動的にアップデートすることができます。
- Dataikuのレシピを使ってデータのクリーニングし、データの質を上げてRAGを作ることができます。
- さらに、チャットボットの回答に対するFeedback機能があり、こちらも活用できます。
- またこれは、DataikuのLLM　Meshのコンセプトそのものですが、異なるLLMや異なるモデルを試して比較することが可能です。（今回私はChat GPTのGPT4(Turbo)というモデルを使いました。ChatGPT３では精度が出ませんでした）
- 最後にガバナンスの観点が最も重要です。監視、個人情報の取り扱い、コスト管理もDataikuを使う大きなメリットです。

こちらに詳細記載されていますので是非ご一読ください。
[**各企業向けにカスタマイズしたチャットボットを大規模に構築するには**](https://qiita.com/Dataiku/items/0a68e0ff224834d96cc7)


<br><br>

<br><br>
参考までに他の回答も掲載しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/6acbd0bf-7386-dd38-c85b-3b8099b20ac9.png)

こちらの回答は自転車（チャリ）と原動機付自転車（原付バイク）を混同していて間違った回答になっています。Feedback機能があるので、間違いを指摘しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/d56db5cb-460f-7ad3-cbb1-569eb801a5db.png)

ちなみに同じ内容を英語で聞いてみると正しい回答が返ってきました。
ChatGPTは英語と比較すると日本語の対処に強くないので、Tsuzumiなどの国産LLMに期待したいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/accb30f3-6c4f-6aa6-52a9-d661f8099b0b.png)