AIプロファイルの管理

AIプロファイルは、DBMS_CLOUD_AIパッケージを使用して作成および管理できます。

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

Autonomous Databaseは、AIプロファイルを使用して、LLMへのアクセスを容易におよび構成し、自然言語プロンプトに基づいてSQLを生成、実行および説明するための設定を行います。また、埋込みモデルおよびベクトル索引を使用した取得拡張生成が容易になり、LLMとのチャットが可能になります。

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

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

Select AIの前提条件の実行

Select AIを使用する前に、DBMS_CLOUD_AIを有効にするステップを次に示します。

DBMS_CLOUD_AIを使用するには、次のものが必要です。

  • Oracle Cloud Infrastructureクラウド・アカウントおよびAutonomous Databaseインスタンスへのアクセス。
  • サポートされているAIプロバイダの有料APIアカウント。次のいずれかです。
    AIプロバイダ APIキー

    OpenAI

    APIキーを取得するには、OpenAIの使用を参照してください。

    OpenAI互換プロバイダ

    APIキーおよびprovider_endpointを取得するには、「OpenAI互換プロバイダの使用」を参照してください。

    Cohere

    秘密キーを取得するには、Cohereの使用を参照してください。

    Azure OpenAIサービス

    Azure OpenAIサービスの構成方法の詳細は、Azure OpenAIサービスの使用を参照してください。

    OCI生成AI

    OCI生成AIの使用を参照してください。

    Google

    APIキーを取得するには、Googleの使用を参照してください。

    Anthropic

    APIキーを取得するには、Anthropicの使用を参照してください。

    Hugging Face

    APIキーを取得するには、Hugging Faceの使用を参照してください。

    AWS

    APIキーおよびモデルIDを取得するには、AWSの使用を参照してください。

  • 外部AIプロバイダにアクセスするためのネットワークACL権限。
    ノート

    OCI生成AIにはネットワークACL権限は必要ありません。
  • AIプロバイダへのアクセスを提供する資格証明。

Select AIの権限の付与

Select AIを使用するには、管理者が DBMS_CLOUD_AIパッケージに対するEXECUTE権限を付与する必要があります。Select AIとその機能に必要な追加の権限について学習します。

DBMS_CLOUD_AIを構成するには:
  1. Select AIを使用するユーザーに、DBMS_CLOUD_AIパッケージに対するEXECUTE権限を付与します。

    デフォルトでは、システム管理者のみがEXECUTE権限を持ちます。管理者は、他のユーザーにEXECUTE権限を付与できます。

  2. DBMS_CLOUD_PIPELINEに対するEXECUTE権限を、RAGでSelect AIを使用するユーザーに付与します。

  3. Select AIおよびAIプロバイダ・エンドポイントを使用するユーザーにネットワークACLアクセス権を付与します。

    システム管理者は、ネットワークACLアクセス権を付与できます。詳細は、APPEND_HOST_ACEプロシージャを参照してください。

  4. 資格証明を作成して、AIプロバイダへのアクセスを有効にします。

    詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

  5. Select AI with RAGを使用するユーザーに、特定の表領域内の領域量を管理するための表領域内の割当て制限を付与します。

Select AIを実行する権限の例

Select AIとその機能の使用に必要な権限の例を確認します。

次の例では、EXECUTE権限をADB_USERに付与します。
GRANT execute on DBMS_CLOUD_AI to ADB_USER;

次の例では、RAGに必要なDBMS_CLOUD_PIPELINEパッケージに対するEXECUTE権限を付与します。

GRANT EXECUTE on DBMS_CLOUD_PIPELINE to ADB_USER;

DBMS_CLOUD_AIおよびDBMS_CLOUD_PIPELINEパッケージに対してユーザーに付与された権限をチェックするために、管理者は次を実行できます。

SELECT table_name AS package_name, privilege 
 FROM DBA_TAB_PRIVS 
 WHERE grantee = '<username>'
 AND   (table_name = 'DBMS_CLOUD_PIPELINE'
        OR table_name = 'DBMS_CLOUD_AI');
次の例では、api.openai.comエンドポイントを使用する権限をADB_USERに付与します。
ノート

この手順は、OCI生成AIには適用されません。
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;
/

パラメータは次のとおりです。

  • host: ホスト。ホストには、ホスト名またはホストのIPアドレスを指定できます。ワイルドカードを使用して、ドメインまたはIPサブネットを指定できます。ホストまたはドメイン名では大文字と小文字は区別されません。

    AIプロバイダ ホスト

    OpenAI

    api.openai.com

    OpenAI互換プロバイダ

    たとえば、Fireworks AIの場合は、api.fireworks.aiを使用します

    Cohere

    api.cohere.ai

    Azure OpenAIサービス

    <azure_resource_name>.openai.azure.com

    azure_resource_nameの詳細は、「プロファイル属性」を参照してください。

    Google

    generativelanguage.googleapis.com

    Anthropic

    api.anthropic.com

    Hugging Face

    api-inference.huggingface.co

    AWS

    bedrock-runtime.us-east-1.amazonaws.com

  • ace: アクセス制御エントリ(ACE)。ACLの各ACEエントリを作成するために、XS$ACE_TYPEタイプが提供されています。詳細は、「ACLおよびACEの作成」を参照してください。

次の例では、OpenAIへのアクセスを有効にする資格証明を作成します。


EXEC 
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name   => 'OPENAI_CRED', 
username          =>  'OPENAI', 
password          =>  '<your_api_token>');

パラメータは次のとおりです。

  • credential_name: 格納する資格証明の名前。credential_nameパラメータは、Oracleオブジェクトのネーミング規則に準拠している必要があります。

  • username: username引数とpassword引数は、一緒にAIプロバイダ資格証明を指定します。

    usernameはユーザー指定のユーザー名です。

  • password: username引数とpassword引数は、一緒にAIプロバイダ資格証明を指定します。

    passwordは、AIプロバイダの秘密APIキーであり、プロバイダによって異なります:

    AIプロバイダ APIキー

    OpenAI

    APIキーを取得するには、OpenAIの使用を参照してください。

    OpenAI互換プロバイダ

    APIキーおよびprovider_endpointを取得するには、「OpenAI互換プロバイダの使用」を参照してください。

    Cohere

    APIキーを取得するには、Cohereの使用を参照してください。

    Azure OpenAIサービス

    APIキーを取得してサービスを構成するには、Azure OpenAIサービスの使用を参照してください。

    ノート

    Azure OpenAIサービス・プリンシパルを使用して認証する場合は、DBMS_CLOUD.CREATE_CREDENTIALプロシージャをスキップできます。Azure OpenAIサービス・プリンシパルを使用した認証の例については、Select AIの使用例を参照してください。

    OCI生成AI

    API署名キーを生成するには、OCI生成AIの使用を参照してください。

    Google

    APIキーを生成するには、Googleの使用を参照してください。

    Anthropic

    APIキーを生成するには、Anthropicの使用を参照してください。

    Hugging Face

    APIキーを生成するには、Hugging Faceの使用を参照してください。

    AWS

    APIキーおよびモデルIDを取得するには、AWSの使用を参照してください。

次の例では、表領域に対する割当て制限をADB_USERに付与して、Select AI with RAGを使用します。

ALTER USER ADB_USER QUOTA 1T ON <tablespace_name>;

ユーザーに付与されている表領域割当て制限を確認するには、次を実行します。

SELECT TABLESPACE_NAME, BYTES, MAX_BYTES 
FROM DBA_TS_QUOTAS 
WHERE USERNAME = '<username>' AND
      TABLESPACE_NAME LIKE 'DATA%';

パラメータは次のとおりです。

  • TABLESPACE_NAME: 割当て制限が割り当てられている表領域。Autonomous Databaseでは、表領域は自動的に管理され、接頭辞としてDATAがあります。
  • BYTES: 表領域でユーザーが現在使用している領域の量。
  • MAX_BYTES: 割当て制限の最大値(バイト単位)。MAX_BYTESが-1の場合は、表領域に対する割当て制限が無制限であることを意味します。ベクトル索引を作成するデータベース・ユーザーは、ベクトル索引を収容するためにMAX_BYTESをバイトより十分に大きくする必要があります。または、無制限の割当て制限の場合はMAX_BYTESを-1にする必要があります。

サポートされているAIプロバイダを使用するためのSelect AIの構成

AIプロバイダーがSelect AIで使用できるようにする方法をご紹介します。

Anthropicの使用

Anthropic開発者コンソールで自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、Anthropic開発者コンソールの有料アカウントからAPIキーを取得します。

  1. Anthropic Developer Consoleに移動します。
  2. まだアカウントがない場合はアカウントにサインアップします。
  3. ログインしたら、APIセクションまたはダッシュボードに移動します。
  4. APIキーを生成または表示するオプションを探します。
  5. 新規APIキーを作成する場合にクリックします。
  6. 生成されたAPIキーをコピーして保存します。
    Claude APIは有料サービスです。APIキーを使用する前に、アカウントにクレジットを追加する必要があります。

AWSの使用

AWSを有効にするには、APIキーとモデルIDを取得します。

APIキーを取得し、それを使用してDBMS_CLOUD.CREATE_CREDENTIALを介して資格証明を作成します。

次のプロセスに従って、APIキーおよびモデル名を取得します:

  1. AWSアカウントをお持ちでない方は、登録してください。
  2. AWS Bedrock Consoleからアクセス・キーと秘密キーを作成します。
  3. 生成されたキーをコピーして保存します。
  4. 基本モデルへのアクセスをリクエストします。Amazon Bedrockの基盤モデルへのアクセスを参照してください。
  5. モデルIDを取得します。DBMS_CLOUD_AI.CREATE_PROFILEプロシージャでモデルIDが必要です。モデルIDは、使用するリソースによって異なります。使用する場合:
    ノート

    インポートされたモデルは、Bedrock Converse APIではサポートされていません。
AWSをプロバイダとして使用するには、例: AWSを使用したAIの選択を参照してください。

Azure OpenAIサービスの使用

Azure OpenAI Serviceで自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、AIプロバイダを構成してアクセスを提供します。

Azure OpenAIサービスを使用するには、次のステップを実行します:
  1. 秘密APIキーを取得します。APIキーは、AzureポータルのResource Managementセクションにあります。Azure OpenAIサービス・リソース・ページで、「キーおよびエンドポイント」をクリックします。KEY1またはKEY2のいずれかをコピーできます。
  2. Azure OpenAIサービス・リソースを作成し、Azure OpenAIサービス・リソースの作成およびデプロイというモデルをデプロイします。

    ヒント:

    • リソース名およびデプロイメント名をノートにとります。これらのパラメータは、ネットワーク・アクセス権限の提供と、DBMS_CLOUD_AI.CREATE_PROFILEプロシージャを使用したAzure OpenAIサービス・プロファイルの作成に使用されます。
    • モデルでの1分当たりのトークンのレート制限の詳細は、Azure OpenAIサービスの割当て制限および制限を参照してください。
  3. Azure OpenAIサービスへのアクセスを許可します:

Cohereの使用

Cohereが自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、Cohere有料アカウントからAPIキーを取得します。

  1. 資格情報でCohereのWebサイトにログインします。Cohere Dashboardがデフォルトで表示されます。

  2. または、「ダッシュボード」をクリックします。

  3. 左側のナビゲーションで「APIキー」をクリックします。デフォルトのAPIキーをコピーするか、別のキーを作成します。詳細はAPIキーを参照してください。

Googleを使う

Google AI Studioが自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、Google AI Studioの有料アカウントからAPIキーを取得します。

  1. Google AI Studioに移動します。
  2. 「Sign In to Google AI Studio」をクリックします。
  3. プロンプト画面で「Get API key」をクリックします。
  4. 次のページで適用可能なすべてのオプションを選択します。
  5. 「APIキーの作成」をクリックします。
  6. 新規プロジェクトで「APIキーの作成」をクリックします。
    画面に進行状況が表示され、APIキーが生成されます。キーをコピーして保存します。

Hugging Faceを使用

AIプロバイダとしてHugging Faceが自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、Hugging Face有料アカウントからAPIキーを取得します。

  1. Hugging Faceに移動します。
  2. まだアカウントがない場合はアカウントにサインアップします。
  3. アカウント設定に移動します。
  4. ナビゲーション・メニューで、「アクセス・トークン」を見つけます。
  5. 新規APIキーを作成する場合にクリックします。
  6. 生成されたAPIキーをコピーして保存します。

OCI生成AIの使用

OCI生成AIが自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、API署名キーを生成します。

コンソールまたはコマンドラインを使用して、Oracle DatabaseインスタンスのAPI署名キーを生成します。API署名キーの生成方法を参照してください。

OpenAIの使用

OpenAIで自然言語プロンプトに対するSQLおよびテキスト・レスポンスを生成できるようにするには、OpenAI有料アカウントからAPIキーを取得します。

秘密APIキーは、プロファイル・ダッシュボードのAPIキーから検索できます。

OpenAI互換プロバイダの使用

OpenAIと互換性のあるプロバイダを有効にするには、APIキーを取得します。

OpenAI互換プロバイダはベアラー認証を使用します。APIキーを取得し、それを使用してDBMS_CLOUD.CREATE_CREDENTIALを介して資格証明を作成します。たとえば、Fireworks AIはOpenAI互換プロバイダです。

プロセスに従って、Fireworks AI APIキー、モデル・ベース・パスURLおよびモデル名を取得します:

  1. Fireworks AIアカウントにまだ登録していない場合は、登録してください。
  2. Fireworks AIコンソールからAPIキーを作成します。
  3. 生成されたAPIキーをコピーして保存します。
  4. DBMS_CLOUD_AI.CREATE_PROFILEプロシージャで必要なプロバイダ・エンドポイントを取得します。
    1. 使用可能なモデルをクリックして、使用可能なモデルの1つを選択します。
    2. APIの例までスクロールし、OpenAI互換のベースURLパスを取得します。
      Llama 3.2 3B Instructモデルの場合、ベース・パスURLはhttps://api.fireworks.ai/inference/v1/chat/completionsです。provider_endpointパラメータの場合は、/v1/chat/completionsを除外します。前述のモデルのprovider_endpointhttps://api.fireworks.ai/inferenceです。
      ノート

      一部のプロバイダでは、モデル名の接頭辞が必要になる場合があります。正しい形式については、AIプロバイダのドキュメントを参照してください。
  5. 同じAPIの例から、モデル名をコピーします。DBMS_CLOUD_AI.CREATE_PROFILEプロシージャでモデル名が必要です。たとえば、accounts/fireworks/models/llama-v3p2-3b-instructです。
OpenAI互換プロバイダとしてFirework AIを使用するには、例: OpenAI互換プロバイダを使用したAIの選択を参照してください。

AIプロファイルの作成と設定

AIプロファイルを作成して有効にする手順について説明します。

AIプロファイルを作成するには、DBMS_CLOUD_AI.CREATE_PROFILEを使用します。自然言語プロンプトでSELECT AIを使用できるように、DBMS_CLOUD_AI.SET_PROFILEを実行してAIプロファイルを有効にします。

ノート

SELECT AIを使用する前に、新しいステートフル・データベース・セッション(接続)ごとにDBMS_CLOUD_AI.SET_PROFILEを実行する必要があります。ステートレス接続を使用している場合は、各呼出しでプロファイル名を指定できるDBMS_CLOUD_AI.GENERATE関数を使用する必要があります。

次の例では、OpenAIプロバイダを使用して、OPENAIというAIプロファイルを作成し、現在のユーザー・セッションのOPENAIプロファイルを設定します。

-- Create AI profile
--BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
  profile_name   => 'OPENAI',
  attributes     =>'{"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
--
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
 
PL/SQL procedure successfully completed.