DBMS_CLOUD_AIパッケージ

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

DBMS_CLOUD_AI概要

DBMS_CLOUD_AIパッケージの使用について説明します。

DBMS_CLOUD_AIパッケージを使用して、AIプロファイルを作成し、大規模言語モデル(LLM)にアクセスするように構成します。SQLの生成、実行、説明などのタスクを実行するために、現在のデータベース・ユーザー・セッションでAIプロファイルを設定します。さらに、LLMとのチャットなど、取得拡張生成および自然言語ベースのインタラクションを有効にします。

サポートされているプラットフォームおよびLLMの詳細は、Select AIについてを参照してください。

DBMS_CLOUD_AIサブプログラムの要約

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

サブプログラム 摘要

CREATE_PROFILEプロシージャ

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

プロファイルの属性

構成可能なAIプロファイル属性を提供します。

CLEAR_PROFILEプロシージャ

この手順では、現在のセッションでアクティブなAIプロファイルをクリアします。

DISABLE_PROFILEプロシージャ

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

DROP_PROFILEプロシージャ

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

ENABLE_PROFILEプロシージャ

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

GENERATEファンクション

この機能を使用すると、既存のプロファイルでステートレスな方法で Select AIを使用できます。

GENERATE_SYNTHETIC_DATAファンクション

この関数は合成データを生成します。

GET_PROFILEファンクション

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

SET_ATTRIBUTEプロシージャ

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

SET_PROFILEプロシージャ

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

ENABLE_DATA_ACCESSプロシージャ

この手順を使用して、LLMへのデータの送信を有効にします。

DISABLE_DATA_ACCESSプロシージャ

この手順を使用して、LLMへのデータの送信を無効にします。

FEEDBACKプロシージャ

この手順を使用して、Select AIにフィードバックを提供することで、問合せ生成の精度を向上させる可能性があります。

FEEDBACKのベクトル・インデックス

これは、feedbackを初めて使用したときに作成されるデフォルトのベクトル索引です。

CREATE_CONVERSATIONプロシージャ

この手順は、会話の作成に役立ちます。

CREATE_CONVERSATIONファンクション

この関数は、会話を作成し、他のプロシージャで会話IDを使用するのに役立ちます。

CREATE_CONVERSATION属性

会話属性を使用して、会話をカスタマイズします。

UPDATE_CONVERSATIONプロシージャ

このプロシージャは、ユーザー指定のパラメータを使用して既存のプロシージャを更新します。

SET_CONVERSATION_IDプロシージャ

このプロシージャは、現在のセッションでの会話サポートを設定します。

GET_CONVERSATION_IDファンクション

このプロシージャは、conversation_idパラメータの取得に役立ちます。

CLEAR_CONVERSATION_IDプロシージャ

このプロシージャは、現在のセッションで設定されたconversation_idをクリアするのに役立ちます。

DELETE_CONVERSATION_PROMPTプロシージャ

このプロシージャは、特定のプロンプトを削除します。

DROP_CONVERSATIONプロシージャ

このプロシージャは、会話全体とそのメタデータを削除します。

SUMMARIZEファンクション

このファンクションは、パラメータに基づいてコンテンツを要約します。

SUMMARIZEのパラメータ

要約属性を使用して、要約生成をカスタマイズします。

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

プロファイルの属性

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

属性

属性の名前 摘要

annotations

23ai注釈機能を使用して、データベース表および列に関する追加のメタデータを提供します。

有効な値は、TRUEまたはFALSEです。デフォルト値はFALSEです。値は大文字と小文字が区別されません。

TRUE: LLMの他のメタデータに加えて、表レベルおよび列レベルの注釈を使用してユーザー・プロンプトを拡張します。

FALSE: 拡張プロンプト・メタデータの一部として注釈は含まれません。

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サービス・リソースの作成およびデプロイを参照してください。

case_sensitive_values

文字列値またはテキスト値を含む列に対して、大/小文字を区別しないSQLを生成するようにSelect AIがLLMに指示するかどうかを指定します。

サポートされる値は次のとおりです。

  • true: 大/小文字が区別される文字列値を使用してSQL問合せを生成するLLMを示します。

  • false: 文字列値の大/小文字を無視するSQL問合せを生成するLLMを示します。

デフォルト値はfalseです。

comments

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

constraints

LLMに送信されるメタデータに主キーや外部キーなどの参照整合性制約を含めるかどうかを管理します。

有効な値は、TRUEまたはFALSEです。デフォルト値はFALSEです。値は大文字と小文字が区別されません。

TRUE: LLMに送信される拡張プロンプト・メタデータに参照制約が含まれます。

FALSE: 参照整合性制約は含まれません。

conversation

会話履歴がプロファイルに対して有効かどうかを示すVARCHAR2属性。有効な値は、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には適用できません。

  • データベース内モデルの場合、データベース内トランスフォーマ・モデルでSelect AIを使用する場合は、データベースにインポートされるモデル名を指定します。USER_MINING_MODELSを問い合せると、モデル名を取得できます。

    構文:

    embedding_modelにデータベース内トランスフォーマ・モデルを使用するための構文を次に示します。

    "embedding_model": "[<model_schema>.]<model_name>"

enforce_object_list

オブジェクト・リストの対象となる表のみを使用するSQLを生成するようにLLMを制限するかどうかを指定します。

サポートされる値は次のとおりです。

  • true: オブジェクト・リストで指定された表のみを強制的に使用します。

  • false: ユーザーがアクセスできる表をLLMで使用できます。

値は大文字と小文字が区別されません。デフォルト値はfalseです。

max_tokens

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

model

レスポンスを生成するために使用されるAIモデルの名前。

「AIプロバイダおよびLLMの選択」を参照し、モデル名を指定します。

ノート

  • Cohere: より小さい「軽量」モデルの方が高速ですが、大きいモデルの方がパフォーマンスが向上します。カスタム・モデルには、フルIDを指定することもできます。
  • OCI生成AI: チャット・モデルは、runsqlshowsqlexplainsqlnarratechatなど、すべてのSelect AIアクションでサポートされています。

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

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

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

  • AWS: Amazon Bedrockの基盤モデルには、Amazon Bedrockコンソールを介したアクセス権限が必要です。modelIDを入手するには、AWSのドキュメントを参照してください。
  • OpenAI互換: サポートされているモデル名については、AIプロバイダのドキュメントを参照してください。

object_list

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

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

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

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

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

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

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

object_list_mode

最も関連性の高い表またはすべての表のメタデータをLLMに送信するかどうかを指定します。

サポートされる値は次のとおりです。

  • automated: 問合せに最も関連性があると識別される特定の表のメタデータのみを送信します。

  • all: ユーザーがアクセスできるすべての表のメタデータを送信します。

object_list_modeautomatedに設定されている場合、Select AIによって、デフォルト属性を持つ<profile_name>_OBJECT_LIST_VECINDEXという名前のベクトル索引が自動的に作成されます。参照

oci_apiformat

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

サポートされる値は次のとおりです。
  • COHERE
  • GENERIC
ノート

この属性は、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
ノート

この属性は非推奨です。oci_apiformatを使用します。

provider

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

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

  • オープンアイ
  • コヒーレンス
  • アズール
  • データベース
  • oci
  • グーグル
  • 人間
  • ハギングフェイス
  • aws

この属性は必須です。

provider_endpoint

OpenAI互換プロバイダのAPIエンドポイントを指定します。この属性は、OpenAI互換プロバイダにのみ固有です。provider属性ではなく、DBMS_CLOUD_AI.CREATE_PROFILEプロシージャの属性としてprovider_endpointを指定します。パラメータの取得方法を学習するには、OpenAI互換プロバイダの使用を参照してください。

例: api.fireworks.ai/inference

region

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

Oracle Generative AIクラスタは、シカゴ、フランクフルト、ロンドンおよびその他の選択したリージョンで使用できます。詳細は、生成AIを使用するリージョンを参照してください。

AWSのデフォルト・リージョンはus-east-1です。

デフォルト・リージョンは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_apiformat": "COHERE"            
       }');                                                                  
END;                                                                         
/ 

CLEAR_PROFILEプロシージャ

この手順では、現在のセッションで設定されたアクティブなAIプロファイルをすべてクリアします。アクティブなプロファイルをクリアすると、SQLコマンドラインでSELECT AIを使用できなくなり、DBMS_CLOUD_AI.GENERATEをコールするときに設定AIプロファイルを使用できなくなります。この手順では、プロファイルは削除されません。

構文

DBMS_CLOUD_AI.CLEAR_PROFILE;


   BEGIN
        DBMS_CLOUD_AI.CLEAR_PROFILE;
   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;
/

FEEDBACKプロシージャ

この手順を使用すると、Select AIへのフィードバックを提供して、クエリー生成の精度を向上させることができます。正または負のフィードバック、およびテキスト・コメントや改訂されたSQL問合せを提供することもできます。

構文

DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_id            IN  DBMS_ID,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,   
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );
 
DBMS_CLOUD_AI.FEEDBACK(
      profile_name      IN  VARCHAR2,
      sql_text          IN  CLOB,
      feedback_type     IN  VARCHAR2 DEFAULT NULL,
      response          IN  CLOB DEFAULT NULL,
      feedback_content  IN  CLOB DEFAULT NULL,
      operation         IN  VARCHAR2 DEFAULT 'ADD'
  );

パラメータ

パラメータ 摘要

profile_name

使用するAIプロファイルを指定します。profile_nameを指定しない場合、Select AIはセッションで設定されたデフォルトのプロファイルを使用します。

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

sql_id

SQL問合せを識別します。1つのsql_idには、フィードバック・エントリを1つのみ含めることができます。

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

sql_text

SQL問合せの全文が含まれます。

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

feedback_type

フィードバックの種類を指定します。選択可能な値は次のとおりです。
  • positive: 生成されたSQLを受け入れます。
  • negative: 問合せのエラーを識別することで、必要なSQL問合せの改善を提供します。
ノート

DBMS_CLOUD_AI.FEEDBACKプロシージャでは、sql_idまたはsql_textを指定できるため、feedback_typeが必要になりますが、feedbackアクションを使用している場合は、LLMによってフィードバック・タイプが動的に決定または解釈されます。

operationaddの場合、これは必須パラメータです。

response

ユーザーが期待する正しいSQL問合せ結果を表します。

operationaddで、feedback_typenegativeの場合、これは必須パラメータです。

feedback_content

ユーザーの自然言語フィードバックを取得します。このパラメータは、responseとともに使用できます。

operation

実行する操作を指定します。受け入れられる値は次のとおりです。
  • add (デフォルト): feedback_typeを指定してフィードバックを追加します。
  • delete: sql_idを指定してフィードバックを削除します。

例: 追加または削除操作を使用した生成済SQLのフィードバックの提供

次の例では、DBMS_CLOUD_AI.FEEDBACKプロシージャを使用して、プロシージャのパラメータを指定して、生成されたSQLを受け入れるか改善する方法を示します。

EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   feedback_type=>'positive',
                                   operation=>'add');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_text=> 'select ai showsql how many movies',
                                   feedback_type=> 'negative',
                                   response=>'SELECT SUM(1) FROM "ADB_USER"."MOVIES"',
                                   feedback_content=>'Use SUM instead of COUNT');
EXEC DBMS_CLOUD_AI.FEEDBACK(profile_name=>'OCI_FEEDBACK1',
                                   sql_id=> '852w8u83gktc1',
                                   operation=>'delete');

FEEDBACKのベクトル・インデックス

Select AIでは、初めてフィードバック機能を使用すると、<profile_name>_FEEDBACK_VECINDEXという名前のデフォルトのベクトル索引がデフォルト属性で作成されます。

DBMS_CLOUD_AI.UPDATE_VECTOR_INDEXプロシージャを使用して、similarity_thresholdmatch_limitなどの属性を変更できます。この索引は、提供されたフィードバックに基づいて、将来生成されるSQLを絞り込むのに役立ちます。このテーブルは、関連するAIプロファイルが削除されると削除されます。<profile_name>_FEEDBACK_VECINDEXを削除することもできます。実行すると、Select AIでは、runsqlshowsqlおよびexplainsqlアクションのヒントとしてフィードバックが使用されなくなります。ただし、Select AIフィードバック機能を使用して新しいフィードバックを送信すると、Select AIによって新しいフィードバック・ベクトル索引が自動的に作成されます。

ノート

feedbackmatch_limitのデフォルト値は3です。

ベクトル表名

表<profile_name>_FEEDBACK_VECINDEX$VECTABには、ユーザー・フィードバックのベクトル表現(埋込み)と、Select AIが時間の経過とともにSQL生成を改善するために使用する他のパラメータが含まれています。

パラメータ

摘要

attributes

FEEDBACKプロシージャに従ってJSONオブジェクト属性を含めます。

content

ユーザー・プロンプトが含まれます。

embedding

ユーザー・プロンプトのベクトル表現(埋込み)が含まれます。

次の例は、自動生成されたベクトル索引表を使用して、フィードバックを問い合せて提供する方法を示しています。

SQL> select content, attributes from OCI_FEEDBACK1_FEEDBACK_VECINDEX$VECTAB where JSON_VALUE(attributes, '$.sql_text') = 'select ai showsql how many movies';
 
CONTENT                                                
----------------------------------------------------------------------------------------------------
how many movies                                             
ATTRIBUTES
----------------------------------------------------------------------------------------------------
 
{"response":"SELECT SUM(1) FROM \"ADB_USER\".\"MOVIES\"","feedback_type":"negative","sql_id":null,"sql_text":"select ai showsql how many movies","feedback_content":null}
DBMS_CLOUD_AI.feedback Procedure(Positive Feedback)

GET_PROFILEファンクション

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

構文

DBMS_CLOUD_AI.GET_PROFILE
;

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


   SELECT DBMS_CLOUD_AI.GET_PROFILE
   from DUAL;

SET_ATTRIBUTEプロシージャ

この手順では、AIプロファイル属性を設定できます。様々なタイプの属性値を受け入れるために、オーバーロードされています。

構文

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   {BOOLEAN|VARCHAR2}
);

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

パラメータ

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

パラメータ 摘要

profile_name

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

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

attribute_name

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

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

attribute_value

プロファイル属性の値。値は、BOOLEANCLOBNUMBERまたはVARCHAR2タイプです。

デフォルト値はNULLです。

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

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

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OCI_PROFILE',
   attribute_name  => 'temperature',
   attribute_value => 0.5
 );
END;
/

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

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OCI_PROFILE',
   attribute_name  => 'comments',
   attribute_value => 'true'
 );
END;
/

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

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OCI_PROFILE',
   attribute_name  => 'model',
   attribute_value => 'meta.llama-3.3-70b-instruct'
 );
END;
/

GENERATEファンクション

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

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

構文

DBMS_CLOUD_AI.GENERATE(
    prompt            IN  CLOB,
    profile_name      IN  VARCHAR2 DEFAULT NULL,
    action            IN  VARCHAR2 DEFAULT NULL,
    attributes        IN  CLOB     DEFAULT NULL,
    params            IN  CLOB
) 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引数を省略できます。
  • 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       => 'runsql')
FROM dual;
-----------------------------------------------

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       => 'explainsql')
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を使用した自然プロンプトの翻訳処理。サポートされているアクションには、runsql (デフォルト)、showsqlexplainsqlnarratesummarizeおよびchatがあります。アクションの説明は、「AIキーワードを使用したプロンプトの入力」に記載されています。

attributes JSON形式で属性を指定することで、特定のAIプロファイル属性をオーバーライドします。詳細は、プロファイル属性を参照してください。
params

会話パラメータを指定します。CREATE_CONVERSATION属性を参照してください。指定できるのは次のパラメータのみです。

  • conversation_id: デフォルト値は、現在のセッションで設定された会話IDです。これは必須パラメータではありません。
  • conversation_length: 既存の値をユースケースに適した値に変更できます。これは必須パラメータではありません。

例: Select AIアクションでのGENERATE関数の使用

次の例は、DBMS_CLOUD_AI.GENERATEファンクションで使用できるrunsqlshowsqlexplainsqlnarratesummarizeおよびchatアクションを示しています。詳細は、「AIキーワードを使用したプロンプトの入力」も参照してください。

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

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

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

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

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

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'explainsql)
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;
summarizeアクションの例を次に示します。
SELECT DBMS_CLOUD_AI.GENERATE(
                prompt => TO_CLOB(
                            DBMS_CLOUD.GET_OBJECT(
                             credential_name => 'STORE_CRED',
                             object_uri => 'https://objectstorage.ca-toronto-1.oraclecloud.com' ||
                                '/n/namespace-string/b/bucketname/o/data_folder/' ||
                                'summary/test_4000_words.txt')),
                profile_name => 'GENAI_LLAMA',
                action => 'SUMMARIZE')
from DUAL;

結果:

The music streaming industry, led by Spotify, has revolutionized the way
people consume music, with streaming accounting for 80% of the American
recording industry's revenue. However, this shift has also complicated the
lives of artists trying to survive in an on-demand, hyper-abundant present.
Spotify's business model, which pays royalties based on an artist's
popularity, has led to concerns about the fairness of the system, with some
artists earning little to no royalties. The company's dominance has also
changed the way people listen to music, with a focus on convenience and
personalized playlists. Liz Pelly's book, "Mood Machine: The Rise of Spotify
and the Costs of the Perfect Playlist," explores the impact of Spotify's rise
on the music industry and listeners, arguing that the platform's emphasis on
affect and mood has led to a homogenization of music and a loss of autonomy
for listeners. As the music industry continues to evolve, questions remain
about the future of music creation and consumption, and whether artists will
be able to thrive in a system that prioritizes convenience and profit over
artistic expression.
プロシージャでのGENERATE関数の使用

プロシージャでDBMS_CLOUD_AI.GENERATEを使用して、ファンクションを実行できます。次の例では、ai_promptprofile_nameおよびactionを入力パラメータとして使用し、DBMS_CLOUD_AI.GENERATEをコールします。

create or replace FUNCTION call_select_ai (ai_prompt  IN VARCHAR2, 
                                           ai_profile IN VARCHAR2,
                                           ai_action  IN VARCHAR2) -- valid for 'chat', 'narrate', 'showsql'
                                           RETURN CLOB AS sai_resp clob;
BEGIN
  sai_resp := DBMS_CLOUD_AI.GENERATE(prompt       => ai_prompt,
                                     profile_name => ai_profile,
                                     action       => ai_action);  
  return(sai_resp);
END call_select_ai;
例: 会話に対するGENERATE関数の使用

次の例は、会話設定でDBMS_CLOUD_AI.GENERATE関数を使用する方法を示しています。この例では、会話がすでに作成されていることを前提としています。

SELECT DBMS_CLOUD_AI.GENERATE(
        prompt       =>  'What is the difference in weather between Seattle and San Francisco?',
        profile_name =>  'GENAI',
        action       =>  'CHAT',
        params       =>  '{"conversation_id":"30C9DB6E-EA4D-AFBA-E063-9C6D46644B92"}') AS RESPONSE;

結果:

RESPONSE
--------------------------------------------------------------------------------
Seattle and San Francisco, both located in the Pacific Northwest and Northern 
California respectively, experience a mild oceanic climate. However, there are 
some notable differences in their weather patterns:
 
1. **Temperature**: San Francisco tends to be slightly warmer than Seattle, 
especially during the summer months. San Francisco's average temperature ranges 
from 45?F (7?C) in winter to 67?F (19?C) in summer, while Seattle's average 
temperature ranges from 38?F (3?C) in winter to 64?F (18?C) in summer.
 
2. **Rainfall**: Seattle is known for its rainy reputation, with an average 
annual rainfall of around 37 inches (94 cm). San Francisco receives less rainfall, 
with an average of around 20 inches (51 cm) per year. However, San Francisco's 
rainfall is more concentrated during the winter months, while Seattle's rainfall 
is more evenly distributed throughout the year.
 
......

SET_PROFILEプロシージャ

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

データベース・セッションのAIプロファイルを設定すると、接頭辞がSELECT AIのSQL文は自然言語プロンプトとみなされます。AI接頭辞で指定したアクションに応じて、AIを使用してレスポンスが生成されます。AI接頭辞を使用するには、Select AIの使用例および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;
   /

CREATE_CONVERSATIONプロシージャ

このプロシージャを使用すると、会話を作成し、プロシージャ内でconversation_idを自動的に設定できます。

ノート

DBMS_CLOUD_AI.CREATE_COVERSATIONプロシージャを使用している場合は、プロシージャによって自動的に設定されるため、conversation_idの設定をスキップできます。

構文

DBMS_CLOUD_AI.CREATE_COVERSATION(
  attributes            IN CLOB DEFAULT NULL
);

パラメータ

パラメータ 摘要

attributes

JSON形式の会話の属性。詳細は、CREATE_CONVERSATION属性を参照してください。

デフォルト値はNULLです。

例: 会話の作成

次の例は、カスタマイズなしでの会話の作成を示しています。

EXEC DBMS_CLOUD_AI.CREATE_COVERSATION;

結果:

PL/SQL procedure successfully completed.
例: カスタム属性を使用した会話の作成

次の例は、titledescriptionretention_daysconversation_lengthなどのカスタム・パラメータを使用した会話の作成を示しています。

-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_COVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

CREATE_CONVERSATIONファンクション

このファンクションは、会話を作成し、DBMS_CLOUD_AI.SET_CONVERSATION_IDDBMS_CLOUD_AI.GENERATEなどの他のプロシージャまたはファンクションで使用できるconversation_idを返します。

Oracleでは、会話を有効にするためにconversation_idを設定することをお薦めします。または、DBMS_CLOUD_AI.GENERATEファンクションでconversation_idを設定できます。

ノート

DBMS_CLOUD_AI.CREATE_COVERSATIONプロシージャを使用している場合は、プロシージャによって自動的に設定されるため、conversation_idの設定をスキップできます。

構文

DBMS_CLOUD_AI.CREATE_COVERSATION(
  attributes            IN CLOB DEFAULT NULL
) RETURN VARCHAR2;

パラメータ

パラメータ 摘要

attributes

JSON形式の会話の属性。詳細は、CREATE_CONVERSATION属性を参照してください。

デフォルト値はNULLです。

例: 会話の作成

次の例は、DBMS_CLOUD_AI.CREATE_COVERSATION関数を使用して、カスタマイズせずに会話を作成する方法を示しています。

SELECT DBMS_CLOUD_AI.CREATE_COVERSATION FROM DUAL;

結果:

CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
例: カスタム属性を使用した会話の作成

次の例は、DBMS_CLOUD_AI.CREATE_COVERSATIONファンクションを使用して、titleretention_daysconversation_lengthなどの属性を指定する方法を示しています。

SELECT DBMS_CLOUD_AI.CREATE_COVERSATION(
				attributes => '{"title":"This is a test conversation",
                               "retention_days":7,
                               "conversation_length":20}') 
FROM DUAL;

CREATE_CONVERSATION属性

これらの属性は、保持期間、格納または表示するレスポンスを含むプロンプトの数、参照用のタイトルや説明などのメタデータなど、会話コンテキストを管理します。属性の中にはオプションであり、デフォルト値を持つものがあります。

属性

属性の名前 デフォルト値 摘要

title

新規会話

会話のユーザー割当名。指定しない場合、Select AIでは、会話がプロンプトで最初に使用されるときにLLMが生成されます。

description

NULL

会話の目的またはコンテキストを要約したユーザー定義の摘要を提供します。提供されていない場合、LLMは、会話がプロンプトで最初に使用されたときに生成し、5回目に使用して再度更新して、より正確で関連性の高い情報を含めます。

retention_days

7

会話履歴を保持する日数を指定します。これは、作成日からデータベースに格納されます。値を省略すると、デフォルト値の7に設定されます。0に設定すると、会話はDBMS_CLOUD_AI.DROP_CONVERSATIONプロシージャまたはDBMS_CLOUD.DELETE_ALL_OPERATIONS('CONVERSATION')を使用して手動で削除するまで保持されます。

conversation_length

NULL

現在のプロンプトに含める最新のプロンプトおよびレスポンスの数を指定します。許可される最大値は999です。この値は、DBMS_CLOUD_AI.GENERATE関数でconversation_lengthパラメータを指定するか、SELECT AI <ACTION> <PROMPT>を使用してAIプロファイルで設定することでオーバーライドできます。conversation_lengthに次の優先順位ルールを適用します。
  1. DBMS_CLOUD_AI.GENERATEの属性引数からの値
  2. 会話の値セットは次の優先度になります
  3. AIプロファイルで定義された値が最後の最優先

どれもconversation_lengthを指定しない場合、デフォルト値は10です。

次の例は、 DBMS_CLOUD_AI.CREATE_CONVERSATIONプロシージャで会話属性をカスタマイズする方法を示しています。
-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

UPDATE_CONVERSATIONプロシージャ

このプロシージャは、会話属性の指定値で既存の会話を更新します。

構文

DBMS_CLOUD_AI.UPDATE_CONVERSATION(
    conversation_id    IN VARCHAR2,
    attributes         IN CLOB
);

パラメータ

パラメータ 摘要

conversation_id

会話に割り当てられた一意の番号。

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

attributes

JSON形式の会話の属性。詳細は、CREATE_CONVERSATION属性を参照してください。

EXEC DBMS_CLOUD_AI.UPDATE_CONVERSATION(
conversation_id => '30C9DB6E-EA4E-AFBA-E063-9C6D46644B92', 
attributes => '{"retention_days":20, 
		"description":"This a sample description", 
		"title":"Sample title", 
		"conversation_length":20}');

結果:

PL/SQL procedure successfully completed.

SET_CONVERSATION_IDプロシージャ

このプロシージャは、現在の会話を指定されたIDに設定します。後続のプロンプトには、会話の構成済属性に基づく既存の会話プロンプトが含まれます。

構文

DBMS_CLOUD_AI.SET_CONVERSATION_ID(
    conversation_id   IN VARCHAR2
);

パラメータ

パラメータ 摘要

conversation_id

現在のセッションで会話に割り当てられた一意の番号。

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

EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
   

結果:

PL/SQL procedure successfully completed.

GET_CONVERSATION_IDファンクション

このファンクションは、DBMS_CLOUD_AI.SET_CONVERSATION_IDまたはDBMS_CLOUS_AI.CREATE_CONVERSATIONプロシージャを使用して、セッションで現在設定されている会話IDを戻します。会話を設定しなかった場合、関数はNULLを返します。会話を削除すると、セッションでwell.See CLEAR_CONVERSATION_IDプロシージャとしてクリアされます。

構文

DBMS_CLOUD_AI.GET_CONVERSATION_ID
RETURN VARCHAR2;

この例では、現在のセッションに設定された会話IDを表示します。

SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID;

結果:

--------------------------------------------------------------------------------
30C9DB6E-EA4F-AFBA-E063-9C6D46644B92

CLEAR_CONVERSATION_IDプロシージャ

このプロシージャは、セッションで設定された会話IDをクリアして、SELECT AI <ACTION> <PROMPT>の会話機能を無効にします。会話を設定しなかった場合、エラーは発生しません。

構文

DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;

この例では、セッション内の現在の会話IDの表示、IDのクリアおよび変更の確認を示します。

-- A conversation id is set in the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;
 
GET_CONVERSATION_ID
--------------------------------------------------------------------------------
3A88BFF0-1D7E-B3B8-E063-9C6D46640ECD
 
 
-- Clear the conversation id
EXEC DBMS_CLOUD_AI.CLEAR_CONVERSATION_ID;
 
PL/SQL procedure successfully completed.
 
 
-- The conversation id is removed from the session
SELECT DBMS_CLOUD_AI.GET_CONVERSATION_ID FROM dual;
 
GET_CONVERSATION_ID
--------------------------------------------------------------------------------

DELETE_CONVERSATION_PROMPTプロシージャ

このプロシージャは、会話から特定のプロンプトを削除します。

構文

DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT(
    conversation_prompt_id  IN VARCHAR2,
    force                   IN BOOLEAN DEFAULT FALSE
);

パラメータ

パラメータ 摘要

conversation_prompt_id

会話のプロンプトに割り当てられた一意の番号。プロンプトIDは、DBA/USER_CLOUD_AI_CONVERSATION_PROMPTSビューを問い合せて検索できます。DBMS_CLOUD_AIビューを参照してください。

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

force

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

このパラメータのデフォルト値はFALSEです。

EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');

結果:

PL/SQL procedure successfully completed.

DROP_CONVERSATIONプロシージャ

このプロシージャは、会話とそれに関連付けられたすべてのプロンプトおよび関連するレスポンスを削除します。削除すると、conversation_idは無効になります。セッションで設定されている間に会話が削除されると、会話は自動的にクリアされます。

構文

DBMS_CLOUD_AI.DROP_CONVERSATION(
    conversation_id  IN VARCHAR2,
    force            IN BOOLEAN  DEFAULT FALSE
);

パラメータ

パラメータ 摘要

conversation_id

会話に割り当てられた一意の番号。

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

force

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

このパラメータのデフォルト値はFALSEです。

EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');

結果:

PL/SQL procedure successfully completed.

SUMMARIZEファンクション

このファンクションは、パラメータとして指定したカスタマイズ・オプションに基づいてコンテンツを要約します。

構文

DBMS_CLOUD_AI.SUMMARIZE(
  content         IN  CLOB     DEFAULT NULL,
  credential_name IN  VARCHAR2 DEFAULT NULL,
  location_uri    IN  VARCHAR2 DEFAULT NULL,
  profile_name    IN  VARCHAR2 DEFAULT NULL,
  user_prompt     IN  CLOB     DEFAULT NULL,
  params          IN  CLOB     DEFAULT NULL
) RETURN CLOB;

パラメータ

パラメータ 摘要

content

要約するテキストを指定します。contentまたはlocation_uriのいずれかを指定する必要があります。

これは必須パラメータではありません。

credential_name

オブジェクト・ストアでの認証に使用される資格証明オブジェクトを識別します。この資格証明は、DBMS_CLOUD.CREATE_CREDENTIALを使用して作成する必要があります。
ノート

このパラメータは、location_uriを指定する場合にのみ使用します。

location_uri

テキストが格納されるURI、またはローカル・ファイルへのパスを指定します。contentまたはlocation_uriのいずれかを指定する必要があります。

たとえば:

オブジェクト・ストレージ: https://objectstorage.ca-toronto-1.oraclecloud.com/n/namespace-string/b/bucketname/o/data_folder/summary/test_file.txt

ローカル・ファイル: summary_gobject:test_file.txt

profile_name

使用するAIプロファイルを指定します。profile_nameを指定しない場合、Select AIはセッションで設定されたデフォルトのプロファイルを使用します。デフォルト・プロファイルが設定されていない場合は、ORA-20046: AIプロファイルがセッションで有効化されていませんというエラーが返されます。

デフォルト値はNULLです。

user_prompt

要約をガイドまたはカスタマイズするための自然言語プロンプトを提供します。サマリー・パラメータ以外の追加の指示を含めることができます。

たとえば、サマリーは「記事のサマリー: '''」で始まる必要があります

このパラメータは必須ではありません。

params

要約パラメータを定義します。「SUMMARIZEパラメータ」を参照してください。

調査するには、例: Select AI Summarizeを参照してください。

SUMMARIZEのパラメータ

これらの属性は、カスタム・パラメータを使用してサマリーの生成を管理します。属性の中には、オプションであり、デフォルト値を持つものがあります。

属性

属性の名前 デフォルト値 摘要

min_words

0

生成されたサマリーに含まれる単語の最小おおよその数を指定します。

ノート

このパラメータは厳密な制限ではなくガイドラインとして機能します。サマリーの実際の長さは、提供されたコンテンツおよびモデルの解釈によって異なる場合があります。

max_words

200

生成されたサマリーに含まれる単語の概算最大数を指定します。
ノート

このパラメータは厳密な制限ではなくガイドラインとして機能し、サマリーの実際の長さは、提供されたコンテンツおよびモデルの解釈によって異なる場合があります。

summary_style

段落
サマリーの書式スタイルを指定します。使用可能なサマリー・フォーマット・オプションは次のとおりです。
  • paragraph: サマリーは1つ以上の段落で表示されます。
  • list: サマリーは、テキストからのキー・ポイントのリストです。

chunk_processing_method

map_reduce
テキストがLLMで処理できるトークン制限を超える場合は、管理可能なチャンクに分割する必要があります。このパラメータを使用すると、これらのチャンクを処理する方法を選択できます。次のオプションを指定できます。
  • iterative_refinement.詳細は、反復絞込みを参照してください。
  • map_reduce.詳細は、MapReduceを参照してください。

extractiveness_level

low サマリーが入力の元の表現にどの程度従っているかを決定します。モデルが抽出する度合いと書き換えの度合いを制御します。オプションは次のとおりです。
  • High: サマリーは元のフレーズに近づき、可能な場合は文と式を再利用します。
  • Medium: 抽出とパラフレーズのバランスのとれた組合せ。
  • Low: 正確なフレーズではなく、意味に焦点を当てて、入力の記述、再構築または簡略化をより自由に行うことができます。
ノート

この設定は、モデルの集計動作のガイダンスとして機能し、厳密なルールは強制されません。サマリーの実際のスタイルおよび表現は、入力コンテンツおよびモデルの決定に基づいて異なる場合があります。

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アクションが無効になります。

パラメータ

パラメータ 必須 摘要

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

ブール

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

パラメータ

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

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

BEGIN
  DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/

DISABLE_DATA_ACCESSプロシージャ

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

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

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

構文

DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();

パラメータ

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

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

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

パラメータ

パラメータ 摘要

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

パラメータ

パラメータ 摘要

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

パラメータ

パラメータ 摘要

index_name

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

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

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です。

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

ベクトル索引属性

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

属性

属性の名前 必須 摘要
chunk_size 1024(デフォルト) いいえ

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

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

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

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

location

NA はい

このパラメータは、ソース・ファイルのURIまたはディレクトリとソース・ファイルを指定します。

ワイルドカード・パターンは、ソース・ファイルのURIとディレクトリの両方でサポートされています。

クラウドのソース・ファイルのURI:

バケットまたはサブフォルダのソース・ファイルURIを指定できます。ワイルドカードを使用して、サブフォルダまたはファイル名を指定できます。文字「*」は、複数の文字に対応するワイルドカードとして使用でき、文字「?」は1文字のワイルドカードとして使用することができます。

ワイルドカードの使用例:

location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

URIの形式は、どのCloud Object Storageサービスを使用するかによって決まります。詳細は、「DBMS_CLOUD URIの形式」に関する項を参照してください。

ディレクトリ:

1つのディレクトリとファイル名を指定できます。ディレクトリを指定する形式は、MY_DIR:filename.extです。デフォルトでは、ディレクトリ名MY_DIRはデータベース・オブジェクトであり、大/小文字は区別されません。ファイル名は、大/小文字が区別されます。

ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。文字*は、複数の文字に対応するワイルドカードとして使用でき、文字?は1文字のワイルドカードとして使用することができます。例: MY_DIR:*またはMY_DIR:test?

大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。例: "my_dir1":*"my_dir2":Test?

引用符文字を含めるには、2つの引用符を使用します。例: MY_DIR:''filename.ext。これは、ファイル名が引用符(')で始まることを示します。

この場所のファイルは、PDF、DOC、JSON、XML、HTMLなどの形式のドキュメントです。サポートされているドキュメント形式を参照してください。

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

説明で指定された値の1つに対応する文字列。

いいえ

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

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 (デフォルト)

いいえ

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

例: オブジェクト・ストレージURIの場所の指定
次の例は、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;
/                                                                 
/
例: ワイルドカード・パターンを使用したオブジェクト・ストレージURIの場所の指定

この例では、オブジェクト・ストレージURIのワイルドカード・パターン(*)をlocationパラメータとして指定します。オブジェクト・ストレージURIからすべてのCSVファイルをロードします。

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.myregion.oraclecloud.com/n/my$namespace/b/bucketname/o/year=????/month=??/file*.csv)',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
例: ワイルドカード・パターンを使用したディレクトリ・オブジェクトの場所の指定

この例では、ワイルドカード・パターンを使用して、locationパラメータ内のディレクトリ・オブジェクトを指定します。すべてのCSVファイルをMY_DIRディレクトリにロードします。

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 'MY_DIR:*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
例: 大/小文字が区別されるディレクトリ・オブジェクトの場所をワイルドカード・パターンで指定

この例では、ワイルドカード・パターンを使用して、locationパラメータで大/小文字を区別するディレクトリ・オブジェクトを指定します。すべてのCSVファイルをMy_Dirディレクトリにロードします。

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 '"My_Dir":*.csv',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
例: すべてのファイルをワイルドカード・パターンとして大文字と小文字を区別するディレクトリ・オブジェクトを指定

この例では、ワイルドカード・パターン(*)を使用して、locationパラメータで大/小文字を区別するディレクトリ・オブジェクトを指定します。My_Dirディレクトリにあるすべてのファイルがロードされます。

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 '"My_Dir":*',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/
例: ディレクトリ・オブジェクトでのファイル名の一致の指定

この例では、ディレクトリ・オブジェクトを指定し、locationパラメータでtestなどのファイル名接頭辞を使用します。名前がtestで始まるMY_DIRディレクトリ内のすべてのファイルをロードします。

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 'MY_DIR:test*',
                       'object_storage_credential_name'   value 'OS_CRED',             
                       'chunk_size'        value 2048,                   
                       'chunk_overlap'     value 256,                    
                       'refresh_rate'      value 720)                    
       );                                                                
END;                                                                
/