はじめに
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を使用したいと思います。
2. 環境設定
2-1. ADBインスタンスとAPEXワークスペースの作成
-
Select AIはADBの機能なので、使用にはADBインスタンスが必要です。ADBのインスタンスが未作成の場合は101: ADBインスタンスを作成してみようを参考に、ADBインスタンスを作成します。
ADBインスタンス作成時に、以下の点に注意してください。
- 名前:任意(同一リージョンの同一コンパートメント内に、同じ名前のADBインスタンスは作成不可のため注意)
- データベース・バージョンの選択:23ai(19cでも問題ありませんが、23aiの方が新機能を使える為)
- Always Free:オン(無償でお試しいただく場合)
-
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; -
コピーしたURLにアクセスし、APEXの管理サービスにログインします。パスワードはADBのADMINパスワードと同じです。

-
以下の通りに選択・入力し、ワークスペースの作成をクリックします。
-
画面上部にメッセージが表示されます。SELECT_AI_USERをクリックし、ワークスペースのサインイン画面へ移動します。

APEXのワークスペースを作成し、ログインする事が出来ました。
2-2. データセットのダウンロード
次に、使用するデータセットをダウンロードします。APEXにはサンプルデータセットが準備されているので、それをダウンロードします。
これでデータの準備が出来ました。
2-3. SELECT AIを利用するための準備
それではSelect AIを利用するために必要なAPIキーの登録と、AIプロファイルの作成します。
1. SQLワークショップ>SQLコマンドをクリックします。

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

以下の通りに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. アプリケーション・ビルダーで、インポートをクリックします。

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

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

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

SELECT_AI_USERに権限(DBMS_CLOUD_AIとDBMS_CLOUD_AI_AGENT)が付与されていないと、オブジェクトのインストールでエラーが起きる場合がありますので、ご注意ください。
3.Select AIを使ってみる
-
Select AIのプロファイルとして、先程作成したSELECT_AI_PROFILEを選択し、Xアイコンをクリックします。インポートしたアプリケーションはSelect AI with RAGやSelect AI Agentも実装する事が出来る様になっていますが、今回は設定しません。

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

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

【LLMが事前学習済みの情報を基に回答】
- 画面下部のデータベースのチェックボックスをオフにする
- AIプロファイル作成時に選択したLLMが、事前学習済みの情報を基に回答を提供
【データベースのデータを基に回答】
- 画面下部のデータベースのチェックボックスをオンにする
- AIプロファイル作成時に選択したLLMが、メタデータをもとにSQLクエリを作成
- LLMが作成したSQLクエリを実行し、データベースが回答を提供
-
次に、「従業員は何名いますか?」と データベースのチェックボックスをオフにしたまま質問してみます。

データベースのチェックボックスをオフにしてあるので、データベース上のデータを参照せずに回答を生成しました。
-
それではデータベースのデータを基に回答してもらいます。データベースのチェックボックスをオンにし、同じ質問をしてみます。

14と答えが返ってきました。EMP表には従業員のデータが14列格納されているので、正しい回答が返ってきたことが分かります。
-
結果の右下にあるShow SQLをクリックします。AIが生成してくれたSQLクエリを確認することが出来ます。このSQLクエリが内部で実行され、表形式の結果が表示されています。

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

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

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






















