SQL検索(NL2SQL)
SQL検索(NL2SQL)を使用して、自然言語リクエストをOCI生成AIのエンタープライズ・データの検証済SQLに変換します。
NL2SQLは、エンタープライズAIエージェントが、基礎となるデータを移動またはコピーすることなく、フェデレーテッド・エンタープライズ・データを操作するのに役立ちます。セマンティック・エンリッチメント・レイヤーを使用して、ビジネス用語をデータベース・フィールド、表および結合にマップし、自然言語入力からSQLを生成します。
NL2SQLはSQLのみを生成します。問合せは実行されません。
開始する前に
NL2SQLを使用する前に、データベースを作成し、必要なデータベース接続を構成します。
少なくとも、次のものが必要です。
- ソースのOracle Autonomous Database
- データベース・ツール・サービス・エンリッチメント接続
- データベース・ツール・サービス問合せ接続
セマンティック・ストアの作成
NL2SQLを使用するには、OCI セマンティック・ストア・リソースを作成します。
セマンティック・ストアは、構造化データを含むベクトル・ストアに支えられており、次の2つのDBTools接続が含まれています。
- エンリッチメントの接続
- クエリー接続
コンソール
コンソールでベクトル・ストアを作成し、「構造化データ」を選択します。「構造化データ」を選択すると、エンリッチメント設定やデータベース接続の詳細など、セマンティック・ストア構成オプションが表示されます。
OCI Generative AI APIの使用
OCI生成AI APIで、CreateSemanticStore操作を使用してセマンティック・ストアを作成します。
| ベースURL | エンドポイント・パス | 認証 |
|---|---|---|
https://generativeai.${region}.oci.oraclecloud.com/20231130 |
/semanticStores |
IAMセッションのみ |
CreateSemanticStore APIは、OCI生成AIサービスAPIの一部であり、OCI IAMベースの認証を使用します。
DBTools接続
NL2SQLでは、異なる目的で2つのデータベース接続を使用します。
エンリッチメントの接続
エンリッチメント接続は、エンリッチメント中に使用される、より高い権限を持つ接続です。次の権限が必要です。
- 問合せの実行
- DDL操作の実行
- データベースからのサンプル値へのアクセス
OCI Generative AIは、この接続を使用してスキーマ情報を読み取り、SQL生成に必要なメタデータを構築します。
クエリー接続
「問合せ接続」は、問合せユーザーのかわりに問合せを実行するために使用される、権限の低い接続です。
この分離は、生成と実行の責任を明確にし、より安全なアクセス制御をサポートするのに役立ちます。
エンリッチメント
エンリッチメント・プロセスは、接続されたデータベースから表や列などのスキーマ・メタデータを読み取ります。OCI Generative AIは、このメタデータを使用して、より優れたSQLを生成します。
エンリッチメントが実行されるタイミングを選択できます。
- 作成時: エンリッチメントは、セマンティック・ストアの作成後に自動的に開始されます
- 手動: エンリッチメントは、後で別のAPIコールを介して実行されます
エンリッチメントを手動でトリガーするには、GenerateEnrichmentJob APIをコールします。
自然言語からのSQLの生成
エンリッチメントが完了したら、GenerateSqlFromNl APIをコールして、自然言語入力をSQLに変換します。
このAPI:
- 自然言語入力を受け入れます
- エンリッチされたセマンティック・メタデータを使用します。
- 生成されたSQLを返します。
このAPIでは、データベースに対してSQLは実行されません。
クエリー実行
DBTools MCP Serverは、完全な実行フローを編成します。
- SQLを生成するためにNL2SQLサービスを呼び出します。
- リクエストを承認します。
- ソース・データベースに対して問合せを実行します。
- 適切なガードレールを適用します。
- 実行にエンド・ユーザーのアイデンティティを使用します。
これにより、エージェントは、既存の権限の下でソース・システムで実行を維持しながら、エンタープライズ・データを操作できます。
エージェント・ワークフローでのNL2SQLの使用
NL2SQLは、より広範なエージェント・ワークフローの一部にすることができます。
クライアントは次のことができます。
- レスポンスAPIにリクエストを送信して、エージェント・プランニングおよびリクエスト検証を開始します
- GenerateSqlFromNlをコールして、自然言語リクエストをSQLに変換します
- 必要に応じて、DBTools MCP Serverを使用して問合せを実行します。
- 生成されたSQLまたは問合せ結果をレスポンスAPIに渡して、ワークフローの次のステップに戻します
これにより、構造化データ・アクセスと、より広範なエージェント推論およびオーケストレーションを組み合せることができます。
NL2SQLがエージェントに適合する方法
NL2SQLは、OCI Generative AIのエンタープライズ・データ機能です。これは、ビジネス言語リクエストをSQLに変換して、構造化されたエンタープライズ・データをエージェントが処理する必要がある場合に役立ちます。
ファイル検索、コード・インタプリタ、ファンクション・コールおよびMCPコールとは異なり、NL2SQLはレスポンスAPIのtoolsエントリとして構成されていません。独自のAPIフローとサポート・リソースを使用しており、次のことを中心としています。
- セマンティック・ストアー
- DBTools接続
- エンリッチメント
- SQLFromNlの生成
NL2SQL API
NL2SQLツールには、次のAPIを使用できます。
- セマンティック・店舗
-
CreateSemanticStoreListSemanticStoresGetSemanticStoreUpdateSemanticStoreChangeSemanticStoreCompartmentDeleteSemanticStore
- 拡充ジョブ
-
ListEnrichmentJobsGetEnrichmentJobGenerateEnrichmentJobCancelEnrichmentJobGenerateSqlFromNl
- SQLの生成
GenerateSqlFromNl