DBMS_CLOUD_AIパッケージ

Select AIを使用したDBMS_CLOUD_AIパッケージは、SQL文を生成、実行および説明するための自然言語プロンプトの翻訳を容易にして構成します。また、LLMとのチャットなど、検索拡張生成および自然言語ベースのインタラクションを可能にします。

前提条件

アウトバウンド接続は、次に説明するようにフリート管理者によってNATゲートウェイを使用して構成されている必要があります:
  • Oracle Cloud InfrastructureドキュメントNAT Gatewayの作成の手順に従って、Autonomous AI Databaseリソースが存在しているVirtual Cloud Network (VCN)にNAT Gatewayを作成します。
  • After creating the NAT gateway, add a route rule and an egress security rule to each subnet (in the VCN) where Autonomous AI Database resources reside so that these resources can use the gateway to obtain a public key from your Azure AD instance:
    1. サブネットの「サブネットの詳細」ページに移動します。
    2. Subnet Information」タブで、サブネットの「Route Table」の名前をクリックして、その「Route Table Details」ページを表示します。
    3. 既存のルート・ルールの表で、次の特性を持つルールがすでに存在します:
      • 宛先: 0.0.0.0/0
      • ターゲット・タイプ: NAT Gateway
      • ターゲット: VCN内に作成したNATゲートウェイの名前

      このようなルールが存在しない場合は、「ルート・ルールの追加」をクリックし、これらの特性を持つルート・ルールを追加します。

    4. サブネットの「サブネットの詳細」ページに戻ります。
    5. サブネットの「セキュリティ・リスト」表で、サブネットのセキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。
    6. サイド・メニューの「リソース」で、「エグレス・ルール」をクリックします。
    7. 既存のエグレス・ルールの表で、次の特性を持つルールがすでに存在します:
      • 宛先タイプ: CIDR
      • 宛先: 0.0.0.0/0
      • IPプロトコル: TCP
      • ソース・ポート範囲: 443
      • 宛先ポート範囲: すべて

      そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。

環境のHTTPプロキシ設定では、データベースがクラウド・サービス・プロバイダにアクセスできるようにする必要があります。

これらの設定は、Exadata Cloud@Customerインフラストラクチャの作成時にフリート管理者が定義します(コンソールを使用したExadata Database Service on Cloud@Customerのプロビジョニングを参照)。

ノート:

HTTPプロキシを含むネットワーク構成は、Exadataインフラストラクチャが「アクティブ化が必要」状態になるまで編集できます。いったんアクティブ化すると、それらの設定は編集できません。

すでにプロビジョニングされているExadataインフラストラクチャのHTTPプロキシを設定するには、My Oracle Supportでサービス・リクエスト(SR)が必要です。詳細は、My Oracle Supportでのサービス・リクエストの作成を参照してください。

DBMS_CLOUD_AIサブプログラムの概要

この項では、Autonomous AI Databaseで提供されるDBMS_CLOUD_AIサブプログラムについて説明します。

サブプログラム 説明

CREATE_PROFILEプロシージャ

このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。

DISABLE_PROFILEプロシージャ

この手順では、現在のデータベース内のAIプロファイルを無効にします。

DROP_PROFILEプロシージャ

この手順では、既存のAIプロファイルを削除します。

ENABLE_PROFILEプロシージャ

この手順により、AIプロファイルを現在のデータベースで使用できるようになります。

GENERATEファンクション

このファンクションは、変換にAIを使用してSQL文を生成します。

SET_ATTRIBUTEプロシージャ

このプロシージャは、AIプロファイル属性を設定します。

SET_PROFILEプロシージャ

このプロシージャは、現在のデータベースのAIプロファイルを設定します。

CREATE_PROFILEプロシージャ

このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。

構文

DBMS_CLOUD_AI.CREATE_PROFILE
   profile_name        IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

Parameters

パラメータ 説明

profile_name

AIプロファイルの名前。プロファイル名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。プロファイル名の最大長は125文字です。

これは必須パラメータです。

attributes

JSON形式のプロファイル属性。詳細は、AIのプロファイル属性を参照してください。

デフォルト値はNULLです。

status

プロファイルのステータス。

デフォルトでは、有効になっています。

description

AIプロファイルの説明。

デフォルト値はNULLです。

BEGIN
     DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name    => 'OpenAI,
          attributes      => JSON_OBJECT('provider' value 'openai',
                                         'credential_name' value 'openai_cred'),
          description     => 'AI profile to use OpenAI for SQL translation'
     );
END;
/

DROP_PROFILEプロシージャ

この手順では、既存のAIプロファイルを削除します。プロファイルが存在しない場合、プロシージャはエラーをスローします。

構文

DBMS_CLOUD_AI.DROP_PROFILE(
       profile_name        IN   VARCHAR2,
       force               IN   BOOLEAN DEFAULT FALSE
 );

Parameters

パラメータ 説明

profile_name

AIプロファイルの名前

force

TRUEの場合、AIプロファイルが存在しない場合、プロシージャはエラーを無視します。

デフォルト値はFALSEです。

BEGIN
     DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/

使用上のノート

forceを使用してプロファイルを削除し、AIプロファイルが存在しない場合はエラーを無視します。

ENABLE_PROFILEプロシージャ

この手順では、ユーザーが指定したAIプロファイルを有効にします。このプロシージャは、AIプロファイルのステータスをENABLEDに変更します。

構文

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Parameters

パラメータ 説明

profile_name

有効にするAIプロファイルの名前

このパラメータは必須です。

AIプロファイルを有効にする例

BEGIN
     DBMS_CLOUD_AI.ENABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

DISABLE_PROFILEプロシージャ

この手順では、現在のデータベースのAIプロファイルを無効にします。この手順では、AIプロファイルのステータスが DISABLEDに変更されます。

構文

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Parameters

パラメータ 説明

profile_name

AIプロファイルの名前。

このパラメータは必須です。

BEGIN
     DBMS_CLOUD_AI.DISABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

SET_ATTRIBUTEプロシージャ

この手順では、AIプロファイル属性を設定できます。

構文

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   CLOB
);

Parameters

AIプロファイルの属性を設定または変更できるのは所有者だけです。サポートされている属性のリストは、プロファイル属性を参照してください。

パラメータ 説明

profile_name

属性を設定するAIプロファイルの名前。

このパラメータは必須です。

attribute_name

AIプロファイル属性の名前

このパラメータは必須です。

attribute_value

プロファイル属性の値。

デフォルト値はNULLです。

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OPENAI',
   attribute_name  => 'credential_name',
   attribute_value => 'OPENAI_CRED_NEW'
 );
END;
/

SET_PROFILEプロシージャ

この手順では、現在のセッションのAIプロファイルを設定します。

データベース・セッションにAIプロファイルを設定した後、接頭辞SELECT AIを持つSQL文は自然言語プロンプトとみなされます。AI接頭辞で指定されたアクションに応じて、AIを使用してレスポンスが生成されます。AI接頭辞を使用するには、AIキーワードを使用したプロンプトの入力を参照してください。オプションで、プロファイル属性をオーバーライドしたり、属性をJSON形式で指定して属性を変更できます。属性の設定については、SET_ATTRIBUTEプロシージャを参照してください。

AIプロファイルを現在のセッションに設定できるのは、AIプロファイルの所有者がセッションユーザーである場合だけです。

特定のデータベース・ユーザーのすべてのセッションまたはデータベース内のすべてのユーザー・セッションに対してAIプロファイルを設定するには、特定のユーザーまたはデータベース全体のAFTER LOGONイベントに対してデータベース・イベント・トリガーを使用することを検討してください。詳細は、『Oracle Database 19cデータベースPL/SQL言語リファレンス』または『Oracle Database 26aiデータベースPL/SQL言語リファレンス』CREATE TRIGGER文を参照してください。

構文

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Parameters

パラメータ 説明

profile_name

現在のセッションのAIプロファイルの名前。

このパラメータは必須です。


   BEGIN
        DBMS_CLOUD_AI.SET_PROFILE(
          profile_name    => 'OPENAI'
        );
   END;
   /

GENERATEファンクション

この関数は、ステートレスな方法でAI翻訳を提供します。既存のAIプロファイルでは、この関数を使用して、showsqlnarratechatなどのサポートされているアクションを実行できます。デフォルトのアクションはshowsqlです。

この機能を使用すると、プロファイル属性の一部またはすべてをオーバーライドすることもできます。

構文

DBMS_CLOUD_AI.GENERATE(
    prompt          IN  CLOB,
    profile_name    IN  VARCHAR2 DEFAULT NULL,
    action          IN  VARCHAR2 DEFAULT NULL,
    attributes      IN  CLOB     DEFAULT NULL
) RETURN CLOB;

Parameters

パラメータ 説明

prompt

AIを使用して翻訳する自然言語プロンプト。

プロンプトには、接頭辞としてSELECT AI <action>を含めることができます。アクションは、アクション・パラメータとして個別に指定することもできます。プロンプトで指定したactionは、actionパラメータをオーバーライドします。デフォルトのアクションはshowsqlです。

このパラメータは必須です。

profile_name

AIプロファイルの名前。AIプロファイルが DBMS_CLOUD_AI.SET_PROFILEを使用してセッションにすでに設定されている場合に、このパラメータはオプションです。

デフォルト値はNULLです。

次の条件が適用されます。
  • 現在のセッションでプロファイルが設定されている場合、ユーザーはDBMS_CLOUD_AI.GENERATE関数のprofile_name引数を省略できます。
  • profile_name引数がDBMS_CLOUD_AI.GENERATE関数で指定されている場合、DBMS_CLOUD_AI.SET_PROFILEプロシージャを使用してセッションで設定された値をオーバーライドします。
  • DBMS_CLOUD_AI.SET_PROFILEプロシージャを使用してセッションにプロファイルが設定されていない場合は、DBMS_CLOUD_AI.GENERATEファンクションでprofile_name引数を指定する必要があります。

ノート:

データベース・アクションの場合、DBMS_CLOUD_AI.GENERATEprofile_name引数を指定するか、PL/SQLスクリプトとしてDBMS_CLOUD_AI.SET_PROFILEおよびDBMS_CLOUD_AI.GENERATEの2つのステップを実行できます。
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
詳細は、コード・エディタでのSQL文の実行を参照してください。
action

AIを使用して自然プロンプトを翻訳するためのアクション。サポートされているアクションには、showsql (デフォルト)、narrateおよびchatがあります。アクションの説明は、「AIキーワードを使用したプロンプトの入力」に含まれています。

ノート:

このファンクションは、runsqlアクションをサポートしていません。runsqlアクションを指定すると、次のエラーが返されます。
ORA-20000: runsql action is not supported by generate function ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line xxxx 
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 2696 ORA-06512: at line x
attributes JSON形式で属性を指定して、特定のAIプロファイル属性をオーバーライドします。詳細は、「プロファイル属性」を参照してください。

次の例は、DBMS_CLOUD_AI.GENERATE関数で使用できるshowsqlnarrateおよびchatアクションを示しています。

showsqlアクションの例を次に示します。

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

narrateアクションの例を次に示します。

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;

chatアクションの例を次に示します。

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

GENERATE_SYNTHETIC_DATAファンクション

この手順を使用して、単一の表、複数の表またはフル・スキーマの合成データを生成します。

次に、単一表の合成データを生成する構文を示します。

構文

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_name         IN  DBMS_ID,
  owner_name          IN  DBMS_ID,
  record_count        IN  NUMBER,
  user_prompt         IN  CLOB DEFAULT NULL,
  params              IN  CLOB DEFAULT NULL
);

次に、複数の表の合成データを生成する構文を示します。

DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
  profile_name        IN  VARCHAR2,
  object_list         IN  CLOB,
  params              IN  CLOB DEFAULT NULL
);

表データまたはベクトル検索ドキュメントをLLMに送信しない場合、管理者権限を持つユーザーは、特定のデータベースのすべてのユーザーに対してそのようなアクセスを無効にできます。これにより、narrateアクションが無効になります。

Parameters

パラメータ 必須 説明

profile_name

必要なLLMサービス情報を含むAIプロファイル。これは、CREATE_PROFILEプロシージャで作成できます。

object_name

合成データを移入する表名を指定します。
  • 表オブジェクトを使用するユーザーには、表オブジェクトに対するSELECTおよびINSERT権限が必要です。
  • 表が空であるか、レコードが含まれています。
owner_name ×

参照オブジェクトを所有するデータベース・ユーザーを指定します。特定の所有者を指定しない場合、プロシージャは、その所有者を実行しているユーザーのスキーマをデフォルトで使用します。

record_count ×

合成的に生成されるレコードの数。

user_prompt

× ユーザーが合成データの生成について言及できる追加情報。たとえば、release_date列を含むMOVIEという表のレコードを生成するには、user_promptは次のようになります。

映画のリリース日は2019年にする必要があります

params

×

APIの動作を変更するために、JSONオブジェクト文字列形式で提供されるオプション属性。オプション・パラメータを参照してください。

object_list

このパラメータは、複数の表に合成データを生成する場合に使用します。このパラメータは、表オブジェクト情報とその引数を取り、単一の表で提供されている同じ引数を含みます。object_listパラメータを参照してください。

オプションのパラメータ

パラメータ 値データ型 Value 説明

sample_rows

数字

0 <= sample_rows <= 100

データ生成でLLMをガイドするサンプルとして使用する表の行数を指定します。

値0は、サンプル行が使用されないことを意味します。デフォルト値は0です。

table_statistics

ブール

  • True
  • False

表統計情報の使用を有効化または無効化します。

デフォルト値はFalseです。

priority

文字列

有効な値:

  • HIGH
  • MEDIUM
  • LOW

合成データを生成するためにLLMに送信されるパラレル・リクエストの数を定義する優先度値を割り当てます。優先度が高いタスクは、より多くのデータベース・リソースを消費し、より迅速に完了します。

デフォルト値はHIGHです

  • HIGH: データベースのECPU数(データベースがOCPUを使用する場合はOCPU数)に基づいて、パラレルLLMリクエストの数を指定します。

  • MEDIUM: 中規模サービスの同時実行性の制限に従って、同時プロセスの数を設定します。デフォルトは4です。

  • LOW: パラレル処理なしでパイプライン・ジョブをシリアル・オーダーで実行します。

合成データ生成に使用される同時パラレル・プロセスの最大数は64に制限されます。

comments

ブール
  • True
  • False

データ生成をガイドするLLMへのコメントの送信を有効または無効にします。

デフォルト値はFalseです。

object_listパラメータ

パラメータ 値データ型 必須 説明

owner

文字列

参照するオブジェクトを所有するデータベース・ユーザーを指定します。特定の所有者を指定しない場合、プロシージャは、その所有者を実行するユーザーのスキーマをデフォルトで使用します。

name

文字列

×

合成データを移入する表名を指定します。表オブジェクトに対するSELECTおよびINSERT権限は、it.The表を使用するユーザーが空であるか、その表にレコードが含まれている場合に必要です。

record_count

数字

×

合成的に生成されるレコード数。0より大きい数値を指定してください。

record_countまたはrecord_count_percentageを指定します。

record_count_percentage

数字

×

合成的に生成されるレコード数の割合。0より大きい数値を指定してください。

統計を含む表のメタデータが保持されるメタデータ・クローン・データベースの場合、record_count_percentageパラメータがサポートされます。

record_countまたはrecord_count_percentageを指定します。

record_count_percentageパラメータを使用する場合、表の最終レコード数は次のように計算されます。
Original_Num_Rows *
      record_count_percentage

user_prompt

文字列 × 「パラメータ」user_promptと同じです。user_promptは、特定の表オブジェクトに関連付けられます。

次の例は、1つの表および複数の表の合成データを生成するためのDBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA関数を示しています。完全な例とその他の例については、を参照してください。

BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_name  => 'Director',
        owner_name   => 'ADB_USER',
        record_count => 5
    );
END;
/
PL/SQL procedure successfully completed.
BEGIN
    DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
        profile_name => 'GENAI',
        object_list => '[{"owner": "ADB_USER", "name": "Director","record_count":5},
                         {"owner": "ADB_USER", "name": "Movie_Actor","record_count":5},
                         {"owner": "ADB_USER", "name": "Actor","record_count":10},
                         {"owner": "ADB_USER", "name": "Movie","record_count":5,"user_prompt":"all movies are released in 2009"}]'
    );
END;
/
PL/SQL procedure successfully completed.

ENABLE_DATA_ACCESSプロシージャ

この手順では、該当する Select AI機能(デフォルトの動作)のデータをLLMに送信できます。このプロシージャを実行できるのは管理者のみです。

この手順では、次の Select AI機能のデータアクセスを制御します。

  • narrateアクション
  • 検索拡張生成(RAG)
  • 合成データ生成

構文

DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();

Parameters

この手順には、パラメータは必要ありません。

データアクセスを有効にする例

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

DISABLE_DATA_ACCESSプロシージャ

この手順では、該当する Select AI機能のLLMへのデータの送信を無効にします。このプロシージャを実行できるのは管理者のみです。

この手順では、次の Select AI機能が制限されます。

  • narrateアクション
  • 検索拡張生成(RAG)
  • 合成データ生成

構文

DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();

Parameters

この手順には、パラメータは必要ありません。

データアクセスを無効にする例

BEGIN
  DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
END;
/

CREATE_VECTOR_INDEXプロシージャ

このプロシージャは、指定されたベクトル・データベースにベクトル索引を作成し、非同期スケジューラ・ジョブを使用してオブジェクト・ストアのデータを移入します。

構文

PROCEDURE CREATE_VECTOR_INDEX(                                              
   index_name          IN  VARCHAR2,                                        
   attributes          IN  CLOB      DEFAULT NULL,                          
   status              IN  VARCHAR2  DEFAULT NULL,                          
   description         IN  CLOB      DEFAULT NULL                           
); 

Parameters

パラメータ 説明

index_name

ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。

これは必須パラメータです。

attributes

JSONのベクトル索引のカスタム属性。構成可能なパラメータのリストを表示するには、を参照してください。

デフォルト値はNULLです。

status
ベクトル索引のステータス。可能な値は次のとおりです:
  • Enabled
  • Disabled

デフォルトの値は「無効」です。

description

ベクトル索引の説明。

デフォルト値はNULLです。

次の例は、ベクトル索引を作成し、属性をJSONパラメータとして構成する方法を示しています。

BEGIN                                                                
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                 
            index_name    => 'MY_INDEX'                                   
            attributes    => JSON_OBJECT(                                 
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',              
                       'profile_name'      value 'OCIGENAI',         
                       'location'          value                          
                         'https://objectstorage.us-phoenix-1.' ||         
                         'oraclecloud.com/n/mynamespace/b/mybucket',      
                       'object_store_credential_name'   value 'OS_CRED',              
                       'chunk_size'        value 2048,                    
                       'chunk_overlap'     value 256,                     
                       'refresh_rate'      value 720)                     
       );                                                                 
END;                                                                 
/

DROP_VECTOR_INDEXプロシージャ

このプロシージャは、ベクトル・ストア索引を削除します。通常、ベクトル・ストア索引オブジェクトを削除し、ベクトル・ストアを削除します。FALSEに設定すると、引数include_dataによって、ベクトル・ストアを保持しながらベクトル・ストア索引オブジェクトのみが削除されます。

構文

PROCEDURE DROP_VECTOR_INDEX(                                                
   index_name          IN  VARCHAR2,           
   include_data        IN  BOOLEAN DEFAULT TRUE,                            
   force               IN  BOOLEAN DEFAULT FALSE                           
);

Parameters

パラメータ 説明

index_name

ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。

これは必須パラメータです。

include_data

顧客のベクトル・ストアとベクトル索引の両方をベクトル索引オブジェクトとともに削除するかどうかを示します。

可能な値:

  • TRUE
  • FALSE

デフォルト値はTRUEです。

force

ベクトル索引が存在しない場合に発生するエラーを無視するかどうかを示します。

可能な値:

  • TRUE
  • FALSE

TRUEに設定すると、ベクトル索引が存在しない場合、このパラメータは発生するエラーをすべてバイパスします。

デフォルト値はFALSEです。

BEGIN
DBMS_CLOUD_AI.DROP_VECTOR_INDEX(
        index_name     => 'MY_INDEX',
        include_data   => FALSE,
        force          => TRUE
     );                                                                 
END;                                                                 
/

DISABLE_VECTOR_INDEXプロシージャ

このプロシージャは、現在のデータベースのベクトル索引オブジェクトを無効にします。無効にすると、AIプロファイルはベクトル索引を使用できず、新しいデータがオブジェクト・ストアに追加されても、索引に基づく索引付け、検索または問合せが実行されないため、ベクトル・ストアにデータがロードされません。

構文

DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Parameters

パラメータ 説明

index_name

ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。

これは必須パラメータです。

ベクトル索引の名前は、ベクトル索引を無効にできます。

BEGIN                                                                
   DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(index_name => 'MY_INDEX');       
END;                                                                 
/

ENABLE_VECTOR_INDEXプロシージャ

このプロシージャは、以前に無効にしたベクトル索引オブジェクトを有効またはアクティブ化します。一般に、ベクトル索引を作成すると、デフォルトで、AIプロファイルがベクトル索引を使用して索引付けおよび検索を実行できるように有効化されます。

有効にすると、ベクトル索引によって、AIプロファイルは、ユーザー指定のリフレッシュ率でオブジェクト・ストアからベクトル・ストアに新規データをロードするために使用できます。refresh_rateパラメータは、JSONオブジェクト・リストから指定できます。JSON属性を構成するには、を参照してください。

構文

DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

Parameters

パラメータ 説明

index_name

ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。

これは必須パラメータです。

ベクトル索引は、次のようにベクトル索引名を指定することで有効化またはアクティブ化できます。

BEGIN                                                                
   DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(index_name => 'MY_INDEX');       
END;                                                                 
/

UPDATE_VECTOR_INDEXプロシージャ

このプロシージャは、ベクトル索引属性の指定された値で既存のベクトル・ストア索引を更新します。
次のものを受け入れるために、オーバーロードされています。
  • 様々なタイプの属性値。
  • ベクトル索引属性はJSONドキュメントとして、既存のベクトル・ストア索引の1つ以上の属性を指定された属性名と値のペアで更新します。

構文

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
   index_name         IN  VARCHAR2,
   attributes         IN  CLOB
);

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
     index_name         IN  VARCHAR2,
     attribute_name     IN  VARCHAR2,
     attribute_value    IN  VARCHAR2
);

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                                 
     index_name         IN  VARCHAR2,                                         
     attribute_name     IN  VARCHAR2,                                         
     attribute_value    IN  CLOB     DEFAULT NULL                           
  );

Parameters

パラメータ 説明

index_name

ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。

これは必須パラメータです。

attributes

ベクトル索引属性をJSON形式で指定します。

これは必須パラメータです。

attribute_name

CREATE_VECTOR_INDEXプロシージャでJSONパラメータとして指定されたカスタム属性の名前。

次の属性は変更できません。

  • location
  • vector_table_name
  • chunk_size
  • chunk_overlap
  • vector_distance_metric
  • vector_dimension

これは必須パラメータです。

attribute_value

カスタムattribute_nameのユーザー指定値。値は、CLOBNUMBERまたはVARCHAR2タイプです。

デフォルト値はNULLです。

ノート:

attributesパラメータを使用して、JSON形式でattribute_nameと値のペアを指定するか、attribute_nameattribute_valueのパラメータを一緒に指定します。

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'object_storage_credential_name',                
      attribute_value  => 'NEW_CRED'                           
   );                                                                 
END;                                                                 
/

次の例では、NUMBER型をattribute_valueとして受け入れます。

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'match_limit',                
      attribute_value  => 10                           
   );                                                                 
END;                                                                 
/

次の例では、VARCHAR2型をattribute_valueとして受け入れます。

BEGIN                                                                
   DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(                                 
      index_name       => 'MY_INDEX',                                   
      attribute_name   => 'profile_name',                
      attribute_value  => 'AI_PROF2'                           
   );                                                                 
END;                                                                 
/

次の例では、JSON形式のattributesを受け入れます。

BEGIN
  DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
    index_name => 'MY_VECTOR_INDEX', 
    attributes => '{"match_limit": 10, 
                    "refresh_rate": 30}'
  );
END;
/

プロファイル属性

AIプロファイルの属性は、AIプロファイルの動作を管理および構成するのに役立ちます。一部の属性はオプションであり、デフォルトの値があります。

属性

属性名 説明

azure_deployment_name

Azure OpenAI Serviceデプロイ済モデルの名前。英数字、アンダースコア(_)およびハイフン(-)のみを使用できます。名前の最後には、アンダースコア(_)またはハイフン(-)は使用できません。azure_deployment_nameの取得方法については、Azure OpenAIサービス・リソースの作成およびデプロイを参照してください。

azure_resource_name

Azure OpenAIサービス・リソースの名前。リソース名に使用できるのは英数字とハイフンのみで、ハイフンで開始または終了することはできません。azure_resource_nameの取得方法については、Azure OpenAIサービス・リソースの作成およびデプロイを参照してください。

comments

AIを使用した自然言語プロンプトの翻訳に使用されるメタデータに列コメントを含めます。BOOLEANデータ型がサポートされます。VARCHAR2データ型の文字列の有効な値は、TRUEまたはFALSEです。

ノート:

attribute_valueパラメータがCLOBデータ型であるため、単一の属性を設定する場合、DBMS_CLOUD_AI.SET_ATTRIBUTEプロシージャではブール値は適用されません。

conversation

プロファイルに対して会話履歴が有効かどうかを示すVARCHAR2属性。OpenAIおよびAzure OpenAIサービスのみが会話履歴をサポートします。有効な値はtrueまたはfalseです。デフォルト値はfalseです。値は大文字と小文字が区別されません。

credential_name

AIプロバイダAPIにアクセスするための資格証明の名前。

Bearerトークンを使用する資格証明を作成するには、ユーザー名としてプロバイダ名を使用し、パスワードとしてBearerトークンを使用します。

この属性は必須です。CREATE_CREDENTIALプロシージャを参照してください。

embedding_model

AIプロファイルで定義された埋込みモデル。埋込みモデルでサポートされるAIプロバイダをデフォルト値とともに示します。

  • OCI GenAI: cohere.embed-english-v3.0
  • OpenAI: text-embedding-ada-002
  • Azure OpenAI: text-embedding-ada-002
  • コア: embed-english-v2.0
  • Google: text-embedding-004

ノート:

embedding_modelパラメータは、AnthropicおよびHugging Faceには適用できません。

max_tokens

世代ごとに予測するトークンの数を示します。デフォルトは1024です。詳細は、トークンとトークン化子を参照してください。

model

応答の生成に使用されるAIモデルの名前。

サポートされているモデル:

  • OpenAI: gpt-4、gpt-4-0613、gpt-4-32k、gpt-4-32k-0613、gpt-3.5-turbo (デフォルト)、gpt-3.5-turbo-0613、gpt-3.5-turbo-16k、gpt-3.5-turbo-16k-0613
  • Cohere: コマンド(デフォルト)、コマンド- ナイトリー(実験的)、コマンド- ライトおよびコマンド- ライト- ナイトリー(実験的) より小さい「軽い」モデルは高速で、大きいモデルはパフォーマンスが向上します。カスタム・モデルには、フルIDを指定することもできます。
  • OCI生成AI: OCI生成AIの場合: cohere.command (デフォルト)。OCI生成AIの事前トレーニング済モデルは、すべてSelect AIでサポートされています。カスタム・モデルは、完全なOCIDsとともに提供することもできます。

    OCI生成AIでサポートされているモデルの詳細は、生成AIでの事前トレーニングされた基盤モデルを参照してください。

ノート:

Azure OpenAIサービス・ポータルでデプロイメントを作成するときにモデルが決定されるため、このパラメータはAzureには使用されません。

object_list

SQLへの自然言語変換の対象となる所有者およびオブジェクト名を指定するJSONオブジェクトの配列。特定のユーザーのすべてのオブジェクトを含めるには、"name"を省略し、JSONオブジェクトで"owner"キーのみを指定します。

自然言語からSQLへの変換では、オブジェクト名、オブジェクト所有者、オブジェクト列およびコメントがHTTPSリクエストを使用してAIプロバイダに送信されます。オブジェクト・リストには、機密オブジェクト名、列名またはコメントを含むオブジェクトを指定しないでください。

AIプロバイダは、翻訳リクエストで許可されるメタデータのサイズに制限がある場合があります。アプリケーション・ユーザーによる自然言語プロンプトに適したオブジェクトのリストを制限することを検討してください。

書式:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

oci_compartment_id

OCI生成AIサービスをコールするときにアクセスを許可されるコンパートメントのOCIDを指定します。コンパートメントIDには、英数字、ハイフンおよびドットを含めることができます。

デフォルトは、Autonomous AI DatabaseのコンパートメントIDです。

oci_endpoint_id

この属性は、Oracle専用AIホスティング・クラスタのエンドポイントOCIDを示します。エンドポイントIDには、英数字、ハイフンおよびドットを含めることができます。エンドポイントOCIDを検索するには、生成AIでのエンドポイントの詳細の取得を参照してください。

Oracle専用AIクラスタを使用する場合は、ホスティング・クラスタのエンドポイントOCIDを指定する必要があります。

デフォルトでは、エンドポイントIDは空で、モデルは共有インフラストラクチャ上でオンデマンドです。

oci_runtimetype

この属性は、指定されたモデルのランタイム・タイプを示します。この属性は、model属性が指定されていて、OCI生成モデルに適用可能な場合に必要です。

許可される値はすべて、OCI生成AI runtimeTypeにあります。LlmInferenceRequestリファレンスを参照してください。

サポートされている値は次のとおりです。
  • COHERE
  • LLAMA

provider

AIプロファイルのAIプロバイダ。

サポートされるプロバイダ:

  • オープナ
  • くっ付く
  • アザー
  • oci
  • Google
  • 人類学
  • ハギングフェイス

この属性は必須です。

region

この属性は、使用する生成AIクラスタの場所を示します。リージョンには、英数字とハイフン文字を含めることができます。

ノート:

Oracle Generative AIクラスタは、シカゴ、フランクフルトおよびロンドン・リージョンで使用できます。生成AIでの事前トレーニング済基盤モデルを参照してください。
デフォルトのリージョンはus-chicago-1です。

stop_tokens

生成されたテキストは、最も早い停止シーケンスの先頭に終了します。シーケンスはテキストに組み込まれます。属性値は、JSON形式の文字列値の有効な配列である必要があります。stop_tokensは、入力としてJSON配列を取ります。停止トークンまたは停止シーケンスについてさらに学習するには、OpenAIまたはCohereのドキュメントを参照してください。

temperature

「テキストの生成」モデルからのサンプリングにはランダム性が組み込まれているため、「生成」をクリックするたびに同じプロンプトで異なる出力が生成される場合があります。温度は、乱数を調整するために使用される負でない浮動小数点数です。温度が低いと、ランダムな世代が少なくなります。詳細は、Temperatureを参照してください。このパラメータは、サポートされているすべてのサービス・プロバイダに適用されます。

次の例では、プロバイダとしてCohereを使用し、カスタム・プロファイル属性を表示します。
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'COHERE',
     attributes =>
      '{"provider": "cohere",
        "credential_name": "COHERE_CRED",
        "object_list": [{"owner": "ADB_USER"}],
        "max_tokens":512,
        "stop_tokens": [";"],
        "model": "command-nightly",
        "temperature": 0.5,
        "comments": true
       }');
END;
/

次の例は、OCI生成AIを使用したカスタム・プロファイル属性を示しています。

BEGIN                                                                        
  DBMS_CLOUD_AI.CREATE_PROFILE(                                              
      profile_name => 'GENAI',                                                             
      attributes => '{"provider": "oci",                                                                   
        "credential_name": "GENAI_CRED",                                     
        "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
        "oci_compartment_id": "ocid1.compartment.oc1...",
	"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
	"region": "us-chicago-1",
	"model": "cohere.command-light",
	"oci_runtimetype": "COHERE"            
       }');                                                                  
END;                                                                         
/