はじめに
この記事では、Autonomous Databaseの2024/10の新機能「Data Studio Analysis- Explain query using AI (データ分析におけるAIを使用したクエリの説明)」をご紹介します。
マニュアルはこちらです。
Database Actionsのツール群であるData Studio内のデータ分析に関するもので、AIを使用して、データ分析ツールが生成するSQLクエリをテキスト形式で説明できるようになりました。
使用するデータセットについて
-
この記事で使用するデータセット、ユーザーはこちらのLive Labs内でデプロイできるMOVIESTREAMを使います。
-
下準備として、以下の作業が必要です。マニュアルには以下の記載があります。
Prerequisites
To utilize the Natural Language Query, you must have:
An OpenAI, or Cohere or An Azure OpenAI account service with credit
An access to DBMS_CLOUD_AI package.
Note:
You must set your AI profile using the Natural Language Query feature. Follow the steps mentioned in this chapter to Use Select AI to Generate SQL from Natural Language Prompts.
After you have created and configured your AI profile, set your AI profile in Data Studio Preferences wizard on the Connections page to use AI features such as generating SQL from Natural Language in the Data Studio tool.
→AIプロファイルの設定 + Data Studio内での設定が必要です。
下準備1- AIプロファイルの設定
- 本記事ではAIプロバイダとして、Open AIを使います。
- まず、ADMINユーザーでAutonomous Databaseにサインインして、以下を実行します。
GRANT DWROLE, UNLIMITED TABLESPACE TO MOVIESTREAM;
- DBMS_CLOUD_AIパッケージの実行権限を付与します。
GRANT EXECUTE ON DBMS_CLOUD_AI TO MOVIESTREAM
- OpenAIのAPIのホストapi.openai.comに対するHTTPアクセスを許可します。
BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'api.openai.com', ace => xs$ace_type(privilege_list => xs$name_list('http'), principal_name => 'MOVIESTREAM', principal_type => xs_acl.ptype_db) ); END;
- ADMINからはサインアウトし、MOVIESTREAMユーザーでログインします。以下を実行します。
--OpenAIのAPIに接続するためのクレデンシャルを作成 BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OPENAI_CRED', --クレデンシャル名 username => 'OPENAI', password => '**-proj-****************************************************************' --Open AIのAPIキー ); END; / --AIプロファイルを作成 BEGIN DBMS_CLOUD_AI.CREATE_PROFILE( profile_name => 'OPENAI', attributes => '{"provider": "openai", "credential_name": "OPENAI_CRED", "object_list": [{"owner": "MOVIESTREAM"}] --スキーマオブジェクトとしてMOVIESTREAM全体を指定 }' ); END; / --現在のセッションでAIプロファイルを有効化 EXEC DBMS_CLOUD_AI.SET_PROFILE('OPENAI'); END;
object_listについて
今回はスキーマオブジェクトとしてMOVIESTREAMスキーマを指定しましたが、スキーマ内のオブジェクト毎(表単位など)に絞って指定することもできます。object_listの指定は必須で、今の所DB全体を指定することはできないようです。また、あまり指定範囲を広くすると、使用するトークン量が増える可能性があります。
また、上記のセットアップはDatabase ActionsのSQLの機能でも実行することができます。
下準備2- Data Studio内の設定
- 続いて、Database Actions内のData Studioの設定をしていきます。
- Database ActionsにMOVIESTREAMユーザーでサインインします。
- Data Studioを開き、左下の設定を開きます。
- AIプロファイルを開き、Open AIを選択します。まだ試験的みたいです。
- AI アクセスのチェックをクリックします。緑のチェックマークがつき、アクセスの確認ができました。
AIプロバイダと、モデル、作成したクレデンシャルが自動で選択されています。
これで下準備が終わりました。
データ分析機能でAIを使用してクエリの説明させてみる
-
Data Studioからデータ分析を開きます。
-
下準備が正常にできると、自然言語を入力するところや、AI Explainのボタンが表示され、本機能が使えるようになります。逆にセットアップができていないと下記画像のようには表示されません。
-
画面上部の「自然問合せの使用(日本語がおかしいですね)」のトグルをオンにして自然言語の入力を有効にします。
-
表の選択をクリックし、クエリしたい対象の表にチェックします。複数選択することもできます。対象のデータがどこにあるか分からなかったら、全てにチェックを付けるのも手段としてありかもしれません。
-
「自然問合せの入力」の欄に、
show me all actors.
と入力し、全ての俳優の情報が欲しいと問い合わせてみます。
-
もう1つ自然言語で問合せをしてみます。今度は、
Show me the names of actors whose names begin with the letter A.
という風に自然言語の入力欄に入力して、名前が'A'から始まる俳優の情報を表示をするように問い合わせをしてみます。
- そして、「AI Explain」をクリックしてみます。すると、SELECT文を変更するようにアドバイスされ、クエリの例が表示されます。
- 提案してくれたクエリを実行してみます。
実行結果見ると、エラーになっています。ACTOR_NAME列が無効だということです。LLMが提案してくれたクエリは実行できませんでしたので、必ずしも毎度正確なものを提供してくれるわけではなさそうです。
- 画面左側のACTORS表を展開してみると、ACTOR_NAME列は存在していないです。おそらくACTOR列に俳優の名前が格納されていると思われます。
先ほど実行に失敗したSELECT文のWHERE句内のACTOR_NAMEをACTORに変更して、再度実行してみます。
するとクエリは実行され、結果を見てみるとAから始まる俳優の名前が出力されています。
まとめ
本記事では、Database Actions内のデータ分析機能で新しく提供された「AIを使用したクエリの説明」を試してみました。