DBMS_CLOUD_AI 套裝軟體

DBMS_CLOUD_AI 套裝程式 (搭配 Select AI) 可協助及設定自然語言提示的翻譯,以產生、執行及說明 SQL 敘述句。此外,支援檢索增強生成和自然語言互動,包括與 LLM 交談。

先決條件

機組管理員必須使用 NAT 閘道設定輸出連線,如下所述:
  • 請依照 Oracle Cloud Infrastructure 文件建立 NAT 閘道的指示,在虛擬雲端網路 (VCN) 中建立您的自治式 AI 資料庫資源所在的 NAT 閘道。
  • After creating the NAT gateway, add a route rule and an egress security rule to each subnet (in the VCN) where Autonomous AI Database resources reside so that these resources can use the gateway to obtain a public key from your Azure AD instance:
    1. 移至子網路的子網路詳細資訊頁面。
    2. 子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
    3. 在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
      • 目標:0.0.0.0/0
      • 目標類型:NAT 閘道
      • 目標:剛在 VCN 中建立的 NAT 閘道名稱

      如果沒有這類規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。

    4. 返回子網路的子網路詳細資訊頁面。
    5. 在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
    6. 在側邊功能表的資源下,按一下傳出規則
    7. 在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
      • 目標類型: CIDR
      • 目的地:0.0.0.0/0
      • IP 協定: TCP
      • 來源連接埠範圍: 443
      • 目的地連接埠範圍:全部

      如果該規則不存在,請按一下新增輸出規則,然後新增具有這些特性的輸出規則。

您環境中的 HTTP 代理主機設定值必須允許資料庫存取雲端服務提供者。

這些設定值是由機組管理員在建立 Exadata Cloud@Customer 基礎架構時定義的,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。

附註:

必須等到 Exadata 基礎架構為需要啟用狀態後,才能編輯網路組態 (包括 HTTP 代理主機)。啟用之後,您就無法編輯這些設定值。

在 My Oracle Support 中設定已啟動設定之 Exadata 基礎架構的 HTTP 代理主機時,必須要有服務要求 (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_SYNTHETIC_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 服務部署模型的名稱。名稱只能包含文數字字元、底線字元 (_) 以及連字號 (-) 字元。名稱的結尾不可為底線 (_) 或連字號 (-)。若要瞭解如何取得 azure_deployment_name,請參閱建立及部署 Azure OpenAI 服務資源

azure_resource_name

Azure OpenAI 服務資源的名稱。資源名稱只能包含數字或英文字母字元和連字號,而且不能以連字號為開頭或結尾。若要瞭解如何取得 azure_resource_name,請參閱建立及部署 Azure OpenAI 服務資源

comments

在使用 AI 翻譯自然語言提示時所使用的描述資料中包含資料欄註解。支援 BOOLEAN 資料類型。VARCHAR2 資料類型字串的有效值為 TRUEFALSE

附註:

設定單一屬性時,布林值不適用於 DBMS_CLOUD_AI.SET_ATTRIBUTE 程序,因為 attribute_value 參數為 CLOB 資料類型。

conversation

指示是否對設定檔啟用對話歷史記錄的 VARCHAR2 屬性。只有 OpenAI 與 Azure OpenAI 服務支援對話歷史記錄。有效值為 truefalse。預設值為 false。值不區分大小寫。

credential_name

存取 AI 提供者 API 的證明資料名稱。

使用 Bearer 權杖的證明資料可以使用提供者名稱作為使用者名稱和 Bearer 權杖作為密碼來建立。

此為必要的屬性。請參閱 CREATE_CREDENTIAL 程序

embedding_model

AI 設定檔中定義的內嵌模型。下列是內嵌模型支援的 AI 提供者及其預設值:

  • OCI GenAI:cohere.embed-english-v3.0
  • OpenAI: text-embedding-ada-002
  • Azure OpenAI:text-embedding-ada-002
  • Cohere:embed-english-v2.0
  • Google: text-embedding-004

附註:

embedding_model 參數不適用於 Anthropic 和 Hugging Face。

max_tokens

表示每一層代要預測的單詞數目。預設值為 1024。請參閱記號和記號器以瞭解詳細資訊。

model

用來產生回應的 AI 模型名稱。

下列項目的支援模型:

  • OpenAI :gpt-4、gpt-4-0613、gpt-4-32k、gpt-4-32k-0613、gpt-3.5-turbo (預設)、gpt-3.5-turbo-0613、gpt-3.5-turbo-16k、gpt-3.5-turbo-16k-0613
  • Cohere :指令 (預設)、指令 -nightly (實驗性)、指令 -light 及指令 -light-nightly (實驗性)。較小的「輕」模型速度較快,而較大的模型則表現較佳。也可以提供自訂模型的完整 ID。
  • OCI Generative AI :適用於 OCI Generative AI:cohere.command (預設)。Select AI 支援 OCI Generative AI 的預先訓練模型。自訂模型也可以與其完整的 OCID 一起提供。

    若要深入瞭解 OCI Generative AI 中支援的模型,請參閱 Generative AI 中的預先訓練基礎模型

  • AWS :Amazon Bedrock 基礎模型需要透過 Amazon Bedrock 主控台存取權限。請參閱 AWS 文件以取得 modelID。

附註:

此參數不會用於 Azure,因為模型是在 Azure OpenAI Service 入口網站中建立部署時決定。

object_list

指定適用於自然語言轉譯至 SQL 之擁有者和物件名稱的 JSON 物件陣列。若要包括指定使用者的所有物件,請省略 "name",而且只在 JSON 物件中指定 "owner" 索引鍵。

將自然語言轉譯為 SQL 時,會使用 HTTPS 要求,將物件名稱、物件擁有者、物件資料欄及註解傳送給 AI 提供者。請避免在物件清單中指定含有機密物件名稱、資料欄名稱或註解的物件。

AI 提供者可能會限制翻譯要求中允許的中繼資料大小。請考慮限制適合應用程式使用者自然語言提示的物件清單。

格式:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

oci_compartment_id

指定呼叫 OCI Generative AI 服務時,允許存取之區間的 OCID。區間 ID 可包含數字或英文字母字元、連字號以及點。

預設值是 Autonomous AI Database 的區間 ID。

oci_endpoint_id

此屬性代表 Oracle 專用 AI 代管叢集的端點 OCID。端點 ID 可包含數字或英文字母字元、連字號以及點。若要尋找端點 OCID,請參閱在生成式 AI 中取得端點的詳細資訊

若要使用 Oracle 專用 AI 叢集,您必須提供代管叢集的端點 OCID。

依照預設,端點 ID 為空白,且模型在共用基礎架構上為隨選。

oci_runtimetype

此屬性指示所提供模型的程式實際執行類型。指定 model 屬性且適用於 OCI 產生模型時,必須要有此屬性。

您可以在 OCI Generative AI runtimeType 中找到所有允許的值。請參閱 LlmInferenceRequest Reference

支援的值為:
  • COHERE
  • LLAMA

provider

AI 設定檔的 AI 提供者。

支援的提供者:

  • openai
  • 同時
  • 天藍色
  • oci
  • google
  • 變性
  • 掛牆
  • aws

此為必要的屬性。

region

此屬性表示您要使用的 Generative AI 叢集位置。區域可以包含文數字字元和連字號字元。

附註:

Oracle Generative AI 叢集可在芝加哥、法蘭克福及倫敦區域使用。請參閱生成式 AI 中的預先訓練基礎模型
預設區域為 us-chicago-1

AWS 的預設區域為 us-east-1。

stop_tokens

產生的文字將在最早停止序列的開頭終止。順序將併入文字中。屬性值必須是 JSON 格式的有效字串值陣列。stop_tokens 會使用 JSON 陣列作為輸入。若要進一步瞭解停止記號或停止順序,請參閱 OpenAICohere 文件。

temperature

「產生文字」模型的抽樣會結合隨機性,因此每次按下「產生」時,相同的提示可能會產生不同的輸出。溫度 (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

如果 TRUE,則程序會忽略 AI 設定檔不存在的錯誤。

此參數的預設值為 FALSE

範例

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 程序,瞭解如何設定屬性。

只有當 AI 設定檔的擁有者是階段作業使用者時,才能為目前的階段作業設定 AI 設定檔。

若要為特定資料庫使用者的所有階段作業或資料庫中的所有使用者階段作業設定 AI 設定檔,請考慮對特定使用者或整個資料庫的 AFTER LOGON 事件使用資料庫事件觸發程式。請參閱 Oracle Database 19c Database PL/SQL Language Reference 中的 CREATE TRIGGER StatementOracle 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 設定檔時,您可以使用此功能來執行支援的動作,例如 showsqlnarratechat。預設動作為 showsql

也可以使用此函數來覆寫部分或所有設定檔屬性。

語法

DBMS_CLOUD_AI.GENERATE(
    prompt          IN  CLOB,
    profile_name    IN  VARCHAR2 DEFAULT NULL,
    action          IN  VARCHAR2 DEFAULT NULL,
    attributes      IN  CLOB     DEFAULT NULL
) RETURN CLOB;

參數

Parameter - 參數 描述

prompt

使用 AI 翻譯的自然語言提示。

提示可以包含 SELECT AI <action> 作為前置碼。您也可以單獨提供動作作為「動作」參數。提示中提供的 action 會覆寫 "action" 參數。預設動作是 showsql

此為必要參數。

profile_name

AI 設定檔的名稱。如果已在使用 DBMS_CLOUD_AI.SET_PROFILE 的階段作業中設定 AI 設定檔,此參數是選擇性的。

預設值為 NULL。

適用下列條件:
  • 如果在目前的階段作業中設定設定檔,使用者可以省略 DBMS_CLOUD_AI.GENERATE 函數中的 profile_name 引數。
  • 如果 DBMS_CLOUD_AI.GENERATE 函數中提供 profile_name 引數,它會使用 DBMS_CLOUD_AI.SET_PROFILE 程序覆寫階段作業中設定的任何值。
  • 如果使用 DBMS_CLOUD_AI.SET_PROFILE 程序的階段作業中沒有設定任何設定檔,必須在 DBMS_CLOUD_AI.GENERATE 函數中提供 profile_name 引數。

附註:

對於「資料庫動作」,您可以在 DBMS_CLOUD_AI.GENERATE 中指定 profile_name 引數,或者以 PL/SQL 命令檔執行兩個步驟:DBMS_CLOUD_AI.SET_PROFILEDBMS_CLOUD_AI.GENERATE
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

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

------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
請參閱在程式碼編輯器中執行 SQL 敘述句瞭解詳細資訊。
action

使用 AI 翻譯自然提示的動作。支援的動作包括 showsql (預設值)、narratechat使用 AI 關鍵字輸入提示中包含動作的說明。

附註:

此函數不支援 runsql 動作。如果您提供 runsql 動作,則會傳回下列錯誤:
ORA-20000: runsql action is not supported by generate function ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line xxxx 
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 2696 ORA-06512: at line x
attributes 以 JSON 格式提供屬性,以覆寫特定 AI 設定檔屬性。請參閱設定檔屬性瞭解詳細資訊。

範例

下列範例說明可與 DBMS_CLOUD_AI.GENERATE 函數搭配使用的 showsqlnarratechat 動作。

具有 showsql 動作的範例如下:

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

具有 narrate 動作的範例如下:

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

具有 chat 動作的範例如下:

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

GENERATE_SYNTHETIC_DATA 函數

使用此程序可產生單一表格、多個表格或完整綱要的合成資料。

以下為產生單一表格之綜合資料的語法。

語法

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

指定表格名稱以填入合成資料。
  • 使用者必須具備表格物件的 SELECTINSERT 權限。
  • 表格空白或其中有記錄。
owner_name 編號

指定擁有參照物件的資料庫使用者。如果未提供任何特定擁有者,程序會預設為使用執行該程序之使用者的綱要。

record_count 編號

要以合成方式產生的記錄數。

user_prompt

編號 使用者可提及以產生綜合資料的其他資訊。例如,若要產生名為 MOVIE 且含有 release_date 資料欄之表格的記錄,user_prompt 可以:

電影的發行日期應為 2019 年

params

編號

以 JSON 物件字串格式提供的選擇性屬性,以修改 API 的行為。請參閱可選參數

object_list

使用此參數在多個表格上產生合成資料。此參數會取得表格物件資訊及其引數,而且包含單一表格中提供的相同引數。請參閱 object_list 參數

選擇性參數

Parameter - 參數 值資料型態 數值 描述

sample_rows

數字

0 <= sample_rows <= 100

指定要作為範例的資料列數,以引導產生資料中的 LLM。

值為 0 表示不會使用任何範例資料列。預設值是 0

table_statistics

布林

  • True
  • False

啟用或停用表格統計資料的使用。

預設值為 False

priority

String

以下為其有效值:

  • HIGH
  • MEDIUM
  • LOW

指派優先順序值,定義傳送給 LLM 以產生合成資料的平行要求數目。優先順序較高的作業將耗用更多的資料庫資源,並加快完成速度。

預設值為 HIGH

  • HIGH:根據資料庫的 ECPU 數目 (如果資料庫使用 OCPU,則為 OCPU 數目) 指定平行 LLM 要求數目。

  • MEDIUM:根據「中」服務的並行限制來設定並行程序的數目。預設值是 4。

  • LOW:以序列順序執行管線工作,而不進行平行處理。

用於合成資料產生的並行平行處理數目上限為 64 個。

comments

布林
  • True
  • False

啟用或停用傳送註解至 LLM 以產生資料。

預設值為 False

object_list 參數

Parameter - 參數 值資料型態 必要 描述

owner

String

指定擁有所參照物件的資料庫使用者。如果未提供特定擁有者,則程序將預設為使用執行該程序之使用者的綱要。

name

String

編號

指定表格名稱以填入合成資料。使用 it.The 表格的使用者需要表格物件的 SELECTINSERT 權限空白或其中有記錄。

record_count

數字

編號

要以合成方式產生的記錄數。請提供大於 0 的數字。

提供 record_countrecord_count_percentage

record_count_percentage

數字

編號

要以合成方式產生的記錄數百分比。請提供大於 0 的數字。

對於保留包括統計資料的表格描述資料之「描述資料複製」資料庫,支援 record_count_percentage 參數。

提供 record_countrecord_count_percentage

使用 record_count_percentage 參數時,表格中的最終記錄筆數計算方式如下:
Original_Num_Rows *
      record_count_percentage

user_prompt

String 編號 參數中的 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;
/
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                           
); 

參數

Parameter - 參數 描述

index_name

向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 125 個字元。

這是必要參數。

attributes

JSON 中向量索引的自訂屬性。若要查看可設定參數的清單,請參閱向量索引屬性

預設值為 NULL。

status
向量索引的狀態。可能的值如下:
  • Enabled
  • Disabled

預設值為已停用。

description

向量索引的描述 。

預設值為 NULL。

範例

下列範例示範如何建立向量索引,並將屬性設定為 JSON 參數。

BEGIN                                                                
       DBMS_CLOUD_AI.CREATE_VECTOR_INDEX(                                 
            index_name    => 'MY_INDEX'                                   
            attributes    => JSON_OBJECT(                                 
                       'vector_db_provider' value 'oracle',
                       'vector_table_name'  value 'oracle_mycollection',              
                       'profile_name'      value 'OCIGENAI',         
                       'location'          value                          
                         'https://objectstorage.us-phoenix-1.' ||         
                         'oraclecloud.com/n/mynamespace/b/mybucket',      
                       'object_store_credential_name'   value 'OS_CRED',              
                       'chunk_size'        value 2048,                    
                       'chunk_overlap'     value 256,                     
                       'refresh_rate'      value 720)                     
       );                                                                 
END;                                                                 
/

DROP_VECTOR_INDEX 程序

此程序會移除向量儲存區索引。它通常會移除向量儲存區索引物件,並刪除向量儲存區。如果設為 FALSE,引數 include_data 會確保程序只會移除向量儲存區索引物件,同時保留向量儲存區。

語法

PROCEDURE DROP_VECTOR_INDEX(                                                
   index_name          IN  VARCHAR2,           
   include_data        IN  BOOLEAN DEFAULT TRUE,                            
   force               IN  BOOLEAN DEFAULT FALSE                           
);

參數

Parameter - 參數 描述

index_name

向量索引的名稱。向量索引名稱必須遵循 Oracle SQL ID 的命名規則。向量儲存名稱的長度上限為 125 個字元。

這是必要參數。

include_data

表示是否要同時刪除客戶的向量儲存區與向量索引以及向量索引物件。

可能的值:

  • TRUE
  • FALSE

預設值為 TRUE

force

指示是否忽略當向量索引不存在時所發生的錯誤。

可能的值:

  • TRUE
  • FALSE

如果設為 TRUE,此參數會略過當向量索引不存在時所發生的任何錯誤。

預設值為 FALSE

範例

BEGIN
DBMS_CLOUD_AI.DROP_VECTOR_INDEX(
        index_name     => 'MY_INDEX',
        include_data   => FALSE,
        force          => TRUE
     );                                                                 
END;                                                                 
/

DISABLE_VECTOR_INDEX 程序

此程序會停用目前資料庫中的向量索引物件。停用時,AI 設定檔無法使用向量索引,且系統不會將資料載入向量儲存區,因為新資料會新增至物件儲存區,且不會根據索引執行索引編製、搜尋或查詢。

語法

DBMS_CLOUD_AI.DISABLE_VECTOR_INDEX(                                              
   index_name       IN  VARCHAR2                                            
);

參數

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

CREATE_VECTOR_INDEX 程序中指定為 JSON 參數的自訂屬性名稱。

您無法修改下列屬性:

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

這是必要參數。

attribute_value

使用者為自訂 attribute_name 指定的值。值可以是 CLOBNUMBERVARCHAR2 類型。

預設值為 NULL。

附註:

使用 attributes 參數以 JSON 格式指定 attribute_name 和值組,或同時指定 attribute_nameattribute_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 格式

目錄

您可以指定一個目錄和檔案名稱。指定目錄的格式為:MY_DIR:filename.ext。依照預設,目錄名稱 MY_DIR 是資料庫物件,不區分大小寫。檔案名稱有大小寫之別。

您只能使用萬用字元在目錄中指定檔案名稱。字元 * 可作為多個字元的萬用字元使用,而字元 ? 可作為單一字元的萬用字元使用該字元。例如:MY_DIR:*MY_DIR:test?

使用雙引號來指定區分大小寫的目錄名稱。例如:"my_dir1":*"my_dir2":Test?

若要包含引號字元,請使用兩個引號。例如:MY_DIR:''filename.ext。這會指定檔案名稱開頭為引號 (')。

此位置中的檔案可以是 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 的有效值:

  • EUCLIDEAN
  • L2_SQUARED (EUCLIDEAN_SQUARED)
  • COSINE (預設)
  • DOT
  • MANHATTAN
  • HAMMING

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。它會載入名稱開頭為 testMY_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
);

參數

Parameter - 參數 描述

attributes

JSON 格式的對話屬性。請參閱 CREATE_CONVERSATION 屬性瞭解詳細資訊。

預設值為 NULL。

範例

範例:建立對話

下列範例顯示建立不含任何自訂的對話。

EXEC DBMS_CLOUD_AI.CREATE_CONVERSATION;

結果:

PL/SQL procedure successfully completed.
範例:使用自訂屬性建立對話

下列範例顯示使用自訂參數 (例如 titledescriptionretention_daysconversation_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_IDDBMS_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 函數來指定屬性,例如 titleretention_daysconversation_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.GENERATE 函數中指定 conversation_length 參數,或使用 SELECT AI <ACTION> <PROMPT> 在 AI 設定檔中加以設定,以覆寫此值。對 conversation_length 套用下列優先順序規則:
  1. DBMS_CLOUD_AI.GENERATE 中的屬性引數值
  2. 對話中的值集會採用下一個優先順序
  3. AI 設定檔中定義的值採用最後優先順序

如果沒有指定 conversation_length,則預設值為 10。

下列範例顯示如何在 DBMS_CLOUD_AI.CREATE_CONVERSATION 程序中自訂對話屬性。
-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
               attributes => '{"title":"Conversation 1",
                               "description":"this is a description",
                               "retention_days":5,
                               "conversation_length":5}')
     AS conversation_id FROM dual;

UPDATE_CONVERSATION 程序

此程序會以指定的對話屬性值更新現有的對話。

語法

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

參數

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

結果:

PL/SQL procedure successfully completed.

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

結果:

PL/SQL procedure successfully completed.

GET_CONVERSATION_ID 函數

此函數會傳回目前使用 DBMS_CLOUD_AI.SET_CONVERSATION_IDDBMS_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
);

參數

Parameter - 參數 描述

conversation_prompt_id

指派給對話中提示的唯一編號。您可以查詢 DBA/USER_CLOUD_AI_CONVERSATION_PROMPTS 視觀表來尋找提示 ID。請參閱 DBMS_CLOUD_AI 檢視

這是必要參數。

force

如果是 TRUE,則當 conversation_prompt_id 不存在時,程序會忽略錯誤。

此參數的預設值為 FALSE

範例

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

結果:

PL/SQL procedure successfully completed.

DROP_CONVERSATION 程序

程序會移除對話及其所有關聯的提示以及關聯的回應。刪除之後,conversation_id 就會變成無效。如果對話在階段作業中設定時被刪除,則會自動清除該對話。

語法

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

參數

Parameter - 參數 描述

conversation_id

指派給對話的唯一編號。

這是必要參數。

force

如果是 TRUE,則當 conversation_id 不存在時,程序會忽略錯誤。

此參數的預設值為 FALSE

範例

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 設定檔。如果未提供 profile_name,則 Select AI 會使用階段作業中設定的預設設定檔。

這是必要參數。

sql_id

識別 SQL 查詢。一個 sql_id 只能有一個意見回饋項目。

這是必要參數。

sql_text

包含 SQL 查詢的完整文字。

這是必要參數。

feedback_type

指定意見回饋類型。可用的值包括:
  • positive:接受產生的 SQL。
  • negative:透過識別查詢中的錯誤,提供必要的 SQL 查詢改進。

附註:

DBMS_CLOUD_AI.FEEDBACK 程序可讓您指定 sql_idsql_text,因此需要 feedback_type,而如果您使用 feedback 動作,則 LLM 會動態決定或解譯意見類型。

operationadd 時,這是必要參數。

response

代表使用者預期的正確 SQL 查詢結果。

operationaddfeedback_typenegative 時,此為必要參數。

feedback_content

擷取使用者的自然語言意見回饋。您可以選擇將此參數與 response 一起使用。

operation

指定要執行的作業。接受的值為:
  • add (預設):透過指定 feedback_type 來新增您的意見。
  • delete:提供 sql_id 以刪除您的意見

範例

範例:使用新增或刪除作業提供產生之 SQL 的意見

下列範例示範使用 DBMS_CLOUD_AI.FEEDBACK 程序,透過指定程序的參數來接受或改善產生的 SQL。

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

FEEDBACK 的向量索引

選取 AI 會在您第一次使用意見回饋功能時,以預設屬性建立名為 <profile_name>_FEEDBACK_VECINDEX 的預設向量索引。

您可以使用 DBMS_CLOUD_AI.UPDATE_VECTOR_INDEX 程序來修改其屬性,例如 similarity_thresholdmatch_limit。此索引可協助根據提供的意見來縮小未來產生的 SQL。刪除關聯的 AI 設定檔時,便會刪除此表格。您也可以刪除 <profile_name>_FEEDBACK_VECINDEX。當您這麼做時,Select AI 不再使用意見作為 runsqlshowsqlexplainsql 動作的提示。不過,如果您使用 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)