Dataikuを使ってSignate RAG1グランプリをノーコードで実践（例題で手順説明）


# はじめに

RAG-1グランプリ。新しい形のデータ分析コンペですが、とても楽しく、そしてDataikuを使えば比較的簡単にできるので、それをみなさんにお伝えしたく記事を書きました。

この記事では、[SIGNATEのRAG-1グランプリ](https://signate.jp/competitions/1407)に付録されている**例題**を使って、Dataiku（無料版）でRAGモデルを構築する手順について解説します。


（※注意）Dataikuは無料で使えますが、LLMはご自身がご契約されるものを使いますのでご注意ください。




# 目次
1. [事前準備①](#事前準備①)  
   1-1. [Dataiku無料版のインストール](#Dataiku無料版のインストール)  
   1-2. [Python環境をインストール](#Python環境をインストール)  
   1-3. [データのダウンロード](#データのダウンロード)
   
2. [事前準備②（Dataiku起動後に行うこと）](#事前準備②Dataiku起動後に行うこと)  
   2-1. [Python Envの設定](#Python-Envの設定)  
   2-2. [LLM（例：ChatGPT）のAPIキーの取得および設定](#LLM例ChatGPTのAPIキーの取得および設定)  
   2-3. [Plugin（Text extraction and OCR）の設定](#PluginText-extraction-and-OCRの設定)

3. [新しいプロジェクトを作成](#新しいプロジェクトを作成)

4. [データ接続](#データ接続)

5. [テキストを抽出](#テキストを抽出)

6. [RAG構築](#RAG構築)

7. [質問データのアップロード](#質問データのアップロード)

8. [プロンプトを書き作成済みのRAGで回答する](#プロンプトを書き作成済みのRAGで回答する)

9. [データ整形](#データ整形)

10. [CSVダウンロード](#CSVダウンロード)






# 1. 事前準備①

## 1-1. Dataiku無料版のインストール
[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/?utm_id=14724122580--146961385174--655790452744--dataiku%20%E3%83%88%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%AB&amp;utm_source=apac-adwords&amp;utm_medium=paid-search&amp;utm_campaign=CONTENT%20Data%20Sheet&amp;gad_source=1&amp;gclid=Cj0KCQjwurS3BhCGARIsADdUH52Hz126xzyiNsILTPQLBiOO0DFeX3rzT-rshPcTJw5Wsyo9ZFIH1VkaAo7uEALw_wcB)から無料版をダウンロードしてインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/d21ee88a-6730-c571-5c7f-2fd84192980e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/a5d6a1dd-c370-b0a9-1e9a-6236b2b28cf7.png)
※Windows版のみ動作保証していないのでご注意ください

初期ログイン情報は下記の通り
- user:admin
- pass:admin

インストールできたらUIの言語を日本語にしておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/18fac473-708c-0999-4dfc-d08237fde5af.png)


## 1-2. Python環境をインストール
Python 3.xと必要なパッケージをインストールします。

私はこの手順でインストールしました。
[Homebrewでpython3系の最新をインストールする方法](https://qiita.com/toranoko92114/items/08b287e54bdc36943375)

## 1-3. データのダウンロード
こちらの記事で使ったデータは[こちら](https://community.dataiku.com/discussion/44274/rag%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF/p1?new=1)からDLいただけます。




# 2. 事前準備②（Dataiku起動後に行うこと）
右上のナインドッツから『アドミニストレーション』をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/454857ba-ca91-a074-51e6-3661c0a91c1c.png)

## 2-1. Python Envの設定
Dataikuを起動し、「設定」→「コード環境」→「新しい環境の作成」を選択し、Python環境を設定します。

右上『NEW PYTHON ENV』をクリック
①左の『Packages install』をクリック
②Requested packages(Pip)に下記の入力
~~~md
langchain
pydantic&lt;2
chromadb
pysqlite3-binary; platform_system == "Linux"
faiss-cpu
pinecone-client&lt;3
qdrant_client
langchain-community
tiktoken
~~~
③左側の『UPDATE』をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/f7e0ac0e-f4ea-3ab9-1035-cfc7fe2fa651.png)


## 2-2. LLM（例：ChatGPT）のAPIキーの取得および設定
ご自身で契約しているLLMからAPIキーを取得し、Dataiku内で設定します。  

APIキーの取得方法はこちらをご参照ください。
- [ChatGPT APIキー取得までの手順](https://qiita.com/kotattsu3/items/b936a65d173a5d39dad0)
- [3分でできる！Claude APIキー取得のやり方をわかりやすく解説](https://aisodan.com/news/91)

APIキーを取得できたら、『ナインドッツ』→『アドミニストレーション』→『Connections』→『NEW CONNECTION』から任意のLLMを選択し、APIキーを入力。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/3169a74e-6964-0dc0-f9a8-d1f998e2fe57.png)

APIキーを入力→これから使いたいモデルを選択→『SAVE』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/8a7ed788-8573-0666-fb94-e3d2cc750829.png)

## 2-3. Plugin（Text extraction and OCR）の設定
プラグインから文字起こしの機能を追加しておきます。
『ナインドッツ』→『プラグイン』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/1e87ab3b-42ed-6ed8-70ac-684ea3eab4e2.png)

OCRと検索し、Text extraction and OCRを『INSTALL』する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/6b70a134-3f4e-7962-ae88-be4d9a6e662f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/8a529401-8076-aefc-5621-af09eff1c862.png)


これで準備完了！！

# 3. 新しいプロジェクトを作成
- 左上の鳥さんのアイコンでトップ画面に戻り、右側の『新しいプロジェクト』をクリック
- プロジェクト名を入力し、『CEATE』をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/22bbafbb-0314-1ffd-0c19-712b3847266c.png)



# 4. データ接続
プロジェクト内でデータソースを接続します（CSVファイルやデータベースなど）。必要なデータをインポートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/01e1a805-dd6c-2b01-79c3-049c5d4113f0.png)

『IMPORT YOUR FIRST DATASET』→『フォルダ』を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/1eb332b6-a607-7fc7-1418-7343fd767107.png)

小説データをフォルダにドラッグ＆ドロップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/71c09a45-66c6-33cc-c631-0ecc7a1e2a95.png)

内容を確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/732c21a7-e200-688a-fd1c-c7a8f3a36a20.png)

# 5. テキストを抽出
「Text extraction and OCR」プラグインを使い、アップロードしたファイルからテキストを抽出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/c9160d0f-fa12-8762-8234-64d0d3d540a9.png)

『Text extraction』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/0c365131-aa1a-9381-13e3-f3c364c84a29.png)

Optput Datasetの名前をつけて、そのまま『実行』
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/e12e9c54-5377-6d62-022f-e356b6d86295.png)

そうするとテキストが抽出されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/c9b94b6e-c686-d1f9-88af-27650a500e8e.png)

# 6. RAG構築
いよいよ、RAG（Retrieval-Augmented Generation）モデルを作成します。

LLMレシピの『埋め込み』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/fc8f6dc9-c8e3-b683-c922-15ea5dd1c41c.png)

①Knowledge columnは『text』を選択
②右上『保存』をクリック
③Knowledge bank serringsの『EDIT』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/18f3f9c9-6f92-377b-8094-56f6c299151e.png)

『Core setting』のタブにいき、添付の通り設定し、『保存』をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/8bf43476-5a90-9fe6-5704-86162bb016c0.png)

『Use』のタブに戻る
①『ADD AUGMENTED LLM』をクリック
② LLMを選択（※ご自身のお財布とご相談ください　ご参考 

③『保存』をクリック
④『PARENT RECIPE』をクリック
 ※[GPT-4o miniを含む最新のOpenAI、VertexAI、ClaudeのAPI利用料まとめ（2024年7月21日時点）](https://qiita.com/shioccii/items/b32ec4752e8ce10af84a)）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/e7a853cb-8d82-063c-ec1e-6601c73cdb30.png)

『実行』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/fc347923-3ce0-d873-6609-f0a7b23d58ed.png)


# 7. 質問データのアップロード
質問データをCSVやExcel形式でアップロードし、RAGモデルに使用します。
①トップに戻る
②データセットを追加
③『ファイルをアップロード』をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/eb05ad9a-b773-0569-b61a-03ca31476643.png)

質問の内容が入っているCSVをドラッグ＆ドロップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/b4283452-0b11-2e36-d030-d11232f9929f.png)


# 8. プロンプトを書き作成済みのRAGで回答する

質問ファイルに『プロンプトレシピ』を適用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/620e5852-cfb2-99a8-62a4-59b97373dd7b.png)

右上の『EDIT IN PROMPT STUDIO』をクリック

①LLMから先ほど作成したRAGのモデルを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/33e174fd-de75-95bd-3f4b-2271abc8c131.png)

①『ADD INPUT』で列を指定
②Promptを記載する（※）
③『RUN PROMPT』で小レコードでまわして確認する
④『EXPORT AS RECIPE』をクリック→その後『実行』
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/aee4a0d7-ce4b-16e8-cfa7-24221d6ff988.png)

（※）私はこのようなプロンプトを書いてみました
~~~md
小説についての質問に回答し、その根拠となる部分を抜き出してください。
回答を"ground_truth"とし、根拠を"evidence"としてください。
回答はシンプルにしてください

出力形式は、以下の構造を持つJSON形式にしてください。
Outputは{"ground_truth":で始まる形式のみにしてください。

回答がわからない時は他の回答と同様に{"ground_truth":"わかりません"　と返してください。

回答に関する注意点
- 参照元の小説から回答を導くこと.
- 数量で答える問題の回答には単位を付けること.
- 参照元に答えの手がかりが見つからないと判断される場合はその旨を「分かりません」と答えること.
- 質問自体に誤りがあると判断される場合は「質問誤り」と答えること.
- [質問データ](#質問データ)の問題に過不足なく回答すること.
- 各回答にはトークン数の上限があるので, 超えないようにすること. 今回の上限は**50**.


回答自体にはカンマ(,)を使わず句読点(、)を使ってください。またスペースも含めないでください。
~~~

# 9. データ整形
準備レシピでデータ整形をしあす。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/7696f505-24cb-c1e7-7ee8-dbebc181adae.png)

このように列が分割されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/296d7fc3-94fc-1574-b02e-aa8872dce425.png)

余計な列を削除します。
![uploading...0]()

# 10. CSVダウンロード
整形したデータをCSV形式でダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3550964/a87f87a5-5cdb-a3e0-c0f1-f6e8706159ce.png)

# さいごに
エラーがでてきたらその対処法をLLMに聞いて進めてみてください。</pre>