7 AIプロファイルの管理

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

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

Autonomous AI 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 AI Databaseインスタンスへのアクセス。
  • サポートされているAIプロバイダの有償APIアカウント。次のいずれかです:
    AIプロバイダ APIキー

    OpenAI

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

    OpenAI互換プロバイダ

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

    Cohere

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

    Azure OpenAI Service

    Azure OpenAI Serviceの構成方法の詳細は、「Azure OpenAI Serviceの使用」を参照してください。

    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. DBMS_CLOUD_AIパッケージに対するEXECUTE権限を、Select AIを使用するユーザーに付与します。

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

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

    ノート:

    ユーザーがすでにDWROLEロールを持っている場合は、この権限が含まれているため、追加で付与する必要はありません。
  3. Select AIおよびAIプロバイダ・エンドポイントを使用するユーザーにネットワークACLアクセス権を付与します。

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

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

    詳細は、unresolvable-reference.html#GUID-742FC365-AA09-48A8-922C-1987795CF36Aを参照してください。

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

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パッケージに対する権限がユーザーに付与されているかどうかを確認するために、管理者は次のSQL文を実行できます:

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 Service

    <azure_resource_name>.openai.azure.com

    azure_resource_nameの詳細は、unresolvable-reference.html#GUID-12D91681-B51C-48E0-93FD-9ABC67B0F375を参照してください。

    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 Service

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

    ノート:

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

    OCI生成AI

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

    Google

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

    Anthropic

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

    Hugging Face

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

    AWS

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

次の例では、RAGによるSelect AIを使用するために、表領域の割当て制限をADB_USERに付与しています:

ALTER USER ADB_USER QUOTA 1T ON <tablespace_name>;

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

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

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

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

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

Select AIでAIプロバイダを使用できるようにする方法について説明します。

Anthropicの使用

Anthropic Developer Consoleで自然言語プロンプトに対するSQLおよびテキスト応答を生成できるようにするには、Anthropic Developer Consoleの有償アカウントから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を使用したSelect AI」を参照してください。
Azure OpenAI Serviceの使用

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

Azure OpenAI Serviceを使用するには、次の手順を実行します:
  1. 秘密APIキーを取得します。APIキーは、Azureポータルの「Resource Management」セクションにあります。Azure OpenAI Serviceの「Resource」ページで、「Keys and Endpoint」をクリックします。KEY1またはKEY2をコピーできます。
  2. Azure OpenAI Serviceのリソースを作成し、モデルをデプロイします: Azure OpenAI Serviceリソースの作成およびデプロイ

    ヒント:

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

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

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

  2. または、「Dashboard」をクリックします。

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

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. 「Create API key」をクリックします。
  6. 「Create API key in new project」をクリックします。
    画面に進行状況が表示され、APIキーが生成されます。キーをコピーして保存します。
Hugging Faceの使用

Hugging FaceをAIプロバイダとして有効にし、自然言語プロンプトに対するSQLおよびテキスト応答を生成するには、Hugging Face有償アカウントからAPIキーを取得します。

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

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

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

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

秘密APIキーは、プロファイル・ダッシュボードの「API keys」の下にあります。

OpenAI互換プロバイダの使用

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

OpenAI互換プロバイダではBearer認証が使用されます。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. 使用可能なモデルをクリックして、いずれかのモデルを選択します。
    2. 「API Example」にスクロールして、OpenAI互換のベースURLパスを取得します。
      Llama 3.2 3B Instructモデルの場合、ベース・パスURLはhttps://api.fireworks.ai/inference/v1/chat/completionsです。provider_endpointパラメータでは、/v1/chat/completionsを除外します。前述のモデルのprovider_endpointは、https://api.fireworks.ai/inferenceです。

      ノート:

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

AIプロファイルの作成および設定

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

AIプロファイルを作成するには、DBMS_CLOUD_AI.CREATE_PROFILEを使用します。DBMS_CLOUD_AI.SET_PROFILEを実行して、自然言語プロンプトでSELECT AIを使用できるように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.