DBMS_CLOUD_AIパッケージ
DBMS_CLOUD_AIパッケージは、Select AIとともに、SQL文を生成、実行および説明するための自然言語プロンプトの翻訳を容易にして構成します。また、LLMとのチャットなど、検索拡張生成および自然言語ベースの相互作用も可能です。
前提条件
開発者は、Oracle Public Cloud、MulticloudまたはExadata Cloud@CustomerにデプロイされたAutonomous AI DatabaseでDBMS_CLOUDプロシージャを使用できます。
デプロイメントの選択に応じて、DBMS_CLOUDプロシージャをAmazon S3、Azure Blob StorageおよびGoogle Cloud Storageサービス・プロバイダで使用するには、次の前提条件を満たす必要があります。
アウトバウンド接続は、次に説明するようにフリート管理者がNATゲートウェイを使用して構成されている必要があります。
-
Oracle Cloud InfrastructureドキュメントのNAT Gatewayの作成の手順に従って、Autonomous AI Databaseリソースが存在しているVirtual Cloud Network (VCN)にNAT Gatewayを作成します。
-
NATゲートウェイを作成したら、Autonomous AI Databaseリソースが存在する各サブネット(VCN内)にルート・ルールおよびエグレス・セキュリティ・ルールを追加して、これらのリソースがゲートウェイを使用してAzure ADインスタンスから公開キーを取得できるようにします:
-
サブネットの「サブネットの詳細」ページに移動します。
-
「サブネット情報」タブで、サブネットの「ルート表」の名前をクリックして、その「ルート表の詳細」ページを表示します。
-
既存のルート・ルールの表では、次の特性を持つルールがすでに存在するかどうかを確認します:
-
宛先: 0.0.0.0/0
-
ターゲット・タイプ: NAT Gateway
-
ターゲット: VCN内に作成したNATゲートウェイの名前
そのようなルールが存在しない場合は、「ルート・ルールの追加」をクリックし、これらの特性を持つルート・ルールを追加します。
-
-
サブネットの「サブネットの詳細」ページに戻ります。
-
サブネットの「セキュリティ・リスト」表で、サブネット セキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。
-
サイド・メニュー内の「リソース」で、「エグレス・ルール」をクリックします。
-
既存のエグレス・ルールの表では、次の特性を持つルールがすでに存在するかどうかを確認します:
-
宛先タイプ:CIDR
-
宛先:0.0.0.0/0
-
IPプロトコル:TCP
-
ソース・ポート範囲:443
-
宛先ポート範囲:すべて
そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。
-
-
ご使用の環境のHTTPプロキシ設定では、データベースがクラウド・サービス・プロバイダにアクセスできるようにする必要があります。
これらの設定は、コンソールを使用したExadata Database Service on Cloud@Customerのプロビジョニングの説明に従って、Exadata Cloud@Customerインフラストラクチャの作成時にフリート管理者によって定義されます。
ノート: HTTPプロキシを含むネットワーク構成は、Exadataインフラストラクチャが「アクティブ化が必要」状態になるまで編集できます。アクティブ化した後は、これらの設定を編集できません。
すでにプロビジョニングされているExadataインフラストラクチャのHTTPプロキシを設定するには、My Oracle Supportでサービス・リクエスト(SR)が必要です。詳細は、My Oracle Supportでのサービス・リクエストの作成を参照してください。
DBMS_CLOUD_AIサブプログラムの要約
この項では、Autonomous AI Databaseで提供されるDBMS_CLOUD_AIサブプログラムについて説明します。
| サブプログラム | 説明 |
|---|---|
| CREATE_PROFILEプロシージャ | このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。 |
| プロファイル属性 | 構成可能なAIプロファイル属性を提供します。 |
| DROP_PROFILEプロシージャ | このプロシージャは、既存のAIプロファイルを削除します。 |
| ENABLE_PROFILEプロシージャ | この手順により、AIプロファイルを現在のデータベースで使用できるようになります。 |
| DISABLE_PROFILEプロシージャ | このプロシージャは、現在のデータベースのAIプロファイルを無効にします。 |
| SET_ATTRIBUTEプロシージャ | このプロシージャは、AIプロファイル属性を設定します。 |
| SET_PROFILEプロシージャ | このプロシージャは、現在のデータベースのAIプロファイルを設定します。 |
| GENERATEファンクション | このファンクションは、AIを使用して変換するSQL文を生成します。 |
| GENERATE_DATAETIC_DATAファンクション | この関数は合成データを生成します。 |
| ENABLE_DATA_ACCESSプロシージャ | LLMへのデータの送信を有効にするには、この手順を使用します。 |
| DISABLE_DATA_ACCESSプロシージャ | LLMへのデータの送信を無効にするには、この手順を使用します。 |
| CREATE_VECTOR_INDEXプロシージャ | このプロシージャは、指定されたベクトル・データベースにベクトル索引を作成し、非同期スケジューラ・ジョブを使用してオブジェクト・ストアのデータを移入します。 |
| DROP_VECTOR_INDEXプロシージャ | このプロシージャは、ベクトル・ストア索引を削除します。通常、ベクトル・ストア索引オブジェクトを削除し、ベクトル・データベースを削除します。 |
| DISABLE_VECTOR_INDEXプロシージャ | このプロシージャは、現在のデータベース内のベクトル索引オブジェクトを無効にします。無効にすると、AIプロファイルはベクトルインデックスを使用できず、システムはデータをベクトルストアにロードしません。 |
| ENABLE_VECTOR_INDEXプロシージャ | このプロシージャは、以前に無効にしたベクトル索引オブジェクトを有効またはアクティブ化します。 |
| UPDATE_VECTOR_INDEXプロシージャ | このプロシージャは、ベクトル索引属性の指定値で既存のベクトル・ストア索引を更新します。 |
| ベクトル索引属性 | 構成可能なベクトル索引プロファイル属性を提供します。 |
| 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プロシージャ | このプロシージャは、会話全体とそのメタデータを削除します。 |
| FEEDBACKプロシージャ | Select AIにフィードバックを提供することで、クエリー生成の精度を向上させるには、この手順を使用します。 |
| FEEDBACKのベクトル索引 | これは、feedbackを初めて使用したときに作成されるデフォルトのベクトル索引です。 |
CREATE_PROFILEプロシージャ
このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。
構文
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name IN VARCHAR2,
attributes IN CLOB DEFAULT NULL,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
AIプロファイルの名前。プロファイル名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。プロファイル名の最大長は125文字です。 これは必須パラメータです。 |
attributes |
JSON形式のプロファイル属性。詳細は、AIのプロファイル属性を参照してください。 デフォルト値はNULLです。 |
status |
プロファイルのステータス。 デフォルト値はenableです。 |
description |
AIプロファイルの摘要。 デフォルト値はNULLです。 |
例
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OpenAI,
attributes => JSON_OBJECT('provider' value 'openai',
'credential_name' value 'openai_cred'),
description => 'AI profile to use OpenAI for SQL translation'
);
END;
/
プロファイル属性
AIプロファイルの属性は、AIプロファイルの動作を管理および構成するのに役立ちます。属性の中にはオプションであり、デフォルト値を持つものがあります。
| 属性名 | 説明 |
|---|---|
azure_deployment_name |
Azure OpenAIサービスのデプロイ済モデルの名前。名前に使用できるのは、英数字、アンダースコア文字(_)およびハイフン(-)のみです。名前の最後にアンダースコア(_)またはハイフン(-)を使用することはできません。azure_deployment_nameを取得する方法については、Azure OpenAIサービス・リソースの作成およびデプロイを参照してください。 |
azure_resource_name |
Azure OpenAIサービス・リソースの名前。リソース名には英数字およびハイフンのみを使用でき、ハイフンで開始または終了することはできません。azure_resource_nameを取得する方法については、Azure OpenAIサービス・リソースの作成およびデプロイを参照してください。 |
comments |
AIを使用した自然言語プロンプトの翻訳に使用されるメタデータに列コメントを含めます。 ノート: |
conversation |
プロファイルに対して会話履歴が有効かどうかを示すVARCHAR2属性。OpenAIおよび Azure OpenAIサービスのみが会話履歴をサポートします。有効な値は、trueまたはfalseです。デフォルト値はfalseです。値は大文字と小文字が区別されません。 |
credential_name |
AIプロバイダAPIにアクセスするための資格証明の名前。 Bearerトークンを使用する資格証明は、ユーザー名としてプロバイダ名を使用し、パスワードとしてBearerトークンを使用することで作成できます。 この属性は必須です。「CREATE_CREDENTIALプロシージャ」を参照してください。 |
embedding_model |
AIプロファイルで定義された埋込みモデル。次に、デフォルト値の埋込みモデルでサポートされるAIプロバイダを示します。
ノート: |
max_tokens |
生成ごとに予測するトークンの数を示します。デフォルトは1024です。詳細は、トークンとトークン化機能を参照してください。 |
model |
レスポンスを生成するために使用されるAIモデルの名前。 サポートされているモデル:
ノート: このパラメータは、Azure OpenAIサービス・ポータルでデプロイメントを作成するときにモデルが決定されるため、Azureには使用されません。 |
object_list |
SQLへの自然言語翻訳に適格な所有者名とオブジェクト名を指定するJSONオブジェクトの配列。特定のユーザーのすべてのオブジェクトを含めるには、"name"を省略し、JSONオブジェクトで"owner"キーのみを指定します。 自然言語からSQLへの変換の場合、オブジェクト名、オブジェクト所有者、オブジェクト列およびコメントは、HTTPSリクエストを使用してAIプロバイダに送信されます。オブジェクト・リストに機密オブジェクト名、列名またはコメントを含むオブジェクトを指定しないでください。 AIプロバイダは、変換リクエストで許可されるメタデータのサイズに制限がある場合があります。アプリケーション・ユーザーによる自然言語プロンプトに適したオブジェクトのリストを制限することを検討してください。 書式: |
oci_compartment_id |
OCI生成AIサービスのコール時にアクセスを許可されているコンパートメントのOCIDを指定します。コンパートメントIDには、英数字、ハイフンおよびドットを含めることができます。 デフォルトは、Autonomous AI DatabaseのコンパートメントIDです。 |
oci_endpoint_id |
この属性は、Oracle専用AIホスティング・クラスタのエンドポイントOCIDを示します。エンドポイントIDには、英数字、ハイフンおよびドットを含めることができます。エンドポイントOCIDを検索するには、生成AIでのエンドポイントの詳細の取得を参照してください。 Oracle専用AIクラスタを使用する場合は、ホスティング・クラスタのエンドポイントOCIDを指定する必要があります。 デフォルトでは、エンドポイントIDは空であり、モデルは共有インフラストラクチャ上でオンデマンドです。 |
oci_runtimetype |
この属性は、指定されたモデルのランタイム・タイプを示します。この属性は、 許可されるすべての値は、OCI Generative AI RuntimeTypeにあります。LlmInferenceRequestリファレンスを参照してください。 サポートされる値は次のとおりです。
|
provider |
AIプロファイルのAIプロバイダ。 サポートされているプロバイダ:
この属性は必須です。 |
region |
この属性は、使用する生成AIクラスタの場所を示します。リージョンには、英数字およびハイフン文字を含めることができます。 ノート: Oracle Generative AIクラスタは、シカゴ、フランクフルトおよびロンドン・リージョンで利用できます。「生成AIの事前トレーニング済基礎モデル」を参照(https://docs.oracle.com/en-us/iaas/Content/generative-ai/pretrained-models.htm#pretrained-models).) デフォルト・リージョンは`us-chicago-1`です。AWSのデフォルト・リージョンはus-east-1です。 |
stop_tokens |
生成されたテキストは、最も早い停止シーケンスの先頭で終了します。シーケンスはテキストに組み込まれます。属性値は、JSON形式の文字列値の有効な配列である必要があります。stop_tokensは、入力としてJSON配列を取ります。停止トークンまたは停止シーケンスについてさらに学習するには、OpenAIまたはCohereのドキュメントを参照してください。 |
temperature |
「テキストの生成」モデルからのサンプリングにはランダム性が組み込まれているため、「生成」をクリックするたびに同じプロンプトで異なる出力が生成される可能性があります。温度は、ランダム性の度合いを調整するために使用される負でない浮動小数点数です。温度が低いほど、ランダムな世代が少なくなります。詳細は、温度を参照してください。このパラメータは、サポートされているすべてのサービス・プロバイダに適用されます。 |
次の例は、プロバイダとしてCohereを使用し、カスタム・プロファイル属性を表示しています。
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'COHERE',
attributes =>
'{"provider": "cohere",
"credential_name": "COHERE_CRED",
"object_list": [{"owner": "ADB_USER"}],
"max_tokens":512,
"stop_tokens": [";"],
"model": "command-nightly",
"temperature": 0.5,
"comments": true
}');
END;
/
次の例は、OCI生成AIを使用したカスタム・プロファイル属性を示しています。
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'GENAI',
attributes => '{"provider": "oci",
"credential_name": "GENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "countries"},
{"owner": "SH", "name": "supplementary_demographics"},
{"owner": "SH", "name": "profits"},
{"owner": "SH", "name": "promotions"},
{"owner": "SH", "name": "products"}],
"oci_compartment_id": "ocid1.compartment.oc1...",
"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
"region": "us-chicago-1",
"model": "cohere.command-light",
"oci_runtimetype": "COHERE"
}');
END;
/
DROP_PROFILEプロシージャ
このプロシージャーは、既存のAIプロファイルを削除します。プロファイルが存在しない場合、プロシージャはエラーをスローします。
構文
DBMS_CLOUD_AI.DROP_PROFILE(
profile_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
AIプロファイルの名前 |
force |
このパラメータのデフォルト値は |
例
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
);
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
有効にするAIプロファイルの名前 このパラメータは必須です。 |
AIプロファイルを有効にする例
BEGIN
DBMS_CLOUD_AI.ENABLE_PROFILE(
profile_name => 'OPENAI'
);
END;
/
DISABLE_PROFILEプロシージャ
このプロシージャは、現在のデータベースのAIプロファイルを無効にします。このプロシージャによって、AIプロファイルのステータスがDISABLEDに変更されます。
構文
DBMS_CLOUD_AI.DISABLE_PROFILE(
profile_name IN VARCHAR2
);
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
AIプロファイルの名前。 このパラメータは必須です。 |
例
BEGIN
DBMS_CLOUD_AI.DISABLE_PROFILE(
profile_name => 'OPENAI'
);
END;
/
SET_ATTRIBUTEプロシージャ
この手順では、AIプロファイル属性を設定できます。
構文
DBMS_CLOUD_AI.SET_ATTRIBUTE(
profile_name IN VARCHAR2,
attribute_name IN VARCHAR2,
attribute_value IN CLOB
);
Parameters
AIプロファイルの属性を設定または変更できるのは、所有者だけです。サポートされている属性のリストは、「プロファイル属性」を参照してください。
| パラメータ | 説明 |
|---|---|
profile_name |
属性を設定するAIプロファイルの名前。 このパラメータは必須です。 |
attribute_name |
AIプロファイル属性の名前 このパラメータは必須です。 |
attribute_value |
プロファイル属性の値。 デフォルト値はNULLです。 |
例
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE(
profile_name => 'OPENAI',
attribute_name => 'credential_name',
attribute_value => 'OPENAI_CRED_NEW'
);
END;
/
SET_PROFILEプロシージャ
このプロシージャは、現在のセッションのAIプロファイルを設定します。
データベース・セッションのAIプロファイルを設定した後、接頭辞SELECT AIが付いたSQL文は自然言語プロンプトとみなされます。AI接頭辞で指定されたアクションに応じて、AIを使用してレスポンスが生成されます。AI接頭辞を使用するには、AIキーワードを使用したプロンプトの入力を参照してください。オプションで、プロファイル属性をオーバーライドしたり、JSON形式で指定することで属性を変更したりできます。属性の設定については、「SET_ATTRIBUTEプロシージャ」を参照してください。
AIプロファイルの所有者がセッションユーザーである場合にのみ、現在のセッションにAIプロファイルを設定できます。
特定のデータベース・ユーザーまたはデータベース内のすべてのユーザー・セッションのすべてのセッションにAIプロファイルを設定するには、特定のユーザーまたはデータベース全体のAFTER LOGONイベントにデータベース・イベント・トリガーを使用することを検討してください。詳細は、『Oracle Database 19cデータベースPL/SQL言語リファレンス』のCREATE TRIGGER文に関する項または『Oracle Database 26aiデータベースPL/SQL言語リファレンス』を参照してください。
構文
DBMS_CLOUD_AI.SET_PROFILE(
profile_name IN VARCHAR2,
);
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
現在のセッションのAIプロファイルの名前。 このパラメータは必須です。 |
例
BEGIN
DBMS_CLOUD_AI.SET_PROFILE(
profile_name => 'OPENAI'
);
END;
/
GENERATEファンクション
このファンクションは、ステートレス・データベース接続の使用時にAI変換を提供します。既存のAIプロファイルでは、この関数を使用して、サポートされているアクション(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;
Parameters
| パラメータ | 説明 |
|---|---|
prompt |
自然言語はAIを使用して翻訳します。 プロンプトには、接頭辞として このパラメータは必須です。 |
profile_name |
AIプロファイルの名前。 デフォルト値はNULLです。 次の条件が適用されます。
ノート: データベース・アクションの場合、 詳細は、コード・エディタでのSQL文の実行を参照してください。 |
action |
AIを使用して自然プロンプトを翻訳するための処理です。サポートされている処理には次のものが含まれます:
アクションの説明は、Use AI Keywords to Enter Promptsを参照してください。 |
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ファンクションで提供されるtranslateアクションと、target_languageおよびsource_languageを示しています。この例では、生成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
);
プロシージャでのGENERATE関数の使用
プロシージャで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;
GENERATE_DATAETIC_DATAファンクション
単一表、複数表または完全スキーマの合成データを生成するには、この手順を使用します。
単一表の合成データを生成する構文を次に示します。
構文
DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
profile_name IN VARCHAR2,
object_name IN DBMS_ID,
owner_name IN DBMS_ID,
record_count IN NUMBER,
user_prompt IN CLOB DEFAULT NULL,
params IN CLOB DEFAULT NULL
);
次に、複数の表の合成データを生成する構文を示します。
DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
profile_name IN VARCHAR2,
object_list IN CLOB,
params IN CLOB DEFAULT NULL
);
表データまたはベクトル検索ドキュメントをLLMに送信しない場合、管理者権限を持つユーザーは、指定されたデータベースのすべてのユーザーに対してこのようなアクセスを無効にできます。これにより、narrateアクションが無効になります。
Parameters
| パラメータ | 必須 | 説明 |
|---|---|---|
profile_name |
○ | 必要なLLMサービス情報を含むAIプロファイル。これは、CREATE_PROFILEプロシージャで作成できます。 |
object_name |
○ | 合成データを移入する表名を指定します。
|
owner_name |
× | 参照オブジェクトを所有するデータベース・ユーザーを指定します。特定の所有者を指定しない場合、プロシージャは、その所有者を実行するユーザーのスキーマをデフォルトで使用します。 |
record_count |
× | 合成的に生成されるレコードの数。 |
user_prompt |
× | 合成データを生成するためにユーザーが指定できる追加情報。たとえば、`release_date`列で`MOVIE`という名前の表のレコードを生成するには、`user_prompt`は次のようになります。 映画のリリース日は2019年である必要があります |
params |
× | APIの動作を変更するためにJSONオブジェクト文字列形式で提供されるオプションの属性。オプション・パラメータを参照してください。 |
object_list |
○ | このパラメータは、複数の表の合成データを生成する場合に使用します。このパラメータは、表オブジェクト情報とその引数を取り、単一の表に指定されているものと同じ引数を含みます。object_listのパラメータを参照してください。 |
オプションのパラメータ
| パラメータ | 値データ型 | Value | 説明 |
|---|---|---|---|
sample_rows |
数字 | 0 <= sample_rows <= 100 |
データ生成でLLMをガイドするサンプルとして使用する表の行数を指定します。 値0は、サンプル行が使用されないことを意味します。デフォルト値は |
table_statistics |
ブール |
|
表の統計情報の使用を有効化または無効化します。 デフォルト値は |
priority |
文字列 | 有効な値:
|
合成データを生成するためにLLMに送信されるパラレル・リクエストの数を定義する優先度値を割り当てます。優先度が高いタスクは、より多くのデータベース・リソースを消費し、より速く完了します。 デフォルト値は
合成データ生成に使用される同時パラレル・プロセスの最大数は64に制限されています。 |
comments |
ブール |
|
データ生成をガイドするためにLLMへのコメントの送信を有効または無効にします。 デフォルト値は |
object_listのパラメータ
| パラメータ | 値データ型 | 必須 | 説明 |
|---|---|---|---|
owner |
文字列 | ○ | 参照されるオブジェクトを所有するデータベース・ユーザーを指定します。特定の所有者を指定しない場合、プロシージャは、その所有者を実行するユーザーのスキーマをデフォルトで使用します。 |
name |
文字列 | × | 合成データを移入する表名を指定します。表オブジェクトを使用するユーザーには、表オブジェクトに対するSELECTおよびINSERT権限が必要です。表が空であるか、表内にレコードがあります。 |
record_count |
数字 | × | 合成的に生成されるレコードの数。0より大きい数値を指定してください。
|
record_count_percentage |
数字 | × | 合成的に生成されるレコード数の割合。0より大きい数値を指定してください。 統計を含む表メタデータが保持されるメタデータ・クローン・データベースの場合、
|
user_prompt |
文字列 | × | GENERATE_DATAETIC_DATAファンクションのパラメータのuser_promptと同じです。user_promptは、特定の表オブジェクトに関連付けられています。 |
例
次の例は、単一の表および複数の表の合成データを生成するための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;
/
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;
/
ENABLE_DATA_ACCESSプロシージャ
この手順では、適用可能な Select AI機能(デフォルトの動作)のデータをLLMに送信できます。管理者のみがこのプロシージャを実行できます。
この手順では、次の Select AI機能のデータアクセスを制御します。
-
narrateアクション -
検索拡張生成(RAG)
-
合成データ生成
構文
DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
Parameters
このプロシージャには、パラメータは必要ありません。
データ・アクセスを有効にする例
BEGIN
DBMS_CLOUD_AI.ENABLE_DATA_ACCESS();
END;
/
DISABLE_DATA_ACCESSプロシージャ
この手順では、適用可能な Select AI機能のLLMへのデータの送信を無効にします。管理者のみがこのプロシージャを実行できます。
この手順では、次の Select AI機能を制限します。
-
narrateアクション -
検索拡張生成(RAG)
-
合成データ生成
構文
DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
Parameters
このプロシージャには、パラメータは必要ありません。
データ・アクセスを無効にする例
BEGIN
DBMS_CLOUD_AI.DISABLE_DATA_ACCESS();
END;
/
CREATE_VECTOR_INDEXプロシージャ
このプロシージャは、指定されたベクトル・データベースにベクトル索引を作成し、非同期スケジューラ・ジョブを使用してオブジェクト・ストアのデータを移入します。
構文
PROCEDURE CREATE_VECTOR_INDEX(
index_name IN VARCHAR2,
attributes IN CLOB DEFAULT NULL,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);
Parameters
| パラメータ | 説明 |
|---|---|
index_name |
ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
attributes |
JSONのベクトル索引のカスタム属性。構成可能なパラメータのリストを表示するには、Vector Index Attributesを参照してください。 デフォルト値はNULLです。 |
status |
ベクトル索引のステータス。可能な値は次のとおりです:
デフォルトの値は「無効」です。 |
description |
ベクトル索引の説明。 デフォルト値はNULLです。 |
例
次の例では、ベクトル索引を作成し、属性をJSONパラメータとして構成する方法を示します。
BEGIN
DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(
index_name => 'MY_INDEX'
attributes => JSON_OBJECT(
'vector_db_provider' value 'oracle',
'vector_table_name' value 'oracle_mycollection',
'profile_name' value 'OCIGENAI',
'location' value
'https://objectstorage.us-phoenix-1.' ||
'oraclecloud.com/n/mynamespace/b/mybucket',
'object_store_credential_name' value 'OS_CRED',
'chunk_size' value 2048,
'chunk_overlap' value 256,
'refresh_rate' value 720)
);
END;
/
DROP_VECTOR_INDEXプロシージャ
このプロシージャは、ベクトル・ストア索引を削除します。通常、ベクトル・ストア索引オブジェクトを削除し、ベクトル・ストアを削除します。FALSEに設定すると、引数include_dataによって、ベクトル・ストアを保持している間のみベクトル・ストア索引オブジェクトが削除されます。
構文
PROCEDURE DROP_VECTOR_INDEX(
index_name IN VARCHAR2,
include_data IN BOOLEAN DEFAULT TRUE,
force IN BOOLEAN DEFAULT FALSE
);
Parameters
| パラメータ | 説明 |
|---|---|
index_name |
ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
include_data |
ベクトル索引オブジェクトとともに顧客のベクトル・ストアとベクトル索引の両方を削除するかどうかを示します。 可能な値:
デフォルト値は |
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
);
Parameters
| パラメータ | 説明 |
|---|---|
index_name |
ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
例
ベクトル索引は、ベクトル索引名を指定することで無効にできます。
BEGIN
DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(index_name => 'MY_INDEX');
END;
/
ENABLE_VECTOR_INDEXプロシージャ
このプロシージャは、以前に無効にしたベクトル索引オブジェクトを有効またはアクティブ化します。一般に、ベクトル索引を作成すると、デフォルトでは、AIプロファイルでそれを使用して索引付けおよび検索を実行できるように有効化されます。
有効にすると、ベクトル索引を使用すると、AIプロファイルは、オブジェクト・ストアからユーザーが指定したリフレッシュ率でベクトル・ストアに新しいデータをロードするために使用できます。refresh_rateパラメータは、JSONオブジェクト・リストを介して指定できます。JSON属性を構成するには、「ベクトル索引属性」を参照してください。
構文
DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(
index_name IN VARCHAR2
);
Parameters
| パラメータ | 説明 |
|---|---|
index_name |
ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
例
ベクトル索引を有効またはアクティブにするには、次のようにベクトル索引名を指定します。
BEGIN
DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(index_name => 'MY_INDEX');
END;
/
UPDATE_VECTOR_INDEXプロシージャ
このプロシージャは、ベクトル索引属性の指定値で既存のベクトル・ストア索引を更新します。
次のものを受け入れるために、オーバーロードされています。
-
様々なタイプの属性値。
-
ベクトル索引属性はJSONドキュメントとして、既存のベクトル・ストア索引の1つ以上の属性を、指定された属性名と値のペアで更新します。
構文
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name IN VARCHAR2,
attributes IN CLOB
);
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name IN VARCHAR2,
attribute_name IN VARCHAR2,
attribute_value IN VARCHAR2
);
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name IN VARCHAR2,
attribute_name IN VARCHAR2,
attribute_value IN CLOB DEFAULT NULL
);
Parameters
| パラメータ | 説明 |
|---|---|
index_name |
ベクトル索引の名前。ベクトル索引名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。ベクトル・ストア名の最大長は125文字です。 これは必須パラメータです。 |
attributes |
ベクトル索引属性をJSON形式で指定します。 これは必須パラメータです。 |
attribute_name |
次の属性は変更できません。
これは必須パラメータです。 |
attribute_value |
ユーザー指定のカスタム デフォルト値はNULLです。 |
ノート: attributesパラメータを使用して、attribute_nameと値のペアをJSON形式で指定するか、attribute_nameとattribute_valueのパラメータを一緒に指定してください。
例
BEGIN
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attribute_name => 'object_storage_credential_name',
attribute_value => 'NEW_CRED'
);
END;
/
次の例では、NUMBER型をattribute_valueとして受け入れます。
BEGIN
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attribute_name => 'match_limit',
attribute_value => 10
);
END;
/
次の例では、VARCHAR2型をattribute_valueとして受け入れます。
BEGIN
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name => 'MY_INDEX',
attribute_name => 'profile_name',
attribute_value => 'AI_PROF2'
);
END;
/
次の例では、JSON形式のattributesを受け入れます。
BEGIN
DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX(
index_name => 'MY_VECTOR_INDEX',
attributes => '{"match_limit": 10,
"refresh_rate": 30}'
);
END;
/
ベクトル索引属性
ベクトル索引の属性は、ベクトル索引の動作を管理および構成するのに役立ちます。必要に応じて、カスタム索引属性を追加できます。属性の中にはオプションであり、デフォルト値を持つものがあります。
属性
| 属性名 | Value | 必須 | 説明 |
|---|---|---|---|
chunk_size |
1024(デフォルト) |
× | 入力データをチャンクするテキスト・サイズ。 テキスト・データの場合、これは文字数を意味します。 |
chunk_overlap |
128(デフォルト) |
× | テキストの隣接するチャンク間の重複する文字の量を指定します。この属性は、セグメント間の重複を許可することで、コンテキストの継続性とテキスト処理の正確性を確保するために役立ちます。これにより、チャンク境界でコンテキスト情報が失われないようにできます。 |
location |
NA | ○ | このパラメータは、ソース・ファイルのURIまたはディレクトリとソース・ファイルを指定します。 ワイルドカード・パターンは、ソース・ファイルのURIとディレクトリの両方でサポートされています。 クラウドのソース・ファイルURI: バケットまたはサブフォルダのソース・ファイルURIを指定できます。ワイルドカードを使用して、サブフォルダまたはファイル名を指定できます。文字" ワイルドカードを使用した例: location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv URIのフォーマットは、使用中のクラウド・オブジェクト・ストレージ・サービスによって異なります。詳細は、「クラウド・オブジェクト・ストレージURIフォーマット」をご覧ください。 ディレクトリ: 1つのディレクトリとファイル名を指定できます。ディレクトリを指定する形式は、 ワイルドカードを使用して、ディレクトリ内のファイル名を指定できます。文字 大/小文字を区別するディレクトリ名を指定するには、二重引用符を使用します。例: 引用符文字を含めるには、2つの引用符を使用します。例: この場所のファイルは、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の有効な値:
|
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;
/
CREATE_CONVERSATIONプロシージャ
このプロシージャを使用すると、会話を作成し、プロシージャ内でconversation_idを自動的に設定できます。
ノート: DBMS_CLOUD_AI.CREATE_CONVERSATIONプロシージャを使用している場合は、プロシージャによって自動的に設定されるため、conversation_idの設定をスキップできます。
構文
DBMS_CLOUD_AI.CREATE_CONVERSATION(
attributes IN CLOB DEFAULT NULL
);
Parameters
| パラメータ | 説明 |
|---|---|
attributes |
JSON形式の会話の属性。詳細は、CREATE_CONVERSATION属性を参照してください。 デフォルト値はNULLです。 |
例
例: 会話の作成
次の例は、カスタマイズなしで会話を作成する方法を示しています。
EXEC DBMS_CLOUD_AI.CREATE_CONVERSATION;
例: カスタム属性を使用した会話の作成
次の例は、title、description、retention_days、conversation_lengthなどのカスタム・パラメータを使用した会話の作成を示しています。
-- 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;
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_CONVERSATIONプロシージャを使用している場合は、プロシージャによって自動的に設定されるため、conversation_idの設定をスキップできます。
構文
DBMS_CLOUD_AI.CREATE_CONVERSATION(
attributes IN CLOB DEFAULT NULL
) RETURN VARCHAR2;
Parameters
| パラメータ | 説明 |
|---|---|
attributes |
JSON形式の会話の属性。詳細は、CREATE_CONVERSATION属性を参照してください。 デフォルト値はNULLです。 |
例
例: 会話の作成
次の例は、DBMS_CLOUD_AI.CREATE_CONVERSATIONファンクションを使用して、カスタマイズなしで会話を作成する方法を示しています。
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION FROM DUAL;
結果:
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
例: カスタム属性を使用した会話の作成
次の例は、DBMS_CLOUD_AI.CREATE_CONVERSATIONファンクションを使用して、title、retention_days、conversation_lengthなどの属性を指定する方法を示しています。
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
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.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
);
Parameters
| パラメータ | 説明 |
|---|---|
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}');
SET_CONVERSATION_IDプロシージャ
このプロシージャは、現在の会話を指定されたIDに設定します。後続のプロンプトには、会話の構成済属性に基づく既存の会話プロンプトが含まれます。
構文
DBMS_CLOUD_AI.SET_CONVERSATION_ID(
conversation_id IN VARCHAR2
);
Parameters
| パラメータ | 説明 |
|---|---|
conversation_id |
現在のセッションで会話に割り当てられた一意の番号。 このパラメータは必須です。 |
例
EXEC DBMS_CLOUD_AI.SET_CONVERSATION_ID('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
GET_CONVERSATION_IDファンクション
このファンクションは、DBMS_CLOUD_AI.SET_CONVERSATION_IDプロシージャまたはDBMS_CLOUS_AI.CREATE_CONVERSATIONプロシージャを使用して、セッションで現在設定されている会話IDを戻します。会話を設定しなかった場合、関数はNULLを返します。会話を削除すると、その会話もセッション内でクリアされます。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
);
Parameters
| パラメータ | 説明 |
|---|---|
conversation_prompt_id |
会話のプロンプトに割り当てられた一意の番号。プロンプトIDを確認するには、 これは必須パラメータです。 |
force |
このパラメータのデフォルト値は |
例
EXEC DBMS_CLOUD_AI.DELETE_CONVERSATION_PROMPT('30C9DB6E-EA61-AFBA-E063-9C6D46644B92');
DROP_CONVERSATIONプロシージャ
このプロシージャは、会話とそれに関連付けられたすべてのプロンプトおよび関連付けられたレスポンスを削除します。削除すると、conversation_idは無効になります。セッションで設定されている間に会話が削除された場合、その会話は自動的にクリアされます。
構文
DBMS_CLOUD_AI.DROP_CONVERSATION(
conversation_id IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);
Parameters
| パラメータ | 説明 |
|---|---|
conversation_id |
会話に割り当てられた一意の番号。 これは必須パラメータです。 |
force |
このパラメータのデフォルト値は |
例
EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
結果:
PL/SQL procedure successfully completed.
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'
);
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
使用するAIプロファイルを指定します。 これは必須パラメータです。 |
sql_id |
SQL問合せを識別します。1つの これは必須パラメータです。 |
sql_text |
SQL問合せの全テキストが含まれます。 これは必須パラメータです。 |
feedback_type |
フィードバックの種類を指定します。選択可能な値は次のとおりです。
ノート: これは、 |
response |
ユーザーが期待する正しいSQL問合せ結果を表します。
|
feedback_content |
ユーザーの自然言語フィードバックを取得します。responseとともにこのパラメータを使用するオプションがあります。 |
operation |
実行する操作を指定します。指定できる値は次のとおりです。
|
例
例: 追加操作または削除操作を使用した生成済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_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生成を改善するために使用するその他のパラメータが含まれています。
Parameters
| 列 | 説明 |
|---|---|
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)
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;
Parameters
| パラメータ | 説明 |
|---|---|
content |
要約するテキストを指定します。 これは必須パラメータではありません。 |
credential_name |
オブジェクト・ストアでの認証に使用される資格証明オブジェクトを識別します。`DBMS_CLOUD.CREATE_CREDENTIAL`を使用して、この資格証明を作成する必要があります。 ノート: このパラメータは、`location_uri`を指定する場合にのみ使用します。 |
location_uri |
テキストが格納されるURIまたはローカル・ファイルへのパスを指定します。 たとえば: オブジェクト・ストレージ: ローカル・ファイル: |
profile_name |
使用するAIプロファイルを指定します。 デフォルト値はNULLです。 |
user_prompt |
要約をガイドまたはカスタマイズするための自然言語プロンプトを提供します。サマリー・パラメータ以外にも、追加の指示を含めることができます。 たとえば、サマリーは''The summary of the article is: '''で始まる必要があります このパラメータは必須ではありません。 |
params |
要約パラメータを定義します。「SUMMARIZEパラメータ」を参照してください。 |
例
詳細は、例: Select AI Summarizeを参照してください。
SUMMARIZEのパラメータ
これらの属性は、カスタム・パラメータを使用したサマリーの生成を管理します。属性の中にはオプションであり、デフォルト値を持つものがあります。
属性
| 属性名 | デフォルト値 | 説明 |
|---|---|---|
min_words |
0 | 生成されるサマリーに含まれる単語の概算最小数を指定します。 ノート: このパラメータは、厳密な制限ではなくガイドラインとして機能します。サマリーの実際の長さは、提供されているコンテンツおよびモデルの解釈によって異なる場合があります。 |
max_words |
200 | 生成されるサマリーに含まれる単語の概算最大数を指定します。 ノート: このパラメータは、厳密な制限ではなくガイドラインとして機能します。サマリーの実際の長さは、提供されているコンテンツおよびモデルの解釈によって異なる場合があります。 |
summary_style |
段落 | サマリーの書式スタイルを指定します。使用可能なサマリー・フォーマット・オプションは次のとおりです。
|
chunk_processing_method |
map_reduce |
LLMで処理できるトークン制限を超えるテキストは、管理可能なチャンクに分割する必要があります。このパラメータを使用すると、これらのチャンクの処理方法を選択できます。次のオプションを指定できます。
詳細は、Select AI Terminologyを参照してください。 |
extractiveness_level |
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;
Parameters
| パラメータ | 説明 |
|---|---|
profile_name |
使用するAIプロファイルを指定します。 これは必須パラメータではありません。 |
text |
翻訳するテキストを指定します。 これは必須パラメータです。 |
source_language |
入力テキストの言語 |
target_language |
テキストの翻訳先の言語。 |
例
詳細は、例: Select AI Translateを参照してください。