データベースとの自然言語対話にSelect AIを使用

Oracle Autonomous Database Select AIを使用すると、自然言語を使用してデータを問い合せることができます。

AIの選択機能により、Autonomous Databaseでは、生成AIを大規模言語モデル(LLM)とともに使用して、ユーザーの入力テキストをOracle SQLに変換できます。「AI」を選択すると、自然言語プロンプトが処理され、プロンプトにメタデータが補足されてから、SQL問合せが生成および実行されます。

Select AIについて

自然言語を使用したデータベース・データとの対話は、LLMで実現できるようになりました。つまり、プレーン英語などの自然言語を使用してデータベースを問い合せることができます。

「AIの選択」を使用すると、Autonomous Databaseは自然言語をSQLに変換するプロセスを管理します。つまり、データと対話するためのSQLコードのかわりに自然言語プロンプトを提供できます。Select AIは、SQLユーザーと開発者の生産性向上ツールとして機能し、エキスパートではないSQLユーザーがデータ構造や技術言語を理解することなく、データから有用なインサイトを得ることができます。

Autonomous DatabaseDBMS_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オブジェクトを介して資格証明を提供する必要があります。

使用ガイドライン

SQL生成の自然言語プロンプトを有効かつ適切に使用して、ユーザー・エクスペリエンスを向上させるための使用ガイドラインを提供します。

使用目的

この機能は、ユーザー指定の自然言語プロンプトによって生成されるSQL問合せの生成および実行を目的としています。ユーザーが選択した大規模言語モデル(LLM)と組み合せてスキーマ・メタデータに基づいて手動で実行できる操作を自動化します。

SQL問合せ結果の生成に関連しないプロンプトを含め、任意のプロンプトを指定できますが、Select AIはSQL問合せの生成に重点を置きます。「AI」を選択すると、chatアクションを使用して一般的なリクエストを送信できます。

プロンプト拡張データ

データベースは、ユーザー指定のプロンプトをデータベース・メタデータで補強し、LLMからの幻覚を軽減します。次に、拡張プロンプトがユーザー指定のLLMに送信され、問合せが生成されます。

データベースは、スキーマ・メタデータのみを使用してプロンプトを拡張します。このメタデータには、スキーマ定義、表および列のコメント、およびデータ・ディクショナリおよびカタログから使用可能なコンテンツが含まれる場合があります。SQL生成では、プロンプトを拡張する際に、テーブルまたはビューの内容(実際の行または列の値)は提供されません。

ただし、narrateアクションは、問合せの結果(データベース・データを含む可能性がある)を、問合せ結果を記述する自然言語テキストを生成するユーザー指定のLLMに提供します。

警告:

大規模言語モデル(LLM)は、一般的にインターネットから、幅広いテキスト・ドキュメントとコンテンツに関するトレーニングを受けています。その結果、LLMは、SQLインジェクションを含む無効または悪意のあるコンテンツからのパターンを組み込んだ可能性があります。したがって、LLMは有用で関連性の高いコンテンツの生成に精通していますが、不正確な結果を生成したり、データのセキュリティを損なうSQLクエリなどの誤った情報や誤った情報を生成することもできます。

ユーザー指定のLLMプロバイダによってかわりに生成された問合せは、データベースで実行されます。この機能の使用はお客様ご自身の責任においてのみ行われ、Oracleが提供するサービスに関連するその他の条件にかかわらず、お客様がそのリスクを受諾したことと、その使用によって生じるいかなる損害についても、Oracleの責任または責任を明示的に除外することになります。

DBMS_CLOUD_AIを使用したAIプロファイルの構成

Oracle Autonomous Database Serverlessは、AIプロファイルを使用して、LLMへのアクセスを容易におよび構成し、自然言語プロンプトからSQL文を生成するための設定を行います。

AIプロファイルには、自然言語問合せのターゲットとなるデータベース・オブジェクトが含まれます。これらのターゲットから使用されるメタデータには、データベース表名、列名、列のデータ型およびコメントを含めることができます。AIプロファイルは、DBMS_CLOUD_AI.CREATE_PROFILEおよびDBMS_CLOUD_AI.SET_PROFILEプロシージャを使用して作成および構成します。

AIプロファイルでの表およびビューの指定に加えて、「データ・カタログを使用した外部データの問合せ」で説明されている表など、外部表にマップされた表を指定することもできます。これにより、データベース内だけでなく、データ・レイクのオブジェクト・ストアに格納されているデータも問い合せることができます。

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キーワードを使用したプロンプトの入力

SELECT文のキーワードとしてAIを使用し、自然言語プロンプトを使用してデータベースと対話します。

SELECT文のAIキーワードは、アクティブなAIプロファイルで識別されたLLMを使用して自然言語を処理し、SQLを生成するようにSQL実行エンジンに指示します。

AIキーワードは、SQL Developer、OML Notebooks、サード・パーティ・ツールなどのOracleクライアントとの問合せで使用して、自然言語でデータベースと対話できます。

ノート

AIキーワードを使用して、PL/SQL文、DDL文またはDML文は実行できません。

構文

AIプロンプトを実行するための構文は次のとおりです。
SELECT AI action natural_language_prompt

パラメータ

actionパラメータで使用可能なパラメータは、次のとおりです。
パラメータ 説明

runsql

自然言語プロンプトの基礎となるSQLコマンドを実行します。これはデフォルトのアクションであり、このパラメータの指定はオプションです。

showsql

自然言語プロンプトのSQL文を表示します。

narrate

基礎となるSQLコマンドの出力を自然言語で説明します。このオプションにより、SQL結果がAIプロバイダに送信され、自然言語のサマリーが生成されます。

chat

プロンプトに基づいてLLMから直接応答を生成します。DBMS_CLOUD_AI.CREATE_PROFILEファンクションのconversationtrueに設定されている場合、このオプションには、スキーマ・メタデータを含む可能性のある以前の相互作用またはプロンプトからのコンテンツが含まれます。

explainsql

プロンプトから生成されたSQLを自然言語で説明します。このオプションにより、生成されたSQLがAIプロバイダに送信され、自然言語の説明が生成されます。

使用上のノート

  • AIは、データベース・アクションまたはAPEXサービスではサポートされていません。DBMS_CLOUD_AI.GENERATEファンクションのみを使用できます。

  • AIキーワードは、SELECT文でのみサポートされます。

  • AIキーワードを使用して、PL/SQL文、DDL文またはDML文を実行することはできません。

  • 順序は、SELECTの後にAIが続きます。これらのキーワードの大/小文字は区別されません。DBMS_CLOUD_AI.SET_PROFILEを使用してAIプロファイルを設定したあと、SELECT AIのあとのテキストが自然言語プロンプトになります。AIプロファイルが設定されていない場合、SELECT 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を生成できない場合があります。

    • LLMは、自然言語プロンプトで正しい結果を生成するSQLを生成しない可能性があります。

    このようなシナリオでは、SELECT AIは、有効なSQLの生成に役立つ情報で応答します。

  • SQL構造についてさらに学習するには、SELECT AI chatのようにchatアクションを使用します。chatアクションでより適切な結果を得るには、データベース・ビューまたはコンテキスト列名を持つ表を使用するか、列に格納されている値を説明する列コメントを追加することを検討してください。

  • DBAビューまたはUSERビューにアクセスするには、DBMS_CLOUD_AIビューを参照してください。

用語

AIの選択機能で使用される用語の定義について説明します。

AIの選択機能に関連する用語は次のとおりです。

用語 定義

データベース資格証明

データベース資格証明は、データベースへのアクセスおよび対話に使用される認証資格証明です。通常、ユーザー名およびパスワードで構成され、セキュリティ・トークンなどの追加の認証ファクタによって補完されることがあります。これらの資格証明は、アプリケーションまたはユーザーとデータベース間のセキュアな接続を確立するために使用され、認可された個人またはシステムのみがデータベース内に格納されているデータにアクセスして操作できるようにします。

LLMの幻覚

大言語モデルの文脈における幻覚は、入力プロンプトに不正確、無意味、または無関係なテキストをモデルが生成する現象を指します。モデルの一貫性のあるテキストの生成の試みの結果であるにもかかわらず、これらのインスタンスには、作成、誤解を招く、または純粋に想像力のある情報を含めることができます。幻覚は、トレーニング・データのバイアス、適切なコンテキスト理解の欠如、またはモデルのトレーニング・プロセスの制限が原因で発生する可能性があります。

IAM Oracle Cloud Infrastructure Identity and Access Management (IAM)を使用すると、クラウド・リソースにアクセスできるユーザーを制御できます。ユーザーのグループが保持するアクセス権のタイプとアクセスの対象となる特定のリソースを制御できます。詳細は、Identity and Access Managementの概要を参照してください。

大型言語モデル(LLM)

大言語モデルは、人間のような言語、ソフトウェア・コードおよびデータベース問合せを理解および生成するために大量のテキスト・データに基づいてトレーニングされた高度な人工知能モデルを指します。これらのモデルは、テキスト生成、翻訳、要約、質問回答、センチメント分析など、幅広い自然言語処理タスクを実行できます。LLMは通常、入力データからパターン、コンテキストおよびセマンティクスを学習するニューラル・ネットワークベースのアーキテクチャであり、一貫性のあるコンテキスト関連テキストを生成できます。

自然言語プロンプト

自然言語プロンプトは、大規模言語モデルなどの生成AIモデルをガイドするために提供される、人間が読める手順またはリクエストです。ユーザーは、特定のプログラミング言語やコマンドを使用するかわりに、より会話型または自然言語形式でプロンプトを入力することで、これらのモデルを操作できます。モデルは、指定されたプロンプトに基づいて出力を生成します。

ネットワーク・アクセス制御リスト(ACL)

ネットワーク・アクセス制御リストは、ルーター、ファイアウォール、ゲートウェイなどのネットワーク・デバイスを通過できるネットワーク・トラフィックを定義するルールまたは権限のセットです。ACLは、IPアドレス、ポート番号、プロトコルなどの様々な基準に基づいて、受信トラフィックおよび送信トラフィックを制御およびフィルタするために使用されます。管理者がネットワーク・トラフィックを管理および制限して不正アクセス、潜在的な攻撃およびデータ漏洩を防止できるようにすることで、ネットワーク・セキュリティにおいて重要な役割を果たします。