DBMS_CLOUD_AIパッケージ

DBMS_CLOUD_AIパッケージを使用すると、自然言語プロンプトのSQL文への変換が容易になり、構成されます。

DBMS_CLOUD_AIサブプログラムの概要

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

サブプログラム 説明

CREATE_PROFILEプロシージャ

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

DISABLE_PROFILEプロシージャ

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

DROP_PROFILEプロシージャ

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

ENABLE_PROFILEプロシージャ

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

GENERATE関数

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

GENERATE_SYNTHETIC_DATAファンクション

このファンクションは、合成データを生成します。

GET_PROFILEファンクション

この関数は、現在のセッションで使用されているプロファイル名を返します。

GET_PROFILEプロシージャ

このプロシージャは、現在のセッションのプロファイル名とプロファイルの所有者を返します。

SET_ATTRIBUTEプロシージャ

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

SET_PROFILEプロシージャ

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

CREATE_VECTOR_INDEXプロシージャ

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

DROP_VECTOR_INDEXプロシージャ

このプロシージャは、ベクトル・ストア索引を削除します。通常、ベクトル・ストア索引オブジェクトを削除し、ベクトル・データベースを削除します。

DISABLE_VECTOR_INDEXプロシージャ

このプロシージャは、現在のデータベース内のベクトル索引オブジェクトを無効にします。無効にすると、AIプロファイルはベクトルインデックスを使用できず、データはベクトルストアにロードされません。

ENABLE_VECTOR_INDEXプロシージャ

このプロシージャは、以前に無効にしたベクトル索引オブジェクトを有効またはアクティブ化します。

UPDATE_VECTOR_INDEXプロシージャ

このプロシージャは、ベクトル索引属性に指定された値で既存のベクトル・ストア索引を更新します。

ベクトル・インデックス属性

構成可能なベクトル索引プロファイル属性を提供します。

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
);

パラメータ

パラメータ 説明

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'),
		status     => 'enabled',							 
          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
 );

パラメータ

パラメータ 説明

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
 );

パラメータ

パラメータ 説明

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
);

パラメータ

パラメータ 説明

profile_name

AIプロファイルの名前。

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

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

GET_PROFILEファンクション

この関数は、現在のセッションで設定されたAIプロファイル名を返します。

構文

DBMS_CLOUD_AI.GET_PROFILE(
    profile_name      IN  VARCHAR2
);

パラメータ

パラメータ 説明

profile_name

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

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

この例では、現在のセッションでプロファイルの名前を表示する方法を示します。


   SELECT DBMS_CLOUD_AI.GET_PROFILE
   from DUAL;

GET_PROFILEプロシージャ

このプロシージャは、現在のセッションで設定されたAIプロファイル名と所有者を返します。

構文

DBMS_CLOUD_AI.GET_PROFILE(                                                      
      profile_name  OUT  VARCHAR2,                                          
      profile_owner OUT  VARCHAR2                                           
);

パラメータ

パラメータ 説明

profile_name

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

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

profile_owner 現在のセッションのAIプロファイルの所有者を識別します。

この例では、現在のセッションでプロファイルの名前と所有者を表示する方法を示します。

DECLARE                                                              
       l_profile_name  DBMS_ID;                                           
       l_profile_owner DBMS_ID;                                           
     BEGIN                                                                
       DBMS_CLOUD_AI.GET_PROFILE(profile_name => l_profile_name,          
                                 profile_owner => l_profile_owner);       
     END;

SET_ATTRIBUTEプロシージャ

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

構文

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

パラメータ

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接頭辞を使用するには、Select AIの使用例を参照してください。オプションで、プロファイル属性をオーバーライドしたり、属性をJSON形式で指定して属性を変更できます。属性の設定については、SET_ATTRIBUTEプロシージャを参照してください。

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

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

構文

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

パラメータ

パラメータ 説明

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;

パラメータ

パラメータ 説明

prompt

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

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

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

profile_name

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

デフォルト値はNULLです。

次の条件が適用されます。
  • 現在のセッションでプロファイルが設定されている場合、ユーザーはDBMS_CLOUD_AI.GENERATE関数のprofile_name引数を省略できます。
  • DBMS_CLOUD_AI.GENERATE関数でprofile_name引数が指定されている場合、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ファンクション

単一の表、複数の表または完全なスキーマの合成データを生成するには、この手順を使用します。

1つの表の合成データを生成する構文を次に示します。

構文

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
);

パラメータ

パラメータ 必須 説明

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パラメータを参照してください。

オプションのパラメータ

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

sample_rows

数値

0 <= sample_rows <= 100

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

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

table_statistics

Boolean

  • True
  • False

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

デフォルト値はFalseです。

priority

文字列

有効な値:

  • HIGH
  • MEDIUM
  • LOW

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

デフォルト値はHIGHです

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

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

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

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

comments

Boolean
  • True
  • False

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

デフォルト値はFalseです。

object_listパラメータ

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

owner

文字列

はい

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

name

文字列

いいえ

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

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.

プロファイル属性

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

属性

属性名 説明

azure_deployment_name

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

azure_embedding_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トークンを使用します。

Vaultシークレット資格証明もサポートされています。

プリンシパル認証(Azureサービス・プリンシパルなど)もサポートされています。構成方法の詳細は、Azureサービス・プリンシパルを使用したAzureリソースへのアクセスを参照してください。

この属性は必須です。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-4o、gpt-4o-mini、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: サポートされているチャット・モデル: meta.llama-3-70b-instruct (デフォルト)、cohere.command-r-16k、cohere.command-r-plus。チャット・モデルは、runsqlshowsqlexplainsqlnarratechatなど、すべてのSelect AIアクションでサポートされています。

    サポートされている生成モデルは、cohere.command、cohere.command-lightおよびmeta.llama-2-70b-chatです。

    Select AIは、OCI生成AIの事前トレーニング済モデルをサポートしています。カスタム・モデルは、完全なOCIDsとともに提供することもできます。OCIDまたはoci_endpoint_idを指定する場合は、OCIチャットまたは生成モデルに応じてoci_runtimetypeまたはoci_apiformatのいずれかを指定してください。

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

  • Google: gemini-1.5-flash (デフォルト)、gemini-1.5-pro、gemini-1.0-pro
  • 異方性: claude-3-5-sonnet-20240620 (デフォルト)、claude-3-opus-20240229、claude-3-sonnet-20240229、claude-3-haiku-20240307
  • Hugging Face: Mixtral-8x7B-Instruct-v0.1 (デフォルト)、Meta-Llama-3-70B-Instruct、Qwen1.5-1.8Bおよびその他のチャット・モデル。
ノート

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

object_list

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

次のタイプのオブジェクトを使用できます。

  • ビュー
  • マテリアライズド・ビュー
  • グローバル一時表
  • 外部表
  • 前述のオブジェクト型のシノニム

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

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

フォーマット:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

OCIデータ・カタログまたはAWS Glueの同期を使用して作成された外部表は、オブジェクト・リストも使用できます。これは、中央のデータ・カタログでメタデータを管理し、AIを使用して自然言語プロンプトを翻訳するためにメタデータを直接使用するのに役立ちます。

oci_apiformat

APIがデータの送受信を期待する形式を指定します。この属性を使用して、テキスト応答を生成します。この属性は、専用AIクラスタのOCI生成AIチャット・モデルに適用されます。model属性でモデルOCIDを指定するか、oci_endpoint_id属性でエンドポイントを指定するときに、この属性を指定します。

サポートされている値:
  • COHERE
  • GENERIC
ノート

この属性は、LLAMA3シリーズなどの新しいOCI生成AIチャット・モデルに使用します。

oci_compartment_id

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

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

oci_endpoint_id

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

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

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

oci_runtimetype

この属性は、指定されたモデルのランタイム・タイプを示します。この属性は、専用AIクラスタのOCIテキスト生成モデルに適用されます。model属性でモデルOCIDを指定するか、oci_endpoint_id属性でエンドポイントを指定するときに、この属性を指定します。

許可される値はすべて、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

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

vector_index_name

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

次の例では、プロバイダとして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;                                                                         
/ 

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                           
); 

パラメータ

パラメータ 説明

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', 
                       'vector_db_credential_name' value 'VS_CRED',              
                       '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                           
);

パラメータ

パラメータ 説明

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                                            
);

パラメータ

パラメータ 説明

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                                            
);

パラメータ

パラメータ 説明

index_name

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

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

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

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

UPDATE_VECTOR_INDEXプロシージャ

このプロシージャは、ベクトル索引属性に指定された値で既存のベクトル・ストア索引を更新します。

構文

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

パラメータ

パラメータ 説明

index_name

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

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

attributes

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

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

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

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

attribute_value

カスタムattribute_nameのユーザー指定値。

デフォルト値はNULLです。

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

ベクトル・インデックス属性

ベクトル索引の属性は、ベクトル索引の動作を管理および構成するのに役立ちます。必要に応じて、カスタム索引属性を追加できます。一部の属性はオプションであり、デフォルトの値があります。

属性

属性名 必須 説明
chunk_size 1024(デフォルト) いいえ

入力データのチャンク化のテキスト・サイズ。

テキスト・データの場合、これは文字数を意味します。

chunk_overlap 128 (デフォルト) いいえ

隣接するテキストのチャンク間で重複する文字の量を指定します。この属性は、セグメント間の重複を許可することで、テキスト処理のコンテキストの継続性と正確性を確保するのに役立ちます。これにより、チャンク境界でのコンテキスト情報の損失を防ぐことができます。

location

NA はい

オブジェクト・ストアの場所。この場所のファイルは、htmlやtxtなどのテキスト・ファイルである必要があります。

match_limit

5 (デフォルト) いいえ

ベクトル検索問合せで返される結果の最大数を指定し、出力サイズを制御して、データ取得操作の効率を向上させます。

object_storage_credential_name

NA はい

オブジェクト・ストレージにアクセスするための資格証明の名前を指定します。

pipeline_name

<vector_index_name>$VECPIPELINE いいえ

ベクトル索引データ・ロード・パイプラインの名前を指定します。この属性はベクトル索引に対して自動的に設定されるため、指定や変更はできません。パイプライン名を使用すると、パイプラインのモニターおよびトラブルシューティングを使用してベクトル索引データ・ロードをモニターできます。

profile_name

NA はい

ソース・データおよびユーザー・プロンプトの埋込みに使用されるAIプロファイルの名前。

refresh_rate

1440分(デフォルト) いいえ

ベクトル・ストア内のデータの更新間隔。単位は分です。

similarity_threshold

0 (デフォルト) いいえ

2つの品目が一致とみなされるために必要な類似度の最小レベルを定義します。関連性を確保するために、照合アルゴリズムの結果をフィルタリングするのに役立ちます。

vector_distance_metric

Oracle 23aiの有効な値:
  • EUCLIDEAN
  • L2_SQUARED (EUCLIDEAN_SQUARED)
  • COSINE (デフォルト)
  • DOT
  • MANHATTAN
  • HAMMING
いいえ

データベース内のベクトルの比較に使用される距離計算のタイプを指定し、アイテム間の類似度を定量化する方法を決定します。

vector_db_provider

oracle

はい

ベクトル・ストアとして管理および機能するプロバイダ名を指定します。

vector_dimension

NA いいえ

ベクトルストア内の各ベクトルの要素数を指定し、データ表現のサイズと構造を定義します。

vector_table_name

<vector_index_name>$VECTAB (デフォルト)

No

ベクトル埋込みおよびチャンク・データを格納する表またはコレクションの名前を指定します。

次の例は、OCI生成AIベクトル・ストアを使用したベクトル索引の作成を示しています。
BEGIN
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
         index_name  => 'MY_INDEX',
         attributes  => '{"vector_db_provider": "oracle",
                          "location": "https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/my_namespace/my_bucket/my_data_folder",
                          "object_storage_credential_name": "OCI_CRED",
                          "profile_name": "OPENAI_ORACLE",
                          "vector_dimension": 1024,
                          "vector_distance_metric": "cosine",
                          "chunk_overlap":128,
                          "chunk_size":1024
      }');
END;
/                                                                 
/