DBMS_CLOUD_AI 套裝程式
DBMS_CLOUD_AI 套裝程式 (搭配 Select AI) 可協助及設定自然語言提示的轉譯,以產生、執行及說明 SQL 敘述句。此外,支援檢索增強生成和自然語言互動,包括與 LLM 交談。
必備條件
身為開發人員,您可以將 DBMS_CLOUD 程序與部署在 Oracle Public Cloud、Multicloud 或 Exadata Cloud@Customer 上的 Autonomous AI 資料庫搭配使用。
視部署選項而定,必須符合下列先決條件,才能將 DBMS_CLOUD 程序與 Amazon S3、Azure Blob Storage 及 Google Cloud Storage 服務提供者搭配使用。
您的機組管理員必須使用 NAT 閘道設定輸出連線,如下所述:
-
請依照 Oracle Cloud Infrastructure 文件中 Create a NAT Gateway 的指示,在您自治式 AI 資料庫資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。
-
建立 NAT 閘道之後,請在自治式 AI 資料庫資源所在的每個子網路 (VCN 中) 新增路由規則和輸出安全規則,讓這些資源能夠使用閘道從您的 Azure AD 執行處理取得公開金鑰:
-
移至子網路的子網路詳細資訊頁面。
-
在子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
-
在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地:0.0.0.0/0
-
目標類型:NAT 閘道
-
目標:剛剛在 VCN 中建立的 NAT 閘道名稱
如果沒有這樣的規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。
-
-
返回子網路的子網路詳細資訊頁面。
-
在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
-
在側邊功能表的資源底下,按一下傳出規則。
-
在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地類型: CIDR
-
目的地:0.0.0.0/0
-
IP 協定: TCP
-
來源連接埠範圍:443
-
目的地連接埠範圍:全部
如果沒有這類規則,請按一下新增傳出規則,然後新增含有這些特性的傳出規則。
-
-
您環境中的 HTTP 代理主機設定值必須允許資料庫存取雲端服務提供者。
這些設定值是由機組管理員在建立 Exadata Cloud@Customer 基礎架構時所定義,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。
注意:只有在 Exadata 基礎架構處於需要啟用狀態時,才能編輯包含 HTTP 代理主機的網路組態。啟用之後,就無法編輯這些設定值。
若為已經佈建的 Exadata 基礎架構設定 HTTP 代理主機,在 My Oracle Support 中需要服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求,瞭解詳細資訊。
DBMS_CLOUD_AI 子程式摘要
本節涵蓋 Autonomous AI Database 提供的 DBMS_CLOUD_AI 子程式。
| 子程式 | 描述 |
|---|---|
| CREATE_PROFILE 程序 | 此程序會建立新的 AI 設定檔,用於將自然語言提示轉譯為 SQL 敘述句。 |
| 設定檔屬性 | 提供您可以設定的 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 程序 | 此程序會刪除整個對話及其描述資料。 |
| 意見回饋程序 | 透過此程序提供意見回饋給 Select AI,以提高查詢產生準確度。 |
| FEEDBACK 的向量索引 | 這是您第一次使用 feedback 時所建立的預設向量索引。 |
CREATE_PROFILE 程序
此程序會建立新的 AI 設定檔,將自然語言提示轉譯為 SQL 陳述式。
語法
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name IN VARCHAR2,
attributes IN CLOB DEFAULT NULL,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);
參數
| Parameter - 參數 | 描述 |
|---|---|
profile_name |
AI 設定檔的名稱。設定檔名稱必須遵循 Oracle SQL ID 的命名規則。設定檔名稱的長度上限為 125 個字元。 這是必要參數。 |
attributes |
JSON 格式的設定檔屬性。如需詳細資訊,請參閱 AI 設定檔屬性。 預設值為 NULL。 |
status |
設定檔的狀態。 預設值為啟用狀態。 |
description |
AI 設定檔的描述。 預設值為 NULL。 |
範例
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OpenAI,
attributes => JSON_OBJECT('provider' value 'openai',
'credential_name' value 'openai_cred'),
description => 'AI profile to use OpenAI for SQL translation'
);
END;
/
設定檔屬性
AI 設定檔的屬性可協助管理和設定 AI 設定檔的行為。某些屬性是選擇性的,而且有預設值。
| 屬性名稱 | 描述 |
|---|---|
azure_deployment_name |
Azure OpenAI Service 部署模型的名稱。名稱只能包含文數字字元、底線字元 (_) 以及連字號 (-) 字元。名稱不能以底線 (_) 或連字號 (-) 為結尾。若要瞭解如何取得 azure_deployment_name,請參閱建立和部署 Azure OpenAI Service 資源。 |
azure_resource_name |
Azure OpenAI Service 資源的名稱。資源名稱只能包含數字或英文字母字元和連字號,而且不能以連字號為開頭或結尾。若要瞭解如何取得 azure_resource_name,請參閱建立和部署 Azure OpenAI Service 資源。 |
comments |
在用於使用 AI 翻譯自然語言提示的中繼資料中包含資料欄註解。支援 注意:設定單一屬性時,布林值不適用於 |
conversation |
VARCHAR2 屬性,指示是否為設定檔啟用對話歷史記錄。只有 OpenAI 和 Azure OpenAI Service 支援對話歷史記錄。有效值為 true 或 false。預設值為 false。這些值不區分大小寫。 |
credential_name |
用以存取 AI 提供者 API 的證明資料名稱。 使用 Bearer 權杖的證明資料可以使用提供者名稱作為使用者名稱和 Bearer 權杖作為密碼來建立。 此為必要的屬性。請參閱 CREATE_CREDENTIAL 程序。 |
embedding_model |
AI 設定檔中定義的內嵌模型。下列是內嵌模型支援的 AI 提供者及其預設值:
注意: |
max_tokens |
表示每次生成時要預測的記號數目。預設值為 1024。請參閱記號和記號器以瞭解詳細資訊。 |
model |
用於生成回應的 AI 模型名稱. 支援的型號:
注意:此參數不會用於 Azure,因為模型會在 Azure OpenAI Service 入口網站中建立部署時決定。 |
object_list |
指定適用於自然語言轉譯至 SQL 之擁有者和物件名稱的 JSON 物件陣列。若要包括指定使用者的所有物件,請省略 "name",並且只在 JSON 物件中指定 "owner" 索引鍵。 對於將自然語言轉譯為 SQL,會使用 HTTPS 要求將物件名稱、物件擁有者、物件資料欄及註解傳送至 AI 提供者。避免在物件清單中指定具有機密物件名稱、資料欄名稱或註解的物件。 AI 提供者可能會限制翻譯要求中允許的中繼資料大小。請考慮限制適合應用程式使用者自然語言提示的物件清單。 格式: |
oci_compartment_id |
指定呼叫 OCI Generative AI 服務時允許存取之區間的 OCID。區間 ID 可以包含數字或英文字母字元、連字號以及點。 預設為自治式 AI 資料庫的區間 ID。 |
oci_endpoint_id |
此屬性指示代管叢集之 Oracle 專用 AI 的端點 OCID。端點 ID 可以包含數字或英文字母字元、連字號以及點。若要尋找端點 OCID,請參閱在生成式 AI 中取得端點的詳細資訊。 若要使用 Oracle 專用 AI 叢集,您必須提供代管叢集的端點 OCID。 依照預設,端點 ID 是空的,模型會隨選共用基礎架構。 |
oci_runtimetype |
此屬性表示所提供模型的執行時期類型。指定 您可以在 OCI Generative AI runtimeType 中找到所有允許的值。請參閱 LlmInferenceRequest Reference 。 支援的值包括:
|
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 Generative 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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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
);
參數
只有擁有者可以設定或修改 AI 設定檔的屬性。如需支援的屬性清單,請參閱設定檔屬性。
| Parameter - 參數 | 描述 |
|---|---|
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 Procedure 以設定屬性。
如果 AI 設定檔的擁有者是階段作業使用者,則只能為目前的階段作業設定 AI 設定檔。
若要為特定資料庫使用者的所有階段作業或資料庫中的所有使用者階段作業設定 AI 設定檔,請考慮對特定使用者或整個資料庫的 AFTER LOGON 事件使用資料庫事件觸發程式。請參閱 Oracle Database 19c Database PL/SQL Language Reference 中的 CREATE TRIGGER Statement 或 Oracle Database 26ai Database PL/SQL Language Reference ,瞭解詳細資訊。
語法
DBMS_CLOUD_AI.SET_PROFILE(
profile_name IN VARCHAR2,
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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;
參數
| Parameter - 參數 | 描述 |
|---|---|
prompt |
使用 AI 翻譯的自然語言提示。 提示可以包含 此參數為必要參數。 |
profile_name |
AI 設定檔的名稱。如果已在使用 預設值為 NULL。 適用下列條件:
注意:在「資料庫動作」中,您可以在 如需詳細資訊,請參閱在程式碼編輯器中執行 SQL 敘述句。 |
action |
使用 AI 翻譯自然提示的動作。支援的動作包括:
動作的描述包含在使用 AI 關鍵字輸入提示中。 |
attributes |
提供 JSON 格式的屬性,以覆寫特定 AI 設定檔屬性。請參閱設定檔屬性瞭解詳細資訊。 |
params |
指定對話參數。請參閱 CREATE_CONVERSATION 屬性。您只能指定下列參數:
|
範例
範例:使用 GENERATE 函數選取 AI 動作
下列範例說明可與 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 動作。
參數
| Parameter - 參數 | 必要 | 描述 |
|---|---|---|
profile_name |
是 | 包含必要 LLM 服務資訊的 AI 設定檔。這可由 CREATE_PROFILE 程序建立。 |
object_name |
是 | 指定表格名稱以填入合成資料。
|
owner_name |
編號 | 指定擁有參照物件的資料庫使用者。如果未提供任何特定擁有者,程序會預設為使用執行該程序之使用者的綱要。 |
record_count |
編號 | 要以合成方式產生的記錄數。 |
user_prompt |
編號 | 使用者可提及以產生綜合資料的其他資訊。例如,若要使用 `release_date` 資料欄產生名為 `MOVIE` 之表格的記錄,`user_prompt` 可以: 電影的發行日期應為 2019 年 |
params |
編號 | 以 JSON 物件字串格式提供的選擇性屬性,以修改 API 的行為。請參閱可選參數。 |
object_list |
是 | 使用此參數在多個表格上產生合成資料。此參數會取得表格物件資訊及其引數,而且包含單一表格中提供的相同引數。請參閱 object_list 參數。 |
選擇性參數
| Parameter - 參數 | 值資料型態 | 數值 | 描述 |
|---|---|---|---|
sample_rows |
數字 | 0 <= sample_rows <= 100 |
指定要作為範例的資料列數,以引導產生資料中的 LLM。 值為 0 表示不會使用任何範例資料列。預設值是 |
table_statistics |
布林 |
|
啟用或停用表格統計資料的使用。 預設值為 |
priority |
String | 以下為其有效值:
|
指派優先順序值,定義傳送給 LLM 以產生合成資料的平行要求數目。優先順序較高的作業將耗用更多的資料庫資源,並加快完成速度。 預設值為
用於合成資料產生的並行平行處理數目上限為 64 個。 |
comments |
布林 |
|
啟用或停用傳送註解至 LLM 以產生資料。 預設值為 |
object_list 參數
| Parameter - 參數 | 值資料型態 | 必要 | 描述 |
|---|---|---|---|
owner |
String | 是 | 指定擁有所參照物件的資料庫使用者。如果未提供特定擁有者,則程序將預設為使用執行該程序之使用者的綱要。 |
name |
String | 編號 | 指定表格名稱以填入合成資料。使用者必須具備表格物件的 SELECT 和 INSERT 權限。表格空白或有記錄。 |
record_count |
數字 | 編號 | 要以合成方式產生的記錄數。請提供大於 0 的數值。 提供 |
record_count_percentage |
數字 | 編號 | 要以合成方式產生的記錄數百分比。請提供大於 0 的數字。 對於保留包括統計資料的表格描述資料之「描述資料複製」資料庫,支援 提供 使用 |
user_prompt |
String | 編號 | 與 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();
參數
此程序不需要任何參數。
啟用資料存取的範例
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
index_name |
向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 125 個字元。 這是必要參數。 |
attributes |
JSON 中向量索引的自訂屬性。若要查看可設定參數的清單,請參閱向量索引屬性。 預設值為 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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
index_name |
向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
index_name |
向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 125 個字元。 這是必要參數。 |
範例
您可以藉由提供向量索引的名稱來停用向量索引。
BEGIN
DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(index_name => 'MY_INDEX');
END;
/
ENABLE_VECTOR_INDEX 程序
此程序會啟用或啟用先前停用的向量索引物件。一般而言,當您建立向量索引時,預設會啟用此索引,讓 AI 設定檔能夠用來執行索引和搜尋。
啟用時,向量索引可讓 AI 設定檔使用它,以使用者指定的重新整理速率將物件存放區的新資料載入向量存放區。您可以透過 JSON 物件清單指定 refresh_rate 參數。若要設定 JSON 屬性,請參閱「向量索引屬性」。
語法
DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(
index_name IN VARCHAR2
);
參數
| Parameter - 參數 | 描述 |
|---|---|
index_name |
向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 125 個字元。 這是必要參數。 |
範例
您可以指定向量索引名稱來啟用或啟用向量索引,如下所示:
BEGIN
DBMS_CLOUD_AI.ENABLE_VECTOR_INDEX(index_name => 'MY_INDEX');
END;
/
UPDATE_VECTOR_INDEX 程序
此程序會以指定的向量索引屬性值更新現有的向量儲存索引。
超載以接受:
-
各種類型的屬性值。
-
作為 JSON 文件的向量索引屬性,並以指定的屬性名稱和值組更新現有向量儲存區索引的一或多個屬性。
語法
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
index_name |
向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 125 個字元。 這是必要參數。 |
attributes |
指定 JSON 格式的向量索引屬性。 這是必要參數。 |
attribute_name |
在 您無法修改下列屬性:
這是必要參數。 |
attribute_value |
使用者為自訂 預設值為 NULL。 |
注意:使用 attributes 參數以 JSON 格式指定 attribute_name 和值組,或同時指定 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;
/
向量索引屬性
向量索引的屬性可協助管理和設定向量索引的行為。您可以視需要新增自訂索引屬性。某些屬性是選擇性的,而且有預設值。
屬性
| 屬性名稱 | 數值 | 必要 | 描述 |
|---|---|---|---|
chunk_size |
1024 (預設) |
編號 | 分區輸入資料的文字大小。 對於文字資料,這表示字元數。 |
chunk_overlap |
128 (預設) |
編號 | 指定相鄰文字區塊之間的重疊字元數。此屬性有助於確保內容連續性和文字處理的準確性,方法是在區隔之間允許重疊,這有助於避免在區塊界限中遺失內容資訊。 |
location |
無 | 是 | 此參數指定來源檔案 URI、目錄以及來源檔案。 來源檔案 URI 和目錄都支援萬用字元樣式。 雲端來源檔案 URI: 您可以指定儲存桶或子資料夾的來源檔案 URI。您可以使用萬用字元來指定子資料夾或檔案名稱。字元 " 使用萬用字元的範例: location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv URI 的格式取決於您使用的雲端物件儲存服務,如需詳細資訊,請參閱雲端物件儲存 URI 格式。 目錄: 您可以指定一個目錄和檔案名稱。指定目錄的格式為: 您只能使用萬用字元在目錄中指定檔案名稱。字元 使用雙引號來指定區分大小寫的目錄名稱。例如: 若要包含引號字元,請使用兩個引號。例如: 此位置中的檔案可以是 PDF、DOC、JSON、XML 或 HTML 等格式的文件。請參閱支援的文件格式。 |
match_limit |
5 (預設) |
編號 | 指定要在向量搜尋查詢中傳回的結果數目上限,控制輸出大小並提升資料擷取作業的效率。 |
object_storage_credential_name |
無 | 是 | 指定用於存取物件儲存的證明資料名稱。 |
pipeline_name |
<vector_index_name>$VECPIPELINE |
編號 | 指定向量索引資料載入管線的名稱。此屬性會自動設定為向量索引,您無法指定或修改。您可以使用管線名稱來監督使用監督及疑難排解管線的向量索引資料載入。 |
profile_name |
無 | 是 | AI 設定檔的名稱,用於內嵌來源資料與使用者提詞。 |
refresh_rate |
1440 分鐘 (預設) |
編號 | 向量儲存區中資料的更新間隔。單位為分鐘。 |
similarity_threshold |
0 (預設) |
編號 | 定義將兩個項目視為相符項目所需的相似度下限,有助於篩選比對演算法中的結果以確保相關性。 |
vector_distance_metric |
對應至描述中指定之其中一個值的字串。 | 編號 | 指定用來比較資料庫中向量的距離計算類型,決定如何量化項目之間的相似度。 Oracle 23ai 的有效值:
|
vector_db_provider |
oracle |
是 | 指定管理和做為向量儲存的 Provider 名稱。 |
vector_dimension |
無 | 編號 | 指定向量儲存區內每個向量中的元素數目,定義資料表示的大小和結構。 |
vector_table_name |
<vector_index_name>$VECTAB (預設) |
編號 | 指定表格或集合的名稱,以儲存向量內嵌和分區資料。 |
範例:指定物件儲存 URI 位置
以下範例示範如何使用 OCI Generative 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 參數中的目錄物件。它會載入 MY_DIR 目錄中的所有 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 '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 目錄中的所有 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 '"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 。它會載入 MY_DIR 目錄中名稱開頭為 test 的所有檔案。
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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;
參數
| Parameter - 參數 | 描述 |
|---|---|
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 |
新建對話 | 使用者指派的對話名稱。若未提供,選取 AI 會在對話第一次與提示搭配使用時產生 LLM。 |
description |
NULL | 提供摘要對話用途或相關資訊環境的使用者定義描述。如果未提供,LLM 會在對話首次與提示搭配使用時產生對話,並在第五次使用時再次更新,以包含更準確且相關的資訊。 |
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
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 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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
conversation_prompt_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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
conversation_id |
指派給對話的唯一編號。 這是必要參數。 |
force |
如果是 此參數的預設值為 |
範例
EXEC DBMS_CLOUD_AI.DROP_CONVERSATION('30C9DB6E-EA4D-AFBA-E063-9C6D46644B92');
結果:
PL/SQL procedure successfully completed.
意見回饋程序
此程序可讓您提供意見回饋給 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'
);
參數
| Parameter - 參數 | 描述 |
|---|---|
profile_name |
指定要使用的 AI 設定檔。如果未提供 這是必要參數。 |
sql_id |
識別 SQL 查詢。一個 這是必要參數。 |
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 的向量索引
當您第一次使用意見回饋功能時,選取 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 產生。
參數
| 欄 | 描述 |
|---|---|
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;
參數
| Parameter - 參數 | 描述 |
|---|---|
content |
指定要彙總的文字。必須指定 這不是必要的參數。 |
credential_name |
識別用來向物件存放區認證的證明資料物件。您必須使用 `DBMS_CLOUD.CREATE_CREDENTIAL` 建立此證明資料。 注意:只有在您提供 `location_uri` 時,才使用此參數。 |
location_uri |
提供儲存文字的 URI 或本機檔案的路徑。必須指定 舉例而言: 物件儲存: 本機檔案: |
profile_name |
指定要使用的 AI 設定檔。如果未提供 預設值為 NULL。 |
user_prompt |
提供自然語言提示以引導或自訂摘要。您可以包含摘要參數以外的其他指示。 例如,摘要應以「文章摘要為 :」」開頭 此參數並非必要參數。 |
params |
定義彙總參數。請參閱 SUMMARIZE 參數。 |
範例
請參閱範例:選取 AI 摘要以進行探索。
SUMMARIZE 參數
這些屬性會使用自訂參數管理產生摘要。某些屬性是選擇性的,而且有預設值。
屬性
| 屬性名稱 | 預設值 | 描述 |
|---|---|---|
min_words |
0 | 指定所產生摘要應包含的文字大概數目下限。 注意:此參數可作為準則而非嚴格限制:摘要的實際長度可能會因提供的內容和模型的解譯而有所不同。 |
max_words |
200 | 指定所產生摘要應包含的大約文字數目上限。 注意:此參數的作用是作為準則而非嚴格限制,摘要的實際長度可能會因提供的內容和模型的解譯而有所不同。 |
summary_style |
段落 | 指定摘要的格式樣式。以下是可用的摘要格式選項:
|
chunk_processing_method |
map_reduce |
當文字超過 LLM 可處理的記號限制時,必須將其分割成可管理的區塊。此參數可讓您選擇處理這些區塊的方法。以下是提供的選項:
請參閱選取 AI 術語以瞭解詳細資訊。 |
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;
參數
| Parameter - 參數 | 描述 |
|---|---|
profile_name |
指定要使用的 AI 設定檔。 這不是必要的參數。 |
text |
指定您要翻譯的文字。 這是必要參數。 |
source_language |
輸入文字的語言 |
target_language |
文字翻譯所使用的語言。 |
範例
請參閱範例:選取 AI 轉譯以進行探索。