Cloud Service
Autonomous Database Select AI
自然言語の質問をそのまま SQL に変換して Autonomous Database に問い合わせできる。RAG やチャットも SQL から呼べる、Amazon Bedrock 連携や Azure OpenAI on your data に近い OCI の機能。
- 1.自然言語の質問を LLM が SQL に変換し、データベース上で実行して回答する。
- 2.NL2SQL のほかチャット・要約・RAG(ベクトル検索連携)も SELECT AI から呼べる。
- 3.Autonomous Database の組み込み機能で、別途モデルをホストせず LLM を外部プロバイダ経由で使う。
解決する課題
データに答えがあるのに、SQL を書けない利用者やスキーマを知らない利用者は問い合わせられません。Select AI は、Autonomous Database に対して自然言語の質問をそのまま投げると LLM が SQL を生成・実行し、結果を返す仕組みを SQL の中に組み込みます。BI ツールや独自のチャット UI を作り込まなくても、データベース側で自然言語インターフェースを提供できるのが価値です。
- SQL を書けない業務ユーザーにも自然言語でデータを問い合わせさせたい
- アプリにLLM ベースのチャットや要約を、別基盤を立てずに組み込みたい
- 社内文書やデータに基づく回答(RAG)を、ベクトル検索とまとめて使いたい
- LLM 利用を Autonomous Database の IAM・ネットワーク・監査の枠内で統制したい
- 既存の SQL/アプリ資産から、最小の追加コードで生成 AI を呼びたい
AWS では Amazon Bedrock とデータソースを自前で連携させる構成、Azure では Azure OpenAI の「on your data」に近い位置づけですが、Select AI はデータベース自身が NL2SQL とプロンプト実行を担う点が特徴です。
主要概念と用語
- Select AI: Autonomous Database に組み込まれた機能で、自然言語プロンプトを SQL 変換・チャット・要約・RAG に橋渡しする。専用の
SELECT AI構文やDBMS_CLOUD_AIパッケージから呼ぶ - AI プロファイル(AI Profile): 利用する LLM プロバイダ・モデル・対象スキーマ(テーブル/ビュー)などをまとめた設定。
DBMS_CLOUD_AI.CREATE_PROFILEで作成し、セッションで有効化する - NL2SQL(自然言語からの SQL 生成): 質問とスキーマのメタデータを LLM に渡し、実行可能な SQL を生成する処理。
SELECT AIのデフォルト動作 - アクション(action): プロンプトの扱い方の指定。
runsql(生成して実行)、showsql(SQL を表示)、explainsql(説明)、narrate(結果を自然言語で説明)、chat(一般的なチャット)など - LLM プロバイダ: 実際の生成を担う外部サービス(OCI Generative AI や他社の生成 AI など)。プロファイルで指定し、資格情報を介して呼ぶ
- 資格情報(Credential): 外部 LLM プロバイダへ接続するための認証情報。
DBMS_CLOUD.CREATE_CREDENTIALなどで作成し、プロファイルから参照する - メタデータ(スキーマ情報): テーブル名・列名・コメントなど、LLM が正しい SQL を書くための文脈。プロファイルの対象オブジェクトとして与える
- RAG(検索拡張生成): ベクトルストアで関連文書を検索し、その内容をプロンプトに添えて回答の根拠を補強する手法。Select AI は Oracle Database のベクトル検索と組み合わせて利用する
- ベクトルストア / 埋め込み: 文書をベクトル化して保存・近傍検索する仕組み。RAG の検索側を担う
- Autonomous Database: フルマネージドの自律型データベース。Select AI はその上で動く機能で、別途インフラを用意しない
仕様・制限・クォータ
- Select AI は Autonomous Database(Serverless など)の機能として提供され、対応バージョン/構成での利用が前提になる。利用可否はリージョンや構成に依存する
- 実際の生成は外部の LLM プロバイダが担うため、利用には資格情報の設定とプロバイダ側の利用条件・上限が関わる。使えるモデルやプロバイダは時期・リージョンで変わりうる
- NL2SQL の精度は与えるメタデータの質に大きく左右される。列コメントや適切なオブジェクト選択がないと、誤った SQL を生成しやすい
- LLM に渡せる**コンテキスト長(トークン上限)**があり、対象スキーマが大きすぎると全テーブルを文脈に入れられない。プロファイルで対象オブジェクトを絞る必要がある
- 生成 SQL は実行ユーザーの権限で動くため、参照できないデータは返らない。逆に権限設計を誤ると意図しない参照を許す
- プロンプトやレスポンスに関わるレート・データ量の上限はプロバイダおよびデータベースの構成に従う。具体的な数値は変動するため公式ドキュメントで確認する
NL2SQL は確率的で、もっともらしいが誤った SQLを返すことがあります。重要な集計や本番判断に使う前に、showsql や explainsql で生成 SQL を確認し、想定どおりの結合・絞り込みになっているか検証してください。
内部の仕組み
Select AI は、ユーザーの自然言語プロンプトと、AI プロファイルで指定されたスキーマのメタデータを組み合わせて LLM に送り、返ってきた SQL をそのデータベース上で実行して結果を返します。生成と実行がデータベース内で完結するのが要点です。
- セッションで AI プロファイルを有効化すると、
SELECT AI ...構文やDBMS_CLOUD_AIで渡したプロンプトが、プロファイルのプロバイダ・モデル設定に従って処理される - NL2SQL(runsql): 質問+対象オブジェクトのメタデータをプロンプトとして LLM に送り、生成された SQL をデータベースが実行して結果セットを返す
- showsql / explainsql: SQL を実行せずに、生成された SQL や、その意図の説明を返す。検証やデバッグに使う
- narrate: SQL を実行した結果を、LLM が自然言語で説明し直して返す
- chat: スキーマに依存しない一般的な質問を、そのまま LLM に投げて回答を得る
- RAG: ベクトルストアで関連文書を検索し、その断片をプロンプトに添えて回答させる。検索(ベクトル)と生成(LLM)を組み合わせて、データに根ざした回答を作る
- 外部 LLM への接続は資格情報を介して行われ、ネットワーク経路はデータベースの構成(プライベート/パブリック、サービスゲートウェイ等)に従う
最終結果だけ欲しいなら runsql、生成 SQL の妥当性を確認したいなら showsql や explainsql、結果を文章で説明させたいなら narrate、データに依らない汎用質問なら chat を使い分けます。開発・検証時は showsql で生成内容を見える化するのが安全です。
設計パターン / ベストプラクティス
- 対象オブジェクトを絞る: プロファイルには質問対象に必要なテーブル/ビューだけを含め、コンテキスト長と誤生成を抑える。広いスキーマには用途別ビューを用意して対象にする
- メタデータを充実させる: 列コメントやわかりやすいオブジェクト名を整え、LLM が正しい結合・絞り込みを書けるようにする。略称だけの列は誤解されやすい
- まず
showsqlで検証: 新しいプロンプトや重要な集計は、いきなり実行せず生成 SQL を確認してからrunsqlに切り替える - 最小権限のユーザーで実行: Select AI を呼ぶスキーマ/ユーザーには、参照を許すデータだけにアクセス権を与える。生成 SQL はその権限内でしか動かない
- RAG とファインチューニングを切り分ける: 社内文書に基づく回答はまず RAG(ベクトル検索+プロンプト添付)で実現し、モデルのカスタム学習は別途検討する
- プロバイダ/モデルを設定値に: プロファイルでプロバイダ・モデルを管理し、世代交代や切り替えに追従できるようにする
運用・監視
- 生成 AI 呼び出しを含むデータベースの稼働状況は OCI Monitoringで追跡し、Autonomous Database のメトリクスとあわせて見る
- 誰がいつプロファイルを作成・変更したか、どの資格情報を使ったかは OCI Audit やデータベース監査で追跡する
- 外部 LLM プロバイダへの到達不可・タイムアウト・認証エラーは、資格情報の失効やネットワーク経路(プライベート構成での経路不足)を疑う
- NL2SQL の精度低下や誤生成が続く場合は、対象オブジェクトの見直し・列コメントの追加・プロンプトの明確化で対処する
- プロンプト/レスポンスのやり取りは外部プロバイダへ送信される点を運用ルールに明記し、送信内容(機微データを含めない)を統制する
- LLM 利用のコストとトークン消費は呼び出し量に比例するため、想定外の大量呼び出しを監視する
コスト
Select AI 機能自体は Autonomous Database の利用に含まれますが、実体としての費用は Autonomous Database の稼働コスト と 外部 LLM プロバイダの推論コスト に分かれます。生成 AI の呼び出し回数とトークン量が増えるほどプロバイダ側のコストが増える点が主因です。具体的な単価はプロバイダ・モデル・時期で変動するため、公式の価格表で確認してください。
| コスト要素 | 課金の考え方 | 最適化のポイント |
|---|---|---|
| Autonomous Database | DB の稼働(ECPU/OCPU・ストレージ)に応じた課金 | オートスケールや自動停止で使わない時間の費用を抑える |
| LLM プロバイダの推論 | プロンプト+応答のトークン量に応じた従量課金 | 対象スキーマを絞りプロンプトを簡潔にする |
| RAG のベクトル処理 | 埋め込み・ベクトル検索の処理量 | 重複や不要文書を除いてから埋め込む |
| データ転送 | 外部プロバイダとの通信量 | 送る文脈を必要最小限にする |
セキュリティ
- 外部 LLM への接続は**資格情報(Credential)**として管理し、平文の鍵をアプリやコードに埋め込まない。失効・ローテーションを運用に組み込む
- アクセス制御は OCI IAM とデータベースの権限で行い、プロファイル作成・利用を許すユーザーを限定する。生成 SQL は実行ユーザーの権限内でしか動かないため、最小権限を徹底する
- プロンプトや対象データの一部は外部プロバイダへ送信されうる。機微情報・個人情報を不用意にプロンプトへ含めないよう入力を統制し、必要に応じてマスキングする
- 通信は TLS で保護される。プライベート構成ではサービスゲートウェイやプライベートエンドポイントで OCI/データベースのネットワーク内に経路を閉じる
- 操作は OCI Audit とデータベース監査に記録され、コンプライアンス上の追跡が可能
- RAG で参照するベクトルストアや元文書のアクセス制御・暗号化も併せて最小化する
プロンプトに機微情報や秘密情報を不用意に含めるのは NG です。プロンプトの一部は外部 LLM プロバイダへ送信されうるため、送信内容のサニタイズを徹底してください。また、外部プロバイダ用の資格情報をハードコードしないこと。資格情報オブジェクトとして管理し、参照を最小権限のユーザーに限定します。
関連サービス・比較
Select AI は OCI Generative AI をはじめとする LLM プロバイダを「呼ぶ側」で、自身は Autonomous Database の機能としてデータと自然言語をつなぎます。生成 AI の基盤モデルそのものを API で使いたいなら Generative AI、データベース上で自然言語問い合わせや RAG を完結させたいなら Select AI、という棲み分けです。下表は Select AI と、自前で同等の自然言語データ問い合わせを組む AWS 側構成の対応です。
| 観点 | Autonomous Database Select AI | AWS の相当構成 |
|---|---|---|
| 位置づけ | DB 組み込みの自然言語問い合わせ機能 | Bedrock とデータソースを自前連携 |
| NL2SQL | SELECT AI で SQL を生成・実行 | アプリ側で生成 SQL を実装 |
| LLM の供給 | OCI Generative AI ほか外部プロバイダ | Amazon Bedrock の基盤モデル |
| RAG | Oracle のベクトル検索と連携 | Knowledge Bases for Bedrock |
| 呼び出し方法 | SQL / DBMS_CLOUD_AI | SDK/API でアプリに実装 |
| 権限制御 | OCI IAM + DB 権限 | IAM ロール/ポリシー |
| 監査 | OCI Audit + DB 監査 | AWS CloudTrail |
ハンズオン / CLI例
Select AI の設定・利用は SQL(DBMS_CLOUD_AI と SELECT AI 構文)で行いますが、その前提となる Autonomous Database の確認は oci CLI で行えます。以下は CLI とプロファイル設定 SQL の最小例です。
# 1) コンパートメント内の Autonomous Database を一覧し、対象 DB を確認する
oci db autonomous-database list \
--compartment-id "$COMPARTMENT_OCID" \
--query 'data[].{name:"db-name",state:"lifecycle-state",ocid:id}' \
--output table
# 2) 対象 Autonomous Database の詳細(状態・接続情報など)を取得する
oci db autonomous-database get \
--autonomous-database-id "$ADB_OCID"
# 3) DB 内では SQL で Select AI を設定・利用する(参考: SQL 側の最小例)
# -- 外部 LLM への資格情報を作成(鍵はハードコードせず資格情報として管理)
# -- BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(credential_name=>'GENAI_CRED', ...); END;
# -- AI プロファイルを作成(プロバイダ・モデル・対象オブジェクトを指定)
# -- BEGIN DBMS_CLOUD_AI.CREATE_PROFILE(profile_name=>'SALES_AI', attributes=>'{...}'); END;
# -- セッションでプロファイルを有効化して自然言語で問い合わせる
# -- EXEC DBMS_CLOUD_AI.SET_PROFILE('SALES_AI');
# -- SELECT AI showsql 先月の売上が最も多い製品は;
# -- SELECT AI runsql 先月の売上が最も多い製品は;
OCI Service
Autonomous Database Select AIを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
AI / 機械学習
比較で見る軸
クラウド: OCI / カテゴリ: AI / 機械学習 / 難易度: intermediate
導入後に効く点
NL2SQL のほかチャット・要約・RAG(ベクトル検索連携)も SELECT AI から呼べる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- AI / 機械学習
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- operational / security / cost
判断チェックリスト
- 自社の用途が「AI / 機械学習 / operational」に近いか確認する。
- 強みである「自然言語の質問を LLM が SQL に変換し、データベース上で実行して回答する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。