DBMS_CLOUD_AIパッケージ
DBMS_CLOUD_AIパッケージは、Select AIを使用して、SQL文を生成、実行および説明するための自然言語プロンプトの翻訳を容易におよび構成します。 また、LLMとのチャットを含む、検索拡張生成および自然言語ベースの対話が可能になります。
DBMS_CLOUD_AI概要
DBMS_CLOUD_AIパッケージの使用について説明します。
DBMS_CLOUD_AIパッケージを使用して、AIプロファイルを作成し、Large Language Model (LLM)にアクセスできるように構成します。 現在のデータベース・ユーザー・セッションでAIプロファイルを設定して、SQLの生成、実行、説明などのタスクを実行します。 さらに、LLMとのチャットを含む、検索拡張生成および自然言語ベースの対話を有効にします。
サポートされているプラットフォームおよびLLMの詳細は、「Select AIについて」を参照してください。
DBMS_CLOUD_AIサブプログラムの概要
この項では、Autonomous Databaseで提供されるDBMS_CLOUD_AIサブプログラムについて説明します。
| サブプログラム | 説明 |
|---|---|
|
このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。 |
|
|
構成可能なAIプロファイル属性を提供します。 |
|
|
この手順では、現在のセッションでアクティブなAIプロファイルをクリアします。 |
|
|
このプロシージャは、現在のデータベースのAIプロファイルを無効にします。 |
|
|
このプロシージャは、既存のAIプロファイルを削除します。 |
|
|
このプロシージャにより、AIプロファイルを現在のデータベースで使用できます。 |
|
| このファンクションを使用すると、既存のプロファイルでステートレスな方法でSelect AIを使用できます。 | |
|
このファンクションは合成データを生成します。 |
|
|
このファンクションは、現在のセッションで使用されているプロファイル名を返します。 |
|
|
このプロシージャは、AIプロファイル属性を設定します。 |
|
|
このプロシージャは、現在のデータベースのAIプロファイルを設定します。 |
|
|
この手順を使用して、LLMへのデータの送信を有効にします。 |
|
|
この手順を使用して、LLMへのデータの送信を無効にします。 |
|
|
この手順を使用して、Select AIにフィードバックを提供することで、問合せ生成の精度を向上させる可能性があります。 |
|
|
これは、 |
|
|
この手順は、会話の作成に役立ちます。 |
|
|
この関数は、会話を作成し、他のプロシージャで会話IDを使用するのに役立ちます。 |
|
|
会話属性を使用して、会話をカスタマイズします。 |
|
|
このプロシージャは、ユーザー指定のパラメータを使用して既存のプロシージャを更新します。 |
|
|
このプロシージャは、現在のセッションでの会話サポートを設定します。 |
|
|
このプロシージャは、 |
|
|
このプロシージャは、現在のセッションで設定された |
|
|
このプロシージャは、特定のプロンプトを削除します。 |
|
|
このプロシージャは、会話全体とそのメタデータを削除します。 |
|
|
このファンクションは、パラメータに基づいてコンテンツを要約します。 |
|
|
要約属性を使用して、要約生成をカスタマイズします。 |
|
|
このプロシージャは、指定されたベクトル・データベースにベクトル索引を作成し、非同期スケジューラ・ジョブを使用してオブジェクト・ストアからデータを移入します。 |
|
|
このプロシージャは、ベクトル・ストア索引を削除します。 通常、ベクトル・ストア索引オブジェクトを削除し、ベクトル・データベースを削除します。 |
|
|
このプロシージャは、現在のデータベース内のベクトル索引オブジェクトを無効にします。 無効にすると、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
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
AIプロファイルの名前。 プロファイル名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。 プロファイル名の最大長は125文字です。 これは必須パラメータです。 |
|
|
JSON形式のプロファイル属性。 詳細は、AI 「プロファイル属性」を参照してください。 デフォルト値は「NULL」です。 |
status |
プロファイルのステータス。 デフォルト値は有効です。 |
|
|
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;
/
プロファイル属性
属性
| 属性名 | 説明 |
|---|---|
|
|
23ai注釈機能を使用して、データベース表および列に関する追加のメタデータを提供します。 有効な値は、
|
|
|
Azure OpenAI Serviceのデプロイ済モデルの名前。 名前には、英数字、アンダースコア(_)およびハイフン(-)のみを使用できます。 名前の末尾にアンダースコア(_)またはハイフン(-)は使用できません。 |
|
|
デプロイされたAzure OpenAI埋込みモデルの名前。 名前に使用できるのは、英数字、アンダースコアおよびハイフンのみです。 名前の先頭と末尾をハイフンまたはアンダースコアにすることはできません。 |
|
|
Azure OpenAI Serviceリソースの名前。 リソース名には英数字とハイフンのみを含めることができ、ハイフンで開始または終了することはできません。 |
|
|
文字列値またはテキスト値を含む列に対して、大/小文字を区別しないSQLを生成するようSelect AIにLLMに指示するかどうかを指定します。 サポートされる値は次のとおりです。
デフォルト値は |
|
|
AIを使用した自然言語プロンプトの翻訳に使用されるメタデータに表および列のコメントが含まれます。
|
|
|
LLMに送信されるメタデータに主キーや外部キーなどの参照整合性制約を含めるかどうかを管理します。 有効な値は、
|
|
|
プロファイルで会話履歴が有効かどうかを示す |
|
|
AIプロバイダAPIにアクセスするための資格証明の名前。 bearerトークンを使用する資格証明は、ユーザー名としてプロバイダ名を使用し、パスワードとしてbearerトークンを使用して作成できます。 Vaultシークレット資格証明もサポートされています。 プリンシパル認証(Azureサービス・プリンシパルなど)もサポートされています。 構成方法の詳細は、「Azureサービス・プリンシパルを使用したAzureリソースへのアクセス」を参照してください。 これは必須属性です。 「CREATE_CREDENTIALプロシージャ」を参照してください。 |
|
|
AIプロファイルで定義された埋込みモデル。 埋込みモデルのデフォルト値がサポートされているAIプロバイダを次に示します:
ノート:
|
|
|
オブジェクト・リストの対象となる表のみを使用するSQLを生成するようにLLMを制限するかどうかを指定します。 サポートされる値は次のとおりです。
値は大文字と小文字が区別されません。 デフォルト値は |
|
|
生成ごとに予測するトークンの数を示します。 デフォルトは1024です。 詳細は、「トークンとトークン化」を参照してください。 |
|
|
レスポンスの生成に使用されるAIモデルの名前。 「AIプロバイダとLLMの選択」を参照し、モデル名を指定します。 ノート:
|
|
|
SQLへの自然言語変換に適格な所有者名およびオブジェクト名を指定するJSONオブジェクトの配列。 特定のユーザーのすべてのオブジェクトを含めるには、nameを省略し、JSONオブジェクトでownerキーのみを指定します。 次のタイプのオブジェクトを使用できます:
自然言語からSQLへの変換では、オブジェクト名、オブジェクト所有者、オブジェクト列およびコメントがHTTPSリクエストを使用してAIプロバイダに送信されます。 オブジェクト・リストに機密オブジェクト名、列名またはコメントを含むオブジェクトを指定しないでください。 AIプロバイダは、翻訳リクエストで許可されるメタデータのサイズに制限がある場合があります。 アプリケーション・ユーザーによる自然言語プロンプトに適したオブジェクトのリストを制限することを検討してください。 書式:
「OCIデータ・カタログまたはAWS Glue」の同期を使用して作成された外部表は、オブジェクト・リストを使用することもできます。 これは、中央のデータ・カタログでメタデータを管理し、AIを使用して自然言語プロンプトを翻訳するためにメタデータを直接使用するのに役立ちます。 |
|
|
最も関連性の高い表またはすべての表のメタデータをLLMに送信するかどうかを指定します。 サポートされている値は次のとおりです。
|
|
|
APIがデータの送受信を期待する形式を指定します。 テキスト・レスポンスを生成するには、この属性を使用します。 この属性は、専用AIクラスタ内のOCI生成AIチャット・モデルに適用されます。 サポートされている値は次のとおりです。
ノート: 「OCI生成AIチャット・モデル」にこの属性を使用 |
|
|
OCI生成AIサービスのコール時にアクセスを許可するコンパートメントのOCIDを指定します。 コンパートメントIDには、英数字、ハイフンおよびドットを含めることができます。 デフォルトは、PDBのコンパートメントIDです。 |
|
|
この属性は、Oracle専用AIホスティング・クラスタのエンドポイントOCIDを示します。 エンドポイントIDには、英数字、ハイフンおよびドットを含めることができます。 エンドポイントOCIDを検索するには、「生成AIでのエンドポイントの詳細の取得」を参照してください。 Oracle専用AIクラスタを使用する場合は、ホスティング・クラスタのエンドポイントOCIDを指定する必要があります。 デフォルトでは、エンドポイントIDは空で、モデルは共有インフラストラクチャでオンデマンドです。 |
|
|
この属性は、指定されたモデルのランタイム・タイプを示します。 この属性は、専用AIクラスタ内のOCIテキストの生成モデルに適用されます。 許可される値はすべて、OCI生成AI runtimeTypeにあります。 「LlmInferenceRequestリファレンス」を参照してください。 サポートされる値は次のとおりです。
ノート: この属性は非推奨です。oci_apiformatを使用します。
|
|
|
AIプロファイルのAIプロバイダ。 サポートされているプロバイダ:
これは必須属性です。 |
|
|
OpenAI互換プロバイダのAPIエンドポイントを指定します。 この属性は、OpenAI互換プロバイダにのみ固有です。 例: |
|
|
この属性は、使用する生成AIクラスタのロケーションを示します。 リージョンには、英数字とハイフン文字を含めることができます。
AWSのデフォルト・リージョンは デフォルトのリージョンは |
|
|
生成されたテキストは、最も早い停止シーケンスの先頭で終了します。 シーケンスはテキストに組み込まれます。 属性値は、JSON形式の文字列値の有効な配列である必要があります。 |
|
|
「テキストの生成」モデルからのサンプリングにはランダム性が組み込まれているため、「生成」をクリックするたびに同じプロンプトで異なる出力が生成される場合があります。 温度は、ランダム性の度合いを調整するために使用される負でない浮動小数点数です。 温度が低いほど、ランダムな世代が少なくなります。 詳細は、「温度」を参照してください。 このパラメータは、サポートされているすべてのサービス・プロバイダに適用されます。 |
|
|
ベクトル索引の名前。 ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。 ベクトル・ストア名の最大長は125文字です。 |
|
|
翻訳のためにプロバイダに送信される入力テキストの言語。 プロバイダでサポートされている完全な言語名または言語コード(language_code)を受け入れます。 値は大文字と小文字が区別されません。
|
|
|
プロバイダがテキストを翻訳する言語。 プロバイダでサポートされている完全な言語名または言語コード( |
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,
"source_language": "en",
"target_language": "french"
}');
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
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
AIプロファイルの名前 |
|
|
このパラメータのデフォルト値は |
例
BEGIN
DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/使用上のノート
AIプロファイルが存在しない場合は、forceを使用してプロファイルを削除し、エラーを無視します。
ENABLE_PROFILEプロシージャ
このプロシージャは、ユーザーが指定したAIプロファイルを有効にします。 このプロシージャは、AIプロファイルのステータスをENABLEDに変更します。
構文
DBMS_CLOUD_AI.ENABLE_PROFILE(
profile_name IN VARCHAR2
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
有効にする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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
AIプロファイルの名前。 このパラメータは必須です。 |
例
BEGIN
DBMS_CLOUD_AI.DISABLE_PROFILE(
profile_name => 'OPENAI'
);
END;
/
FEEDBACKプロシージャ
構文
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'
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
使用するAIプロファイルを指定します。 これは必須パラメータです。 |
|
|
SQL問合せを識別します。 1つの これは必須パラメータです。 |
|
|
SQL問合せの全文が含まれます。 これは必須パラメータです。 |
|
|
フィードバックのタイプを指定します。 使用可能な値は次のとおりです。
ノート: DBMS_CLOUD_AI.FEEDBACKプロシージャを使用すると、sql_idまたはsql_textを指定できるため、feedback_typeが必要になりますが、feedbackアクションを使用している場合は、LLMによってフィードバック・タイプが動的に決定または解釈されます。
これは、 |
|
|
ユーザーが期待する正しい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のベクトル・インデックス
<profile_name>_FEEDBACK_VECINDEXという名前のデフォルトのベクトル索引がデフォルト属性で作成されます。
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEXプロシージャを使用して、similarity_thresholdやmatch_limitなどの属性を変更できます。 この索引は、提供されたフィードバックに基づいて、将来生成されるSQLを絞り込むのに役立ちます。 このテーブルは、関連するAIプロファイルが削除されると削除されます。 <profile_name>_FEEDBACK_VECINDEXを削除することもできます。 実行すると、Select AIでは、runsql、showsqlおよびexplainsqlアクションのヒントとしてフィードバックが使用されなくなります。 ただし、Select AIフィードバック機能を使用して新しいフィードバックを送信すると、Select AIによって新しいフィードバック・ベクトル索引が自動的に作成されます。
ノート:
feedbackのmatch_limitのデフォルト値は3です。
ベクトル表名
表<profile_name>_FEEDBACK_VECINDEX$VECTABには、ユーザー・フィードバックのベクトル表現(埋込み)と、Select AIが時間の経過とともにSQL生成を改善するために使用する他のパラメータが含まれています。
パラメータ
| 列 | 説明 |
|---|---|
|
|
FEEDBACKプロシージャに従ってJSONオブジェクト属性を含めます。 |
|
|
ユーザー・プロンプトが含まれます。 |
|
|
ユーザー・プロンプトのベクトル表現(埋込み)が含まれます。 |
例
次の例は、自動生成されたベクトル索引表を使用して、フィードバックを問い合せて提供する方法を示しています。
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プロファイルの属性を設定または変更できるのは、所有者だけです。 サポートされている属性のリストは、「プロファイル属性」を参照してください。
| パラメータ | 説明 |
|---|---|
|
|
属性を設定するAIプロファイルの名前。 このパラメータは必須です。 |
|
|
AIプロファイル属性の名前 このパラメータは必須です。 |
|
|
プロファイル属性の値。 値は デフォルト値は「NULL」です。 |
例
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE(
profile_name => 'OPENAI',
attribute_name => 'credential_name',
attribute_value => 'OPENAI_CRED_NEW'
);
END;
/
次の例では、attribute_valueとしてNUMBER型を受け入れます。
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE(
profile_name => 'OCI_PROFILE',
attribute_name => 'temperature',
attribute_value => 0.5
);
END;
/
次の例では、attribute_valueとしてBOOLEAN型を受け入れます。
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE(
profile_name => 'OCI_PROFILE',
attribute_name => 'comments',
attribute_value => 'true'
);
END;
/
次の例では、attribute_valueとしてVARCHAR2型を受け入れます。
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE(
profile_name => 'OCI_PROFILE',
attribute_name => 'model',
attribute_value => 'meta.llama-3.3-70b-instruct'
);
END;
/
GENERATEファンクション
showsql、runsql、explainsql、narrate、summarize、chatなどのサポートされているアクションを実行できます。 デフォルトのアクションは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;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
AIを使用して翻訳する自然言語プロンプト。 プロンプトには、プレフィクスとして このパラメータは必須です。 |
|
|
AIプロファイルの名前。 AIプロファイルが デフォルト値は「NULL」です。 次の条件が適用されます。
ノート: データベース・アクションの場合は、DBMS_CLOUD_AI.GENERATEにprofile_name引数を指定するか、PL/SQLスクリプトとして2つのステップを実行できます: DBMS_CLOUD_AI.SET_PROFILEおよびDBMS_CLOUD_AI.GENERATE。
|
action |
AIを使用して自然プロンプトを翻訳するための処理。 サポートされているアクションは次のとおりです。
アクションの説明は、「AIキーワードを使用したプロンプトの入力」に含まれています。 |
attributes |
JSON形式で属性を指定して、特定のAIプロファイル属性をオーバーライドします。 詳細は、「プロファイル属性」を参照してください。 |
params |
会話パラメータを指定します。 CREATE_CONVERSATION属性を参照してください。 次のパラメータのみを指定できます。
|
例
例: Select AIアクションでのGENERATE関数の使用
次の例は、DBMS_CLOUD_AI.GENERATEファンクションで使用できるrunsql、showsql、explainsql、narrate、summarize、translateおよび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.次の例は、translateアクションを示しています。
translateアクションの使用方法を示しています。
ノート:
AIプロファイルでターゲット言語を指定する必要があります。SELECT DBMS_CLOUD_AI.GENERATE('select ai translate text to be translated')
FROM dual;
次の例は、DBMS_CLOUD_AI.GENERATE関数にtarget_languageおよびsource_languageとともに指定されたtranslateアクションを示しています。 この例では、生成AI翻訳を使用します。 入力テキストthis is a document(英語)(source_language: "en")は、フランス語(target_language: "fr")に変換されます。
DECLARE
l_attributes clob := '{"target_language": "fr", "source_language": "en"}';
output clob;
BEGIN
output := DBMS_CLOUD_AI.GENERATE(
prompt => 'this is a document',
profile_name => 'oci_translate',
action => 'translate',
attributes => l_attributes
);
プロシージャでDBMS_CLOUD_AI.GENERATEを使用して、ファンクションを実行できます。 次の例では、入力パラメータとしてai_prompt、profile_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;次の例は、会話設定で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,
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
現在のセッションの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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
JSON形式の会話の属性。 詳細は、CREATE_CONVERSATION属性を参照してください。 デフォルト値は「NULL」です。 |
例
次の例は、カスタマイズなしでの会話の作成を示しています。
EXEC DBMS_CLOUD_AI.CREATE_COVERSATION;結果:
PL/SQL procedure successfully completed.次の例は、title、description、retention_days、conversation_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_IDやDBMS_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;パラメータ
| パラメータ | 説明 |
|---|---|
|
|
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ファンクションを使用して、title、retention_days、conversation_lengthなどの属性を指定する方法を示しています。
SELECT DBMS_CLOUD_AI.CREATE_COVERSATION(
attributes => '{"title":"This is a test conversation",
"retention_days":7,
"conversation_length":20}')
FROM DUAL;CREATE_CONVERSATION属性
属性
| 属性名 | デフォルト値 | 説明 |
|---|---|---|
|
|
新規対話 |
会話のユーザー割当名。 指定しない場合、Select AIでは、会話がプロンプトで最初に使用されるときにLLMが生成されます。 |
|
|
NULL |
会話の目的またはコンテキストを要約したユーザー定義の摘要を提供します。 提供されていない場合、LLMは、会話がプロンプトで最初に使用されたときに生成し、5回目に使用して再度更新して、より正確で関連性の高い情報を含めます。 |
|
|
7 |
会話履歴を保持する日数を指定します。 これは、作成日からデータベースに格納されます。 値を省略すると、デフォルト値の7に設定されます。 0に設定すると、会話は |
|
|
NULL |
現在のプロンプトに含める最新のプロンプトおよびレスポンスの数を指定します。 最大許容値は999です。 この値は、
DBMS_CLOUD_AI.GENERATE関数でconversation_lengthパラメータを指定するか、SELECT AI <ACTION> <PROMPT>を使用してAIプロファイルで設定することでオーバーライドできます。 conversation_lengthに次の優先順位ルールを適用します。
どれも |
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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
会話に割り当てられた一意の番号。 これは必須パラメータです。 |
|
|
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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
現在のセッションで会話に割り当てられた一意の番号。 このパラメータは必須です。 |
例
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を返します。 会話を削除すると、セッションでもその会話がクリアされます。CLEAR_CONVERSATION_ID Procedureを参照してください。
構文
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
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
会話のプロンプトに割り当てられた一意の番号。 プロンプトIDは、 これは必須パラメータです。 |
|
|
このパラメータのデフォルト値は |
例
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
);パラメータ
| パラメータ | 説明 |
|---|---|
|
|
会話に割り当てられた一意の番号。 これは必須パラメータです。 |
|
|
このパラメータのデフォルト値は |
例
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;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
要約するテキストを指定します。 これは必須パラメータではありません。 |
|
|
オブジェクト・ストアでの認証に使用される資格証明オブジェクトを識別します。 この資格証明は、
DBMS_CLOUD.CREATE_CREDENTIALを使用して作成する必要があります。
ノート: このパラメータは、location_uriを指定する場合にのみ使用します。
|
|
|
テキストが格納されるURI、またはローカル・ファイルへのパスを指定します。 たとえば: オブジェクト・ストレージ: ローカル・ファイル: |
|
|
使用するAIプロファイルを指定します。 デフォルト値は「NULL」です。 |
|
|
要約をガイドまたはカスタマイズするための自然言語プロンプトを提供します。 サマリー・パラメータ以外の追加の指示を含めることができます。 たとえば、サマリーは「記事のサマリー: '''」で始まる必要があります このパラメータは必須ではありません。 |
params |
要約パラメータを定義します。 「SUMMARIZEパラメータ」を参照してください。 |
例
調査するには、例: Select AI Summarizeを参照してください。
SUMMARIZEのパラメータ
属性
| 属性名 | デフォルト値 | 説明 |
|---|---|---|
|
|
0 |
生成されたサマリーに含まれる単語の最小おおよその数を指定します。 ノート: このパラメータは厳密な制限ではなくガイドラインとして機能します。サマリーの実際の長さは、提供されたコンテンツおよびモデルの解釈によって異なる場合があります。 |
|
|
200 |
生成されたサマリーに含まれる単語の概算最大数を指定します。
ノート: このパラメータは厳密な制限ではなくガイドラインとして機能し、サマリーの実際の長さは、提供されるコンテンツおよびモデルの解釈によって異なる場合があります。 |
|
|
段落 |
サマリーの書式スタイルを指定します。 使用可能なサマリー・フォーマット・オプションは次のとおりです。
|
|
|
map_reduce |
|
|
|
low |
サマリーが入力の元の表現にどの程度従っているかを決定します。 モデルが抽出する度合いと書き換えの度合いを制御します。 オプションは次のとおりです。
ノート: この設定は、モデルの集計動作のガイダンスとして機能し、厳密なルールは強制されません。 サマリーの実際のスタイルおよび表現は、入力コンテンツおよびモデルの決定に基づいて異なる場合があります。 |
TRANSLATEファンクション
target_languageに変換できます。
source_languageおよびtarget_languageパラメータをファンクションに指定するか、ユーザーのAIプロファイルから取得できます。 AIプロファイルにsource_language属性が含まれていない場合、生成AIプロバイダは入力言語を自動的に検出します。 target_language属性がない場合、Select AIはエラーを返します。
構文
DBMS_CLOUD_AI.TRANSLATE(
profile_name IN VARCHAR2,
text IN CLOB,
source_language IN VARCHAR2 DEFAULT NULL,
target_language IN VARCHAR2 DEFAULT NULL
) RETURN CLOB;
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
使用するAIプロファイルを指定します。 これは必須パラメータではありません。 |
|
|
翻訳するテキストを指定します。 これは必須パラメータです。 |
|
|
入力テキストの言語 |
|
|
テキストの翻訳先の言語。 |
例
詳細は、「例: Select AI Translate」を参照してください。
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
);
表データまたはベクトル検索ドキュメントをLLMに送信しない場合、管理者権限を持つユーザーは、特定のデータベースのすべてのユーザーに対してそのようなアクセスを無効にできます。 これにより、narrateアクションが無効になります。
パラメータ
| パラメータ | 必須 | 説明 |
|---|---|---|
|
|
あり |
必要なLLMサービス情報を含むAIプロファイル。 これは、「CREATE_PROFILEプロシージャ」で作成できます。 |
|
|
あり | 合成データを移入する表名を指定します。
|
owner_name |
いいえ |
参照オブジェクトを所有するデータベース・ユーザーを指定します。 特定の所有者を指定しない場合、プロシージャはデフォルトで、その所有者を実行しているユーザーのスキーマを使用します。 |
record_count |
いいえ |
合成的に生成されるレコードの数。 |
|
|
いいえ | ユーザーが合成データを生成するために記述できる追加情報。 たとえば、release_date列を含むMOVIEという表のレコードを生成する場合、user_promptは次のようになります:
映画のリリース日は2019年にする必要があります |
|
|
いいえ |
APIの動作を変更するために、JSONオブジェクト文字列形式で提供されるオプションの属性。 「オプションのパラメータ」を参照してください。 |
|
|
あり | このパラメータは、複数の表に対して合成データを生成する場合に使用します。 このパラメータは、表オブジェクト情報とその引数を取り、1つの表に指定されているものと同じ引数を含みます。 「object_listパラメータ」を参照してください。 |
オプション・パラメータ
| パラメータ | 値データ型 | 値 | 説明 |
|---|---|---|---|
|
|
数値 |
|
データ生成のLLMをガイドするサンプルとして使用する表の行数を指定します。 値0は、サンプル行が使用されないことを意味します。 デフォルト値は |
|
|
Boolean |
|
表統計情報の使用を有効または無効にします。 デフォルト値は、 |
|
|
String |
有効な値:
|
合成データを生成するためにLLMに送信されるパラレル・リクエストの数を定義する優先度値を割り当てます。 優先度が高いタスクは、より多くのデータベース・リソースを消費し、より高速に完了します。 デフォルト値は
合成データ生成に使用される同時並列プロセスの最大数は64に制限されています。 |
|
|
Boolean |
|
データ生成をガイドするためにLLMへのコメントの送信を有効または無効にします。 デフォルト値は、 |
object_listパラメータ
| パラメータ | 値データ型 | 必須 | 説明 |
|---|---|---|---|
|
|
String |
あり |
参照されるオブジェクトを所有するデータベース・ユーザーを指定します。 特定の所有者を指定しない場合、プロシージャはデフォルトで、その所有者を実行しているユーザーのスキーマを使用します。 |
|
|
String |
いいえ |
合成データを移入する表名を指定します。 表オブジェクトに対するSELECTおよびINSERT権限は、それを使用するユーザーに必要です。表が空か、レコードが含まれています。
|
|
|
数値 |
いいえ |
合成的に生成されるレコードの数。 0より大きい数値を指定してください。
|
|
|
数値 |
いいえ |
合成的に生成されるレコード数の割合。 0より大きい数値を指定してください。 メタデータ・クローン・データベースでは、統計を含む表メタデータが保持され、
record_count_percentageパラメータを使用する場合、表の最終レコード数は、次のように計算されます:
|
|
|
String | いいえ | 「パラメータ」の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
); パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ベクトル索引の名前。 ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。 ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
|
|
JSONのベクトル索引のカスタム属性。 構成可能なパラメータのリストを確認するには、「ベクトル索引属性」を参照してください。 デフォルト値は「NULL」です。 |
status |
ベクトル索引のステータス。 可能な値は次のとおりです:
デフォルトの値は「無効」です。 |
|
|
ベクトル索引の説明。 デフォルト値は「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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ベクトル索引の名前。 ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。 ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
|
|
ベクトル索引オブジェクトとともに顧客のベクトル・ストアとベクトル索引の両方を削除するかどうかを示します。 使用可能な値は次のとおりです。
デフォルト値は |
force |
ベクトル索引が存在しない場合に発生するエラーを無視するかどうかを示します。 使用可能な値は次のとおりです。
デフォルト値は |
例
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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ベクトル索引の名前。 ベクトル索引名は、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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ベクトル索引の名前。 ベクトル索引名は、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
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ベクトル索引の名前。 ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。 ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
|
|
次の属性は変更できません:
これは必須パラメータです。 |
attribute_value |
カスタム デフォルト値は「NULL」です。 |
例
BEGIN
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attribute_name => 'object_storage_credential_name',
attribute_value => 'NEW_CRED'
);
END;
/
次の例では、attribute_valueとしてNUMBER型を受け入れます。
BEGIN
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attribute_name => 'match_limit',
attribute_value => 10
);
END;
/
次の例では、attribute_valueとしてVARCHAR2型を受け入れます。
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 (デフォルト)
|
いいえ |
隣接するテキストのチャンク間で重複する文字の量を指定します。 この属性は、セグメント間の重複を許可することで、テキスト処理のコンテキストの継続性と正確性を確保するのに役立ちます。これにより、チャンク境界でのコンテキスト情報の損失を防ぐことができます。 |
|
|
該当なし | あり |
このパラメータは、ソース・ファイルのURIまたはディレクトリとソース・ファイルを指定します。 ワイルドカード・パターンは、ソース・ファイルのURIとディレクトリの両方でサポートされています。 クラウドのソース・ファイルURI: バケットまたはサブフォルダのソース・ファイルURIを指定できます。 ワイルドカードを使用して、サブフォルダまたはファイル名を指定できます。 文字" ワイルドカードの使用例: location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv URIの書式は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「DBMS_CLOUD URIの書式」を参照してください。 ディレクトリ: 1つのディレクトリとファイル名を指定できます。 ディレクトリを指定する形式は、 ワイルドカードは、ディレクトリ内のファイル名を指定する場合にのみ使用できます。 文字 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。 例: 引用符を含めるには、2つの引用符を使用します。 たとえば: このロケーションのファイルは、PDF、DOC、JSON、XML、HTMLなどの形式のドキュメントです。 「サポートされているドキュメント形式」を参照してください。 |
|
|
5 (デフォルト)
|
いいえ |
ベクトル検索問合せで返される結果の最大数を指定し、出力サイズを制御して、データ取得操作の効率を向上させます。 |
|
|
該当なし | あり |
オブジェクト・ストレージにアクセスするための資格証明の名前を指定します。 |
|
|
<vector_index_name>$VECPIPELINE |
いいえ |
ベクトル索引データ・ロード・パイプラインの名前を指定します。 この属性はベクトル索引に対して自動的に設定されるため、指定や変更はできません。 パイプライン名を使用すると、「パイプラインのモニターおよびトラブルシューティング」を使用してベクトル索引データ・ロードをモニターできます。 |
|
|
該当なし | あり |
ソース・データおよびユーザー・プロンプトの埋込みに使用されるAIプロファイルの名前。 |
|
|
1440 分(デフォルト)
|
いいえ |
ベクトル・ストア内のデータの更新間隔。 単位は分です。 |
|
|
0 (デフォルト)
|
いいえ |
2つの品目が一致とみなされるために必要な類似度の最小レベルを定義します。関連性を確保するために、照合アルゴリズムの結果をフィルタリングするのに役立ちます。 |
|
|
説明で指定された値の1つに対応する文字列。 |
いいえ |
データベース内のベクトルの比較に使用される距離計算のタイプを指定し、アイテム間の類似度を定量化する方法を決定します。 Oracle 23aiの有効な値:
|
|
|
|
あり |
ベクトル・ストアとして管理および動作するプロバイダ名を指定します。 |
|
|
該当なし | いいえ |
ベクトル・ストア内の各ベクトルの要素数を指定し、データ表現のサイズと構造を定義します。 |
|
|
|
いいえ |
ベクトル埋込みおよびチャンク・データを格納する表またはコレクションの名前を指定します。 |
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のワイルドカード・パターン(*)を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;
/