はじめに
こんにちは。
株式会社エブリーの開発本部データ&AIチーム(DAI)でデータエンジニアをしている吉田です。
今回は、Text-to-SQLを実現するDatabricks Genieを紹介します。
Databricks Genie
Databricks Genieは、自然言語を利用してデータ分析が行えるサービスです。
あらかじめデータ、サンプルクエリ、Genieへの指示を登録しておくことで、Genieに対して自然言語でクエリを投げることができます。
これにより、SQLに詳しくない人でもデータ分析を行うことができます。
Genieを利用する
Genieを利用するためには、以下の手順が必要です。
- 利用するデータをUnity Catalogに登録する
- Genie Spaceを作成する
- Genieをチューニングする
今回は弊社が提供しているレシピ動画サービス、DELISH KITCHENのデータを模したサンプルデータを用意し、Genieを利用してみます。
サンプルデータはランダムに生成したもので、実際のデータとは異なります。
サンプルデータをUnity Catalogに登録する
サンプルデータは、以下のような構造です。
テーブル名 | カラム | 説明 |
---|---|---|
user_master |
id |
|
age |
||
gender |
||
recipe_master |
id |
|
recipe_name |
||
is_premium |
プレミアムレシピかどうか | |
viewed_video |
event_date |
|
user_id |
||
recipe_id |
||
seconds |
動画視聴時間 | |
referrer_screen |
直前に見た画面 |
Genieではカタログのメタデータを利用してクエリを生成するため、テーブル/カラムのコメントを登録しておく必要があります。
登録にはAI Generate機能を利用することでデータの内容から適切なコメントを生成できるため、利用すると便利です。
Genie Spaceを作成する
Genie Spaceは、Genieの利用者がデータ分析を行うためのスペースです。
使用するテーブルやサンプルクエリ、使用するコンピュートリソースなどを指定して作成します。
Genieをチューニングする
Genieに対して、クエリの生成精度を向上させるためのチューニングを行えます。
ドメイン知識を追加したり、回答形式を指定する、あらかじめ質問とSQLをセットで登録し学習させるなど、Genieの精度を向上させる方法があります。
Genieでデータ分析をする
実際にGenieに対して、日本語で質問を投げてみます。
クエリの実行後、Show Generated Codeをクリックすると、Genieが生成したクエリを確認できます。
最初はシンプルな質問を投げてみます。
よさそうです。
次はテーブルのJoinが発生する質問を投げてみます。
よさそうです。
さらに複数のJoinが発生する質問を投げてみます。
こちらも良さそうです。
では簡単な変換を伴う質問を投げてみます。
うまくいきませんでした。
このように質問が正確に理解されない、または誤ったクエリを生成することがあります。
そういった場合はチューニングを行うことで精度を向上できます。
例えば以下のようなクエリを質問とセットで登録することで、Genieに正しいクエリを生成するよう学習させられます。
この状態で同様の質問をしてみます。
今度は正常にクエリが生成されました。
このようにチューニングを行うことで、Genieの精度が向上します。
まとめ
今回はDatabricks Genieを利用して、自然言語でデータ分析を行う方法を紹介しました。
Databricks Genieを利用することで、SQLに詳しくない人でも質問を入力するだけでデータ分析を行うことができます。
これにより、データ分析の敷居が下がりデータ活用が進むことが期待されます。