26
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Select AIを使ってデータベース内のデータと会話してみる

26
Last updated at Posted at 2024-05-27

はじめに

Oracle Databaseで使用することの出来る機能、Select AIを使えば自然言語を使用してデータを問い合せることが出来ます。

Select AIで大規模言語モデル(LLM)を使用することで、ユーザーが入力したテキスト(自然言語)をSQLクエリに変換し、データベース内のデータを問合せることが出来ます。ユーザーは、自然言語を使ってデータベース内のデータと会話をすることが出来ます。

本記事では、Autonomous Databaseを使ってSelect AIを試してみたいと思います。Oracle APEXでチャットアプリを作成し、Select AIを試す手順をご紹介します。

【前提条件】

  • OCIのアカウントを作成済みであること
    (OCIのアカウントをお持ちでない場合は、こちらを参考にご作成下さい。)
  • OCI生成AIサービスを使用可能な大阪リージョン、シカゴリージョン等をホーム・リージョン、若しくはサブスクライブしてあること(本チュートリアルではシカゴリージョンを使用します)。詳しくは、Pretrained Foundational Models in Generative AIをご確認ください。

【所要時間】
40分程

1. OCI生成AIサービスのAPIキーの取得

Select AIでは、2026年1月現在、OCI生成AIサービス、OpenAI、Google Gemini、Cohere、Azure OpenAI、AWS Bedrock、OpenAI API互換のプロバイダー等のLLMを使用することが出来ます。

本記事では、OCI生成AIサービスのAPIを使用したいと思います。

  1. OCIコンソールにアクセスして、右上のプロファイルからユーザー設定を選択します。
    image.png

  2. 左下のリソースからAPIキーを選択し、APIキーの追加をクリックします。
    image.png

  3. APIキー・ペアの生成(デフォルト)を選択し、秘密キーのダウンロードをした上で作成します。秘密キーは後程使用するので大切に保管しておきます。
    image.png

  4. 構成ファイルのプレビューも後程使用しますので、コピーしメモを取っておきます。
    image.png

2. 環境設定

2-1. ADBインスタンスとAPEXワークスペースの作成

  1. Select AIはADBの機能なので、使用にはADBインスタンスが必要です。ADBのインスタンスが未作成の場合は101: ADBインスタンスを作成してみようを参考に、ADBインスタンスを作成します。

    ADBインスタンス作成時に、以下の点に注意してください。

    • 名前:任意(同一リージョンの同一コンパートメント内に、同じ名前のADBインスタンスは作成不可のため注意)
    • データベース・バージョンの選択:23ai(19cでも問題ありませんが、23aiの方が新機能を使える為)
    • Always Free:オン(無償でお試しいただく場合)
  2. 101: ADBインスタンスを作成してみよう3-3. データベース・ユーザーを作成してみよう(コマンドライン)を参考に、Database ActionsのSQLワークシートから、チュートリアルを行うユーザーを作成し、必要なロールを付与します。

    以下のSQLを実行し、

    • SELECT_AI_USERというユーザーを作成、必要なロールを付与
    • SELECT AIの利用に必要なDBMS_CLOUD_AIパッケージの実行権限を付与
    • 今回使用するAPEXアプリケーションの利用に必要な、DBMS_CLOUD_AI_AGENTパッケージの実行権限を付与
    GRANT DWROLE, UNLIMITED TABLESPACE TO select_ai_user IDENTIFIED BY Welcome12345#;
    GRANT EXECUTE ON DBMS_CLOUD_AI TO select_ai_user;
    GRANT EXECUTE ON DBMS_CLOUD_AI_AGENT TO select_ai_user;
    
  3. ツール構成タブ配下のAPEXのURLをコピーし、APEXにアクセスします。
    image.png

  4. コピーしたURLにアクセスし、APEXの管理サービスにログインします。パスワードはADBのADMINパスワードと同じです。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31663761643561392d613635382d346531392d653430392d6162346231373435373930642e706e67.png

  5. ワークスペースの作成をクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f34653464323136382d643431342d393534622d346234352d3165636662633162326134352e706e67.png

  6. 先程SELECT_AI_USERというスキーマを作成したので、既存のスキーマを選択します。
    image.png

  7. 以下の通りに選択・入力し、ワークスペースの作成をクリックします。

    • データベース・ユーザー:SELECT_AI_USER(アイコンをクリックし、SELECT_AI_USERスキーマを選択)
    • ワークスペース名:SELECT_AI_USER(データベース・ユーザーを選択すると自動で入力されます)
    • ワークスペース・ユーザー名:SELECT_AI_USER
    • ワークスペース・パスワード:Welcome12345#(任意)
      image.png
  8. 画面上部にメッセージが表示されます。SELECT_AI_USERをクリックし、ワークスペースのサインイン画面へ移動します。
    image.png

  9. 先ほど設定したワークスペースのパスワードを入力します(本記事の場合はWelcome12345#)。
    image.png

APEXのワークスペースを作成し、ログインする事が出来ました。

2-2. データセットのダウンロード

次に、使用するデータセットをダウンロードします。APEXにはサンプルデータセットが準備されているので、それをダウンロードします。

  1. SQLワークショップ>ユーティリティ>サンプル・データセットをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37323036616432392d326536642d343866362d353830392d3431356364643965356139362e706e67.png

  2. EMP/DEPTというデータセットをインストールします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31393461613164372d376437342d303434382d656136362d6364356363636431643832392e706e67.png

  3. 言語で日本語を選択し、へをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f65343538663630312d396634622d613464612d386435392d6135666362343738336161382e706e67.png

  4. データセットのインストールをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f31636564613961322d316562392d633164342d666366362d6163303337393763303136612e706e67.png

  5. 終了をクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f33386361663264312d333636322d313735382d666631392d6633303538623138343937662e706e67.png

  6. SQLワークショップ>オブジェクト・ブラウザをクリックします。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f38656331616638362d656632352d363833662d623563332d6138343135363933363836302e706e67.png

  7. 表からインストールしたEMP表・DEPT表をクリックし、表を確認します。
    68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f39366164623238342d313062302d336333372d653132312d6230376636363464356637662e706e67.png

これでデータの準備が出来ました。

2-3. SELECT AIを利用するための準備

それではSelect AIを利用するために必要なAPIキーの登録と、AIプロファイルの作成します。

1. SQLワークショップ>SQLコマンドをクリックします。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f35373064393264382d336333302d663365352d353764382d3062303738646139366335332e706e67.png

2. DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、OCI生成AIサービスに接続するためのクレデンシャルを作成(APIキーを登録)します。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333736323230312f37393536353365302d333935362d666432352d623336352d3262663333633932336438332e706e67.png

以下の通りにOCID等を置き換え、プロシージャを実行します。

  • credential_name:任意(本チュートリアルではOCI_CREDとしています)

  • user_ocid:先ほどメモを取った構成ファイルを参照し、ユーザーのOCIDを入力

  • tenancy_ocid:先ほどメモを取った構成ファイルを参照し、使用しているテナンシーのOCIDを入力

  • private_key:先程取得した秘密キーの内容をコピー&ペースト

  • fingerprint:先ほどメモを取った構成ファイルを参照し、フィンガープリントを入力

    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OCI_CRED',
            user_ocid       => 'ocid1.user.oc1..axxxxxxxxxxxxxxxxq',
            tenancy_ocid    => 'ocid1.tenancy.oc1..aaxxxxxxxxxxxxa',
            private_key     => '-----BEGIN PRIVATE KEY-----
            MIIEvAIBADANBgkqhkiGQEFA<中略>1D3iheu1ct50SB0aIQz9Ow==
            -----END PRIVATE KEY-----',
            fingerprint     => 'xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx'
        );
    END;
    /
    

これでクレデンシャルを作成する事が出来ました。このクレデンシャルは、この後プロファイルを作成する際に繰り返し使用しますので、credential_nameをメモしておきます。


3. DBMS_CLOUD_AI.CREATE_PROFILEプロシージャを使用して、AIプロファイルを作成します。
  • プロファイル名:SELECT_AI_PROFILE(任意)

  • provider:oci(本チュートリアルではOCI生成AIサービスをAIプロバイダーとして使用)

  • credential_name:OCI_CRED(先ほど作成したクレデンシャル名を指定)

  • model:xai.grok-code-fast-1(大阪リージョン等では提供されていないため、大阪リージョンのOCI生成AIサービスを使用する場合は、別のモデルを使用する必要があります)

  • region: us-chicago-1(指定したリージョンのOCI生成AIサービスを利用します。使用するリージョンは、リージョン識別子で指定します。リージョン毎の識別子はこちらをご参照ください。)

  • object_list:このプロファイルで使用するスキーマ・オブジェクトの所有者(本チュートリアルではselect_ai_user)とオブジェクト名(本チュートリアルではhighschools_view)を指定

    BEGIN
        DBMS_CLOUD_AI.CREATE_PROFILE(
            'SELECT_AI_PROFILE',
            '{
                "provider": "oci",
                "credential_name": "OCI_CRED",
                "model":"xai.grok-code-fast-1",
                "region": "us-chicago-1",
                "object_list": [
                        {"owner": "SELECT_AI_USER", "name": "EMP"},
                        {"owner": "SELECT_AI_USER", "name": "DEPT"}
                ]
            }'
        );
    END;
    /
    

これでSELECT AIの準備は完了です。

2-4.APEXアプリをインポート

最後にAPEXのアプリをインポートして、SELECT AIをAPEX上で使用できる様にします。

1. アプリケーション・ビルダーで、インポートをクリックします。
image.png

2. インポートするアプリケーションをダウンロードします。こちらをクリックし、f101.sqlというSQLファイルをダウンロードします。

3. ダウンロードしたsqlファイルをドラッグアンドドロップし、次へをクリックします。
image.png

4. アプリケーションのインストールをクリックします。
image.png

5. をクリックします。
image.png

6. サポートするオブジェクトのインストールもクリックし、表をインポートします。
image.png

7. アプリケーションの実行をクリックし、SELECT AIをAPEXのアプリケーション上で使用してみます。
image.png

SELECT_AI_USERに権限(DBMS_CLOUD_AIとDBMS_CLOUD_AI_AGENT)が付与されていないと、オブジェクトのインストールでエラーが起きる場合がありますので、ご注意ください。

3.Select AIを使ってみる

  1. ワークスペースのユーザー名とパスワードを入力し、ログインします。
    image.png

  2. 使用するAIプロファイルを選択します。画面右上のユーザー名をクリックし、設定を選択します。
    image.png

  3. Select AIのプロファイルとして、先程作成したSELECT_AI_PROFILEを選択し、Xアイコンをクリックします。インポートしたアプリケーションはSelect AI with RAGやSelect AI Agentも実装する事が出来る様になっていますが、今回は設定しません。
    image.png

  4. テキスト入力欄の左側にある+アイコンをクリックし、NL2SQLを選択します。
    image.png

    Select AIではLLMが事前学習済みの情報を基に回答してもらうか、データベースのデータを基に回答してもらうか等、回答の生成方法を選択することが出来ます。
    image.png

    【LLMが事前学習済みの情報を基に回答】

    • 画面下部のデータベースのチェックボックスをオフにする
    • AIプロファイル作成時に選択したLLMが、事前学習済みの情報を基に回答を提供

    【データベースのデータを基に回答】

    • 画面下部のデータベースのチェックボックスをオンにする
    • AIプロファイル作成時に選択したLLMが、メタデータをもとにSQLクエリを作成
    • LLMが作成したSQLクエリを実行し、データベース回答を提供
  5. 先ずは、データベースのチェックボックスをオフにし、「フレンチトーストのレシピを教えてください。」とお願いしてみます。
    image.png

    事前学習済みの情報を基に、フレンチトーストのレシピを教えてくれました。
    image.png

  6. 次に、「従業員は何名いますか?」と データベースのチェックボックスをオフにしたまま質問してみます。
    image.png

    データベースのチェックボックスをオフにしてあるので、データベース上のデータを参照せずに回答を生成しました。

  7. それではデータベースのデータを基に回答してもらいます。データベースのチェックボックスをオンにし、同じ質問をしてみます。
    image.png

    14と答えが返ってきました。EMP表には従業員のデータが14列格納されているので、正しい回答が返ってきたことが分かります。

  8. 次に、「給与が2000ドル以上の従業員と、その従業員が所属する部署の平均給与」と聞いてみたいと思います。image.png

  9. 結果の右下にあるShow SQLをクリックします。AIが生成してくれたSQLクエリを確認することが出来ます。このSQLクエリが内部で実行され、表形式の結果が表示されています。
    image.png

  10. グラフをカスタマイズをクリックすると、結果をグラフ化することが出来ます。グラフの種類やX軸Y軸も変更することが出来ます。自然言語で問い合わせた結果を簡単にグラフ化して確認する事が出来ます。
    image.png

  11. データベースの隣にあるNarrateにチェックを入れて、先程と同じ質問をしてみます。Narrateにチェックを入れると、結果を自然言語で返してくれます。SQLの実行結果がLLMに送信され、自然言語で回答が生成されます。
    image.png

以上で終了です。Select AIには他にも沢山の機能があるので、是非色々とお試して下さい。

26
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?