選択AIを使用した自然言語プロンプトからのSQLの生成
AIの選択機能により、Autonomous Databaseは、大規模言語モデル(LLM)で生成AIを使用してユーザーの入力テキストをOracle SQLに変換できます。「AI」を選択すると、自然言語プロンプトが処理され、プロンプトにメタデータが補足されてから、SQL問合せが生成および実行されます。
- 用語
- Select AIの使用例
OracleのSelect AIを、OpenAI、Cohere、Azure Open AI、OCI Generative AIなどの様々なAIプロバイダーと統合して、自然言語から直接SQLクエリを生成する方法の詳細をご覧ください。 - 使用上のガイドライン
SQL生成の自然言語プロンプトを効果的かつ適切に使用して、ユーザー・エクスペリエンスを向上させるための使用上のガイドラインを提供します。 - SQL生成について
自然言語を使用したデータベース・データとの対話は、LLMで実現できるようになりました。つまり、プレーン英語などの自然言語を使用してデータベースを問い合せることができます。 - DBMS_CLOUD_AIを使用したAIプロファイルの構成
Autonomous Databaseでは、AIプロファイルを使用して、LLMへのアクセスを容易におよび構成し、自然言語プロンプトからSQL文を生成するための設定を行います。 - DBMS_CLOUD_AIパッケージを構成するための要件
- DBMS_CLOUD_AIパッケージの構成
DBMS_CLOUD_AI
を使用するステップについて説明します。 - AIプロファイルの作成および設定
AIプロファイルを作成および有効化するステップについて説明します。 - AIキーワードを使用したプロンプトの入力
自然言語プロンプトを使用してデータベースを操作するには、SELECT
文のキーワードとしてAI
を使用します。
親トピック: 統合
用語
Select AIで使用される様々な用語を理解してから使用することが重要です。
AIの選択機能に関連する用語は次のとおりです。
用語 | 定義 |
---|---|
データベース資格証明 |
データベース資格証明は、データベースへのアクセスおよび対話に使用される認証資格証明です。通常、ユーザー名およびパスワードで構成され、セキュリティ・トークンなどの追加の認証ファクタによって補完されることがあります。これらの資格証明は、アプリケーションまたはユーザーとデータベース間のセキュアな接続を確立するために使用され、認可された個人またはシステムのみがデータベース内に格納されているデータにアクセスして操作できるようにします。 |
LLMの幻覚 |
大言語モデルの文脈における幻覚は、入力プロンプトに不正確、無意味、または無関係なテキストをモデルが生成する現象を指します。モデルの一貫性のあるテキストの生成の試みの結果であるにもかかわらず、これらのインスタンスには、作成、誤解を招く、または純粋に想像力のある情報を含めることができます。幻覚は、トレーニング・データのバイアス、適切なコンテキスト理解の欠如、またはモデルのトレーニング・プロセスの制限が原因で発生する可能性があります。 |
IAM | Oracle Cloud Infrastructure Identity and Access Management (IAM)を使用すると、クラウド・リソースにアクセスできるユーザーを制御できます。ユーザーのグループが保持するアクセス権のタイプとアクセスの対象となる特定のリソースを制御できます。詳細は、Identity and Access Managementの概要を参照してください。 |
大型言語モデル(LLM) |
大言語モデルは、人間のような言語、ソフトウェア・コードおよびデータベース問合せを理解および生成するために大量のテキスト・データに基づいてトレーニングされた高度な人工知能モデルを指します。これらのモデルは、テキスト生成、翻訳、要約、質問回答、センチメント分析など、幅広い自然言語処理タスクを実行できます。LLMは通常、入力データからパターン、コンテキストおよびセマンティクスを学習するニューラル・ネットワークベースのアーキテクチャであり、一貫性のあるコンテキスト関連テキストを生成できます。 |
自然言語プロンプト |
自然言語プロンプトは、大規模言語モデルなどの生成AIモデルをガイドするために提供される、人間が読める手順またはリクエストです。ユーザーは、特定のプログラミング言語やコマンドを使用するかわりに、より会話型または自然言語形式でプロンプトを入力することで、これらのモデルを操作できます。モデルは、指定されたプロンプトに基づいて出力を生成します。 |
ネットワーク・アクセス制御リスト(ACL) |
ネットワーク・アクセス制御リストは、ルーター、ファイアウォール、ゲートウェイなどのネットワーク・デバイスを通過できるネットワーク・トラフィックを定義するルールまたは権限のセットです。ACLは、IPアドレス、ポート番号、プロトコルなどの様々な基準に基づいて、受信トラフィックおよび送信トラフィックを制御およびフィルタするために使用されます。管理者がネットワーク・トラフィックを管理および制限して不正アクセス、潜在的な攻撃およびデータ漏洩を防止できるようにすることで、ネットワーク・セキュリティにおいて重要な役割を果たします。 |
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
Select AIの使用例
OracleのSelect AIを、OpenAI、Cohere、Azure Open AI、OCI Generative AIなどの様々なAIプロバイダーと統合して、自然言語から直接SQLクエリを生成する方法をご紹介します。
これらの例では、一般的なSelect AIアクションを紹介し、それらのアクションを活用するために様々なAIプロバイダでプロファイルを設定する手順を示します。
例: AIアクションの選択
次の例は、SELECT AI
で実行できるrunsql
、showsql
、narrate
、chat
、explainsql
などのアクションを示しています。これらの例では、DBMS_CLOUD_AI.CREATE_PROFILE
関数で設定されたAIプロバイダおよびプロファイル属性でsh
スキーマを使用します。
SQL> select ai how many customers exist;
CUSTOMER_COUNT
--------------
55500
SQL> select ai showsql how many customers exist;
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
SQL> select ai narrate how many customers exist;
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
SQL> select ai chat how many customers exist;
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.
SQL> select ai explainsql how many customers in San Francisco are married;
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
- 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
- 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
Remember to adjust the table and column names based on your actual schema if they differ from the example.
Feel free to ask if you have more questions related to SQL or database in general.
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
使用ガイドライン
SQL生成の自然言語プロンプトを有効かつ適切に使用して、ユーザー・エクスペリエンスを向上させるための使用ガイドラインを提供します。
使用目的
この機能は、ユーザー指定の自然言語プロンプトによって生成されるSQL問合せの生成および実行を目的としています。ユーザーが選択した大規模言語モデル(LLM)と組み合せてスキーマ・メタデータに基づいて手動で実行できる操作を自動化します。
SQL問合せ結果の生成に関連しないプロンプトを含め、任意のプロンプトを指定できますが、Select AIはSQL問合せの生成に重点を置きます。「AI」を選択すると、chat
アクションを使用して一般的なリクエストを送信できます。
プロンプト拡張データ
データベースは、ユーザー指定のプロンプトをデータベース・メタデータで補強し、LLMからの幻覚を軽減します。次に、拡張プロンプトがユーザー指定のLLMに送信され、問合せが生成されます。
データベースは、スキーマ・メタデータのみを使用してプロンプトを拡張します。このメタデータには、スキーマ定義、表および列のコメント、およびデータ・ディクショナリおよびカタログから使用可能なコンテンツが含まれる場合があります。SQL生成では、プロンプトを拡張する際に、テーブルまたはビューの内容(実際の行または列の値)は提供されません。
ただし、narrate
アクションは、問合せの結果(データベース・データを含む可能性がある)を、問合せ結果を記述する自然言語テキストを生成するユーザー指定のLLMに提供します。
警告:
大規模言語モデル(LLM)は、一般的にインターネットから、幅広いテキスト・ドキュメントとコンテンツに関するトレーニングを受けています。その結果、LLMは、SQLインジェクションを含む無効または悪意のあるコンテンツからのパターンを組み込んだ可能性があります。したがって、LLMは有用で関連性の高いコンテンツの生成に精通していますが、不正確な結果を生成したり、データのセキュリティを損なうSQLクエリなどの誤った情報や誤った情報を生成することもできます。
ユーザー指定のLLMプロバイダによってかわりに生成された問合せは、データベースで実行されます。この機能の使用はお客様ご自身の責任においてのみ行われ、Oracleが提供するサービスに関連するその他の条件にかかわらず、お客様がそのリスクを受諾したことと、その使用によって生じるいかなる損害についても、Oracleの責任または責任を明示的に除外することになります。
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
SQL生成について
自然言語を使用したデータベース・データとの対話は、LLMで実現できるようになりました。つまり、プレーン英語などの自然言語を使用してデータベースを問い合せることができます。
「Select AI」を使用すると、Autonomous Databaseは自然言語をSQLに変換するプロセスを管理します。つまり、データと対話するためのSQLコードのかわりに自然言語プロンプトを提供できます。Select AIは、SQLユーザーと開発者の生産性向上ツールとして機能し、エキスパートではないSQLユーザーがデータ構造や技術言語を理解することなく、データから有用なインサイトを得ることができます。
DBMS_CLOUD_AI
パッケージを使用すると、自然言語プロンプトを使用してSQLコードを生成するためのユーザー指定のLLMとの統合が可能になります。このパッケージは、データベース・スキーマに関する知識をLLMに提供し、そのスキーマと一致するSQL問合せを記述するようLLMに指示するのに役立ちます。DBMS_CLOUD_AI
パッケージは、OpenAI、Cohere、Azure OpenAI Service、Oracle Cloud Infrastructure Generative AIなどのAIプロバイダと連携します。
ユーザーは、AIプロバイダを持つアカウントを持ち、Autonomous Databaseが使用する
DBMS_CLOUD_AI
オブジェクトを介して資格証明を提供する必要があります。
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
DBMS_CLOUD_AIを使用したAIプロファイルの構成
Autonomous Databaseは、AIプロファイルを使用して、LLMへのアクセスを容易におよび構成し、自然言語プロンプトからSQL文を生成するための設定を行います。
AIプロファイルには、自然言語問合せのターゲットとなるデータベース・オブジェクトが含まれます。これらのターゲットから使用されるメタデータには、データベース表名、列名、列のデータ型およびコメントを含めることができます。AIプロファイルは、DBMS_CLOUD_AI.CREATE_PROFILE
およびDBMS_CLOUD_AI.SET_PROFILE
プロシージャを使用して作成および構成します。
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
DBMS_CLOUD_AIパッケージを構成するための要件
DBMS_CLOUD_AI
を実行するには、次のものが必要です。
- Oracle Cloud Infrastructureクラウド・アカウントおよびAutonomous Databaseインスタンスへのアクセス。
- サポートされているAIプロバイダの有料APIアカウント。次のいずれかです。
-
OpenAI: OpenAIが自然言語プロンプトからSQLを生成できるようにするには、OpenAI有料アカウントからAPIキーを取得します。
秘密APIキーはユーザー設定にあります。
-
Cohere: Cohereで自然言語プロンプトからSQLを生成できるようにするには、Cohere有料アカウントからAPIキーを取得します。
「ダッシュボード」をクリックし、左側のナビゲーションで「APIキー」をクリックします。デフォルトのAPIキーをコピーするか、別のキーを作成します。詳細は、API-Keysを参照してください。
-
Azure OpenAIサービス: Azure OpenAIサービスが自然言語プロンプトからSQLを生成できるようにするには、AIプロバイダを構成してアクセスを提供します。
Azure OpenAIサービスを使用するには、次のステップを実行します:
- 秘密APIキーを取得します。APIキーは、Azureポータルの「Resource Management」セクションにあります。AzureのOpenAIサービス・リソース・ページで、「キーおよびエンドポイント」をクリックします。KEY1またはKEY2をコピーできます。
- Azure OpenAIサービス・リソースを作成し、モデルをデプロイします: Azure OpenAIサービス・リソースを作成してデプロイします。
ヒント:
- これらのパラメータを使用してネットワーク・アクセス権限を提供し、
DBMS_CLOUD_AI.CREATE_PROFILE
プロシージャを使用してAzure OpenAIサービス・プロファイルを作成するため、リソース名およびデプロイメント名に注意してください。 - モデルの1分当たりのトークンのレート制限の詳細は、Azure OpenAIサービスの割当て制限および制限を参照してください。
- これらのパラメータを使用してネットワーク・アクセス権限を提供し、
- Azure OpenAIサービスへのアクセスを許可:
- Azure OpenAIサービスへのアクセスを許可するには、シークレットAPIキーを使用できます。詳細は、Select AIの使用例の例を参照してください。
- OCI生成AI。API署名キーの生成方法を参照してください。
-
- 外部AIプロバイダにアクセスするためのネットワークACL権限。
ノート
ネットワークACLはOCI生成AIには適用されません。 - AIプロバイダへのアクセスを提供する資格証明。
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
DBMS_CLOUD_AIパッケージの構成
DBMS_CLOUD_AI
を使用するステップについて説明します。
DBMS_CLOUD_AI
の構成
DBMS_CLOUD_AI
を構成するには:
-
DBMS_CLOUD_AI
パッケージのEXECUTE
権限を、Select AIを使用するユーザーに付与します。デフォルトでは、ADMINユーザーのみが
EXECUTE
権限を付与されます。ADMINユーザーは、他のユーザーにEXECUTE
権限を付与できます。 -
Select AIを使用するユーザーおよびAIプロバイダ・エンドポイントにネットワークACLアクセス権を付与します。
ADMINユーザーは、ネットワークACLアクセス権を付与できます。詳細は、APPEND_HOST_ACEプロシージャを参照してください。
- AIプロバイダへのアクセスを有効にする資格証明を作成します。
詳細は、CREATE_CREDENTIALプロシージャを参照してください。
ADB_USER
にEXECUTE
権限を付与します。grant execute on DBMS_CLOUD_AI to ADB_USER;
次の例では、api.openai.comエンドポイントを使用する権限をADB_USER
に付与します。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'ADB_USER',
principal_type => xs_acl.ptype_db)
);
END;
/
APPEND_HOST_ACEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
hostには、ホストの名前またはIPアドレスを指定できます。ワイルドカードを使用すると、ドメインやIPサブネットを指定できます。ホストまたはドメイン名の大文字と小文字は区別されません。 OpenAIには、api.openai.comを使用します。 Cohereの場合は、api.cohere.aiを使用します。 Azure OpenAI Serviceの場合は、<azure_resource_name>.openai.azure.comを使用します。 |
|
アクセス制御エントリ(ACE)。ACLの各ACEエントリを作成するために、 |
次に、OpenAIへのアクセスを有効にする資格証明の作成方法の例を示します。
EXEC DBMS_CLOUD.CREATE_CREDENTIAL
('OPENAI_CRED', 'OPENAI', 'your_api_token');
DBMS_CLOUD.CREATE_CREDENTIAL
パラメータ
パラメータ | 説明 |
---|---|
|
格納する資格証明の名前。 |
|
|
|
|
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
AIプロファイルの作成と設定
AIプロファイルを作成して有効にする手順について説明します。
AIプロファイルを作成するには、DBMS_CLOUD_AI.CREATE_PROFILE
を使用します。次に、DBMS_CLOUD_AI.SET_PROFILE
を起動してAIプロファイルを有効にし、自然言語プロンプトでSELECT AI
を使用できるようにします。
SELECT
AI
を使用する前に、新しいデータベース・セッション(接続)ごとにDBMS_CLOUD_AI.SET_PROFILE
を実行する必要があります。
次の例では、OpenAIプロバイダを使用して、OPENAI
というAI
プロファイルを作成し、現在のユーザー・セッションのOPENAI
プロファイルを設定します。
-- Create AI profile
--
SQL> BEGIN
DBMS_CLOUD_AI.create_profile(
'OPENAI',
'{"provider": "openai",
"credential_name": "OPENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "sales"},
{"owner": "SH", "name": "products"},
{"owner": "SH", "name": "countries"}]
}');
END;
/
PL/SQL procedure successfully completed.
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
PL/SQL procedure successfully completed.
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成
AIキーワードを使用したプロンプトの入力
SELECT
文のキーワードとしてAI
を使用し、自然言語プロンプトを使用してデータベースと対話します。
SELECT
文のAI
キーワードは、アクティブなAIプロファイルで識別されたLLMを使用して自然言語を処理し、SQLを生成するようにSQL実行エンジンに指示します。
AI
キーワードは、SQL Developer、OML Notebooks、サード・パーティ・ツールなどのOracleクライアントとの問合せで使用して、自然言語でデータベースと対話できます。
AI
キーワードを使用して、PL/SQL文、DDL文またはDML文は実行できません。
構文
SELECT AI action natural_language_prompt
パラメータ
パラメータ | 説明 |
---|---|
|
自然言語プロンプトを使用して、指定されたSQLコマンドを実行します。これはデフォルトのアクションであり、このパラメータの指定はオプションです。 |
|
自然言語プロンプトのSQL文を表示します。 |
|
プロンプトの出力は自然言語で説明します。このオプションにより、SQL結果がAIプロバイダに送信され、自然言語のサマリーが生成されます。 |
|
プロンプトに基づいてLLMから直接応答を生成します。 |
|
プロンプトから生成されたSQLは、自然言語で説明します。このオプションにより、生成されたSQLがAIプロバイダに送信され、自然言語の説明が生成されます。 |
使用上のノート
-
AI
は、データベース・アクションまたはAPEXサービスではサポートされていません。使用できるのは、DBMS_CLOUD_AI.GENERATE
ファンクションのみです。 -
AI
キーワードは、SELECT
文でのみサポートされます。 -
AI
キーワードを使用して、PL/SQL文、DDL文またはDML文を実行することはできません。 -
順序は、
SELECT
の後にAI
が続きます。これらのキーワードの大/小文字は区別されません。DBMS_CLOUD_AI.SET_PROFILE
の構成後、SELECT AI
の後のテキストは自然言語プロンプトです。AIプロファイルが設定されていない場合、SELECT
AI
は次のエラーを報告します。ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected"
-
Oracleのガイドラインに従って、特殊文字の使用規則が適用されます。たとえば、1つの文でアポストロフィを使用している場合は、一重引用符を2回使用します。
select ai how many customers in SF don''t own their own home
-
LLMはハルシネーションの対象となり、結果が常に正しいとはかぎりません。
-
SELECT AI
は、生成されたSQLを特定の自然言語プロンプトに対して実行できない場合があります。 -
SELECT AI
が特定の自然言語プロンプトに対してSQLを生成できない場合があります。
このようなシナリオでは、
SELECT AI
は、有効なSQLの生成に役立つ情報で応答します。 -
-
SQL構造についてさらに学習するには、
chat
アクションをSELECT AI chat
とともに使用します。chat
アクションでより適切な結果を得るには、データベース・ビューまたはコンテキスト列名を持つ表を使用するか、列に格納されている値を説明する列コメントを追加することを検討してください。 -
DBAビューまたはUSERビューにアクセスするには、DBMS_CLOUD_AIビューを参照してください。
親トピック: 選択AIを使用した自然言語プロンプトからのSQLの生成