使用 Select AI 從自然語言提示產生 SQL
Select AI 功能允許 Autonomous AI Database 使用具有大型語言模型 (LLM) 的生成式 AI,將使用者的輸入文字轉換為 Oracle SQL。Select AI 會處理自然語言提示,以中繼資料補充提示,然後產生和執行 SQL 查詢。
支援的平台
Autonomous AI Database Serverless 和 Autonomous AI Database (客戶專用 Exadata 基礎架構和雲端) 支援 Select AI。
- Autonomous AI Database 無伺服器
- 專用 Exadata 基礎架構上的 Autonomous AI Database
- 專用 Exadata 基礎架構區域上的 Autonomous AI Database
- Autonomous AI Database Cloud@Customer
關於產生 SQL
現在,使用自然語言與資料庫資料互動,即可使用 LLM。這表示您可以使用自然語言 (例如英文) 來查詢資料庫。
使用 Select AI 時, Autonomous AI Database 會管理將自然語言轉換為 SQL 的程序。這表示您可以提供自然語言提示,而非 SQL 程式碼來與資料互動。Select AI 可作為 SQL 使用者和開發人員的生產力工具,讓非專業 SQL 使用者無須瞭解資料結構或技術語言,即可從資料中取得有用的洞察力。
DBMS_CLOUD_AI 套裝程式可與使用者指定的 LLM 整合,以使用自然語言提示產生 SQL 程式碼。套裝程式可協助 LLM 瞭解資料庫綱要,並指示其撰寫與該綱要一致的 SQL 查詢。DBMS_CLOUD_AI 套件可與 OpenAI、Cohere、Azure OpenAI Service 和 Oracle Cloud Infrastructure Generative AI 等 AI 供應商搭配使用。
附註:
使用者必須擁有 AI 提供者的帳戶,並透過 Autonomous AI Database 使用的DBMS_CLOUD_AI 物件提供其認證。
術語
請務必先瞭解 Select AI 所使用的各種術語,再加以使用。
以下是與 Select AI 功能相關的術語:
| 詞彙 | 定義 |
|---|---|
|
資料庫證明資料 |
「資料庫證明資料」是用來存取資料庫並與資料庫互動的認證證明資料。它們通常由使用者名稱和密碼組成,有時也會由其他認證因素 (例如安全記號) 補充。這些證明資料是用來建立應用程式或使用者與資料庫之間的安全連線,確保只有經過授權的個人或系統才能存取和操控資料庫中儲存的資料。 |
|
LLM 幻覺 |
「大型語言模型」的脈絡是指模型產生與輸入提示不正確、非語意或無關之文字的現象。儘管模型嘗試產生一致的文字,但這些實例可以包含結構化、誤導或純粹想像的資訊。由於訓練資料的偏差、缺乏適當的情境理解,或模型訓練過程中的限制,因此會發生虛構。 |
| IAM | Oracle Cloud Infrastructure Identity and Access Management (IAM) 可讓您控管可存取雲端資源的人員。您可以控制某個群組的使用者可具備的存取類型,以及可存取哪些特定資源。若要深入瞭解,請參閱身分識別與存取管理概要。 |
|
一般語言提示 |
自然語言提示是人類可閱讀的指示或要求,用來引導生成式 AI 模型 (例如大型語言模型)。使用者無須使用特定的程式設計語言或指令,而是可以透過在更具對話性或自然語言表單中輸入提示,與這些模型互動。接著,模型會根據提供的提示產生輸出。 |
|
網路存取控制清單 (ACL) |
「網路存取控制清單」是一組規則或權限,定義允許哪些網路流量通過網路裝置,例如路由器、防火牆或閘道。ACL 會根據各種條件 (例如 IP 位址、連接埠號碼以及協定) 來控制和篩選內送和外送流量。他們在網路安全中扮演重要角色,讓管理員能夠管理和限制網路流量,以防止未經授權的存取、潛在攻擊及資料外洩。 |
|
相似性搜尋 |
相似性搜尋會透過比較向量儲存區中的特徵向量來識別和擷取與指定查詢相符的資料點。 |
|
向量的距離 |
向量距離透過計算多維空間中特徵向量之間的距離來測量特徵向量之間的相似性或不相似性。 |
|
向量索引 |
向量索引可組織和儲存特徵向量,以有效率地搜尋和擷取相關資料。 |
|
向量儲存 |
向量儲存包括儲存、管理和啟用涉及向量內嵌語意相似性搜尋的系統。這包括獨立向量資料庫和 Oracle Database 23ai AI Vector Search。 |
用法指導方針
提供使用準則,以確保有效且正確地使用 SQL 產生所需的自然語言提示,以確保增強的使用者體驗。
用途
此功能用於產生與執行由使用者提供的自然語言提示所產生的 SQL 查詢。它會結合使用者選擇的大型語言模型 (LLM),自動根據使用者綱要描述資料執行手動作業。
雖然可以提供任何提示,包括與產生 SQL 查詢結果無關的提示,但 Select AI 著重於產生 SQL 查詢。選取 AI 可透過 chat 動作提交一般要求。
提示擴增資料
資料庫會以資料庫中繼資料來增強使用者指定的提示,以減輕 LLM 的幻燈片。然後,增強提示會傳送至使用者指定的 LLM 以產生查詢。
資料庫只會以綱要描述資料來增強提示。此描述資料可能包括綱要定義、表格和資料欄註解,以及資料說明和目錄中可用的內容。為了產生 SQL,在擴增提示時,資料庫不會提供表格或檢視內容 (實際列或欄值)。
不過,narrate 動作會將查詢的結果 (可能包含資料庫資料) 提供給使用者指定的 LLM,以產生描述查詢結果的自然語言文字。
警告:
大型語言模型 (LLM) 已接受廣泛的文字文件和內容 (通常來自網際網路) 訓練。因此,LLM 可能整合了無效或惡意內容的模式,包括 SQL 資料隱碼。因此,LLM 在產生實用且相關的內容時,也可能產生不正確和偽的資訊,包括產生不正確結果的 SQL 查詢和 (或) 危害資料的安全性。
由使用者指定的 LLM 供應商代替您產生的查詢將在您的資料庫中執行。貴方對此功能的使用須自行承擔風險,即使與 Oracle 提供的服務有關的任何其他條款及條件,亦構成貴方對此風險的接受,並明確排除 Oracle 對此使用所造成之損害賠償責任或責任。
選取您的 AI 提供者與 LLM
選擇符合您安全標準並符合特定需求 (例如文字或程式碼產生) 的 AI 提供者和 LLM。
不同的 LLM 會根據其訓練資料和目標,在各種任務中脫穎而出。有些模型非常適合產生文字,但在產生程式碼時可能表現不佳,其他模型則專門針對編碼工作進行最佳化。選擇最符合您需求的 LLM。
| AI 提供者 | LLM | RAG 的內嵌模型 | 目的 |
|---|---|---|---|
|
OCI 生成式 AI |
|
請參閱關於在生成式 AI 中嵌入模型。 |
所有 只有 |
|
Azure OpenAI 服務 |
|
文字嵌入 -ada-002 |
最適合從自然語言提示、 |
|
OpenAI |
|
文字嵌入 -ada-002 |
最適合從自然語言提示、 |
|
OpenAI- 相容 |
與 OpenAI 相容之提供者的模型,例如:
|
從 OpenAI 相容的提供者內嵌模型。例如,請參閱 Fireworks AI 內嵌模型。 |
支援廣泛的使用案例。 |
|
Cohere |
|
中文 (繁體) v2.0 |
最適用於 |
|
|
|
text-embedding-004 (預設) |
最適合從自然語言提示、 |
|
人類 |
|
無 |
最適合從自然語言提示、 |
|
Hugging Face |
|
無 |
最適合從自然語言提示、 |
|
AWS |
|
支援廣泛的使用案例。 |
附註:
-
對於接受影像的模型,請使用
meta.llama-3.2-90b-vision-instruct。此模型專門針對視覺和影像進行訓練。雖然模型可用於文字和 SQL 產生,但最適合用於影像。若要深入瞭解,請參閱在 OCI Generative AI 中交談。meta.llama-3.2-11b-vision-instruct模型提供強大的多模型功能。 -
嵌入模型也稱為變壓器模型。
關於 SQL 產生
現在可以使用自然語言與資料庫資料互動,與 LLM 達成。這表示您可以使用自然語言 (例如純英文) 來查詢資料庫。
使用 Select AI 時, Autonomous AI Database 會管理將自然語言轉換為 SQL 的程序。這表示您可以提供自然語言提示,而非 SQL 程式碼來與資料互動。Select AI 可作為 SQL 使用者和開發人員的生產力工具,讓非專業 SQL 使用者無須瞭解資料結構或技術語言,即可從資料中取得有用的洞察力。
DBMS_CLOUD_AI 套裝程式可與使用者指定的 LLM 整合,以使用自然語言提示產生 SQL 程式碼。套裝程式可協助 LLM 瞭解資料庫綱要,並指示其撰寫與該綱要一致的 SQL 查詢。DBMS_CLOUD_AI 套件可與 OpenAI、Cohere、Azure OpenAI Service 和 Oracle Cloud Infrastructure Generative AI 等 AI 供應商搭配使用。
附註:
使用者必須擁有 AI 提供者的帳戶,並透過 Autonomous AI Database 使用的DBMS_CLOUD_AI 物件提供其認證。
使用 DBMS_CLOUD_AI 設定 AI 設定檔
Autonomous AI Database 使用 AI 設定檔來協助和設定對 LLM 的存取,以及設定從自然語言提示產生 SQL 陳述式。
AI 設定檔包含作為自然語言查詢目標的資料庫物件。這些目標中使用的描述資料可以包括資料庫表格名稱、資料欄名稱、資料欄資料類型以及註解。您可以使用 DBMS_CLOUD_AI.CREATE_PROFILE 和 DBMS_CLOUD_AI.SET_PROFILE 程序建立並設定 AI 設定檔。
設定 DBMS_CLOUD_AI 套裝軟體的需求
執行 DBMS_CLOUD_AI 需要下列項目:
- 存取 Oracle Cloud Infrastructure 雲端帳戶和 Autonomous AI Database 執行處理。
- 支援 AI 提供者的付費 API 帳戶,其中之一:
-
OpenAI:若要讓 OpenAI 從自然語言提示產生 SQL,請從您的 OpenAI 付費帳戶取得 API 金鑰。
您可以在使用者設定當中找到您的私密 API 金鑰。
-
Cohere:若要讓 Cohere 能夠從自然語言提示中產生 SQL,請從您的 Cohere 付費帳戶取得 API 金鑰。
按一下儀表板,然後按一下左側導覽中的 API 金鑰。複製預設 API 金鑰或建立其他金鑰。請參閱 API-Keys 以瞭解詳細資訊。
-
Azure OpenAI Service:若要啟用 Azure OpenAI Service ,從自然語言提示產生 SQL,請設定並提供 AI 提供者的存取權。
若要使用 Azure OpenAI Service ,請執行下列步驟:
- 取得您的秘密 API 金鑰。您可以在 Azure 入口網站的 Resource Management 區段中找到您的 API 金鑰。在您的 Azure OpenAI 服務資源頁面上,按一下金鑰和端點。您可以複製 KEY1 或 KEY2。
- 建立 Azure OpenAI Service 資源並部署模型:建立及部署 Azure OpenAI Service 資源。
秘訣:
- 請注意資源名稱和部署名稱,這些參數會用來提供網路存取權限,並使用
DBMS_CLOUD_AI.CREATE_PROFILE程序建立 Azure OpenAI Service 設定檔。 - 若要深入瞭解模型上每分鐘記號的速率限制,請參閱 Azure OpenAI 服務配額和限制。
- 請注意資源名稱和部署名稱,這些參數會用來提供網路存取權限,並使用
- 允許存取 Azure OpenAI 服務:
- OCI Generative AI:請參閱 How to Generate the API Signing Key 。
- Google:若要讓 Google AI Studio 產生您自然語言提示的 SQL 和文字回應,請從您的 Google AI Studio 付費帳戶取得 API 金鑰。
- 前往 Google AI Studio 。
- 按一下「登入 Google AI Studio」。
- 按一下提示畫面上的「取得 API 金鑰」。
- 選取下一頁所有適用的選項。
- 按一下「建立 API 金鑰」。
-
按一下新專案中的「建立 API」金鑰。
此畫面會顯示進度並產生 API 金鑰。複製金鑰並儲存。
- Anthropic:若要啟用「Anthropic 開發人員主控台」以產生自然語言提示的 SQL 和文字回應,請從您的「Antropic 開發人員主控台」付費帳戶取得 API 金鑰。
- 前往 Anthropic Developer Console 。
- 若您還沒有註冊帳號,請註冊該帳號。
- 登入後,導覽至 API 區段或儀表板。
- 尋找產生或檢視 API 金鑰的選項。
- 按一下即可建立新的 API 金鑰。
-
複製產生的 API 金鑰並加以儲存。
Claude API 是付費服務。您必須先將點數新增至帳戶,才能使用 API 金鑰。
- 擁抱臉部:為了讓您的 AI 提供者能夠產生自然語言提示的 SQL 和文字回應,請從 Hugging Face 付費帳戶取得 API 金鑰。
- 前往 Hugging Face 。
- 若您還沒有註冊帳號,請註冊該帳號。
- 瀏覽至您的帳號設定。
- 在導覽功能表中,尋找「存取權杖」。
- 按一下即可建立新的 API 金鑰。
- 複製產生的 API 金鑰並加以儲存。
-
AWS:若要啟用 AWS,請取得您的 API 金鑰和模型 ID。
取得您的 API 金鑰,並使用該金鑰透過
DBMS_CLOUD.CREATE_CREDENTIAL建立證明資料。請依照此程序取得您的 API 金鑰和模型名稱:
- 如果您還沒有 AWS 帳戶,請註冊。
- 從 AWS Bedrock Console 建立您的存取金鑰和私密金鑰。
- 複製產生的關鍵碼並加以儲存。
- 要求存取其基礎模型。請參閱存取 Amazon Bedrock 基礎模型。
- 取得模型 ID。您需要
DBMS_CLOUD_AI.CREATE_PROFILE程序中的模型 ID。模型 ID 取決於您使用的資源。如果您使用的是:- 基本目錄模型,指定模型 ID 或其 ARN (Amazon 資源名稱)。如需基本目錄模型的模型 ID 清單,請參閱 Amazon Bedrock 基本目錄模型 ID
- 推論設定檔,指定推論設定檔 ID 或其 ARN。如需推論設定檔 ID 的清單,請參閱跨區域推論的支援區域與模型。
- 佈建的模型,指定「佈建的傳輸量」的 ARN。如需詳細資訊,請參閱使用佈建的傳輸量執行推論。
- 自訂模型,為其購買「佈建的傳輸量」。然後,指定產生之佈建模型的 ARN。如需詳細資訊,請參閱在 Amazon Bedrock 中使用自訂模型。
- Amazon Bedrock Marketplace 模型,請指定您所建立市集端點的 ID 或 ARN,請參閱 Amazon Bedrock Marketplace 。
附註:
Bedrock Converse API 不支援匯入的模型。
若要使用 AWS 作為提供者,請參閱範例:使用 AWS 選取 AI 。
-
- 存取您外部 AI 提供者的網路 ACL 權限。
附註:
網路 ACL 不適用於 OCI Generative AI。 - 可存取 AI 提供者的證明資料。
設定 DBMS_CLOUD_AI 套裝程式
使用 Select AI 之前,以下是啟用 DBMS_CLOUD_AI 的步驟。
DBMS_CLOUD_AI :
-
將
DBMS_CLOUD_AI套裝程式的EXECUTE權限授予想要使用 Select AI 的使用者。預設只會授予 ADMIN 使用者
EXECUTE權限。ADMIN 使用者可以將EXECUTE權限授予其他使用者。 -
將網路 ACL 存取權授予想要使用 Select AI 和 AI Provider 端點的使用者。
ADMIN 使用者可授予網路 ACL 存取權。請參閱 Oracle Database 19c PL/SQL Packages and Types Reference 中的 APPEND_HOST_ACE Procedure 或 Oracle Database 26ai PL/SQL Packages and Types Reference ,瞭解詳細資訊。
- 建立證明資料以啟用 AI 提供者的存取權。
如需詳細資訊,請參閱CREATE_CREDENTIAL 程序。
EXECUTE 權限授予 ADB_USER:grant execute on DBMS_CLOUD_AI to ADB_USER;下列範例授予 ADB_USER 使用 api.openai.com 端點的權限。
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'ADB_USER',
principal_type => xs_acl.ptype_db)
);
END;
/
APPEND_HOST_ACE 函數參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
主機,可以是主機的名稱或 IP 位址。您可以使用萬用字元指定網域或 IP 子網路。主機或網域名稱不區分大小寫。 若為 OpenAI,請使用 api.openai.com。 對於 Cohere,請使用 api.cohere.ai。 對於 Azure OpenAI Service ,請使用 <azure_resource_name>.openai.azure.com。請參閱設定檔屬性以瞭解 若為 Google,請使用 generativelanguage.googleapis.com。 對於人類,請使用 api.anthropic.com。 對於 Hugging Face,請使用 api-inference.huggingface.co。 |
|
|
存取控制項目 (ACE)。系統會提供 |
以下範例說明如何建立證明資料以啟用 OpenAI 的存取權。
EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');DBMS_CLOUD.CREATE_CREDENTIAL 參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要儲存的證明資料名稱。 |
|
|
|
|
|
|
建立和設定 AI 設定檔
描述建立和啟用 AI 設定檔的步驟。
請使用 DBMS_CLOUD_AI.CREATE_PROFILE 建立 AI 設定檔。接下來啟動 DBMS_CLOUD_AI.SET_PROFILE 以啟用 AI 設定檔,以便搭配使用 SELECT AI 搭配自然語言提示。
附註:
您必須先在每個新的資料庫階段作業 (連線) 中執行 DBMS_CLOUD_AI.SET_PROFILE ,才能使用 SELECT AI。
下列使用 OpenAI 提供者的範例會建立名為 OPENAI 的 AI 設定檔,並設定目前使用者階段作業的 OPENAI 設定檔。
-- Create AI profile
--
SQL> BEGIN
DBMS_CLOUD_AI.create_profile(
'OPENAI',
'{"provider": "openai",
"credential_name": "OPENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "sales"},
{"owner": "SH", "name": "products"},
{"owner": "SH", "name": "countries"}]
}');
END;
/
PL/SQL procedure successfully completed.
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
PL/SQL procedure successfully completed.
使用 AI 關鍵字輸入提示
使用 AI 作為 SELECT 敘述句中的關鍵字,以使用自然語言提示與資料庫互動。
SELECT 陳述式中的 AI 關鍵字會指示 SQL 執行引擎使用作用中 AI 設定檔中識別的 LLM 來處理自然語言並產生 SQL。
您可以在查詢中使用 AI 關鍵字與 Oracle 從屬端 (例如 SQL Developer、OML Notebooks 和第三方工具) 進行互動,以自然語言與資料庫進行互動。
附註:
您無法使用AI 關鍵字執行 PL/SQL 敘述句、DDL 敘述句或 DML 敘述句。
語法
SELECT AI action natural_language_prompt參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
使用自然語言提示執行提供的 SQL 命令。此為預設動作,可選擇是否指定此參數。 |
|
|
顯示自然語言提示的 SQL 陳述式。 |
|
|
提示的輸出會以自然語言來說明。此選項會將 SQL 結果傳送給 AI 提供者,以產生自然語言摘要。 |
|
|
根據提示直接從 LLM 產生回應。如果 |
|
|
提示產生的 SQL 是以自然語言來說明。此選項會將產生的 SQL 傳送給 AI 提供者,以產生自然語言說明。 |
使用注意事項
-
「資料庫動作」或 APEX 服務不支援選取
AI。您只能使用DBMS_CLOUD_AI.GENERATE函數。 -
AI關鍵字僅在SELECT陳述式中支援。 -
您無法使用
AI關鍵字執行 PL/SQL 敘述句、DDL 敘述句或 DML 敘述句。 -
序列為
SELECT,後面接著AI。這些關鍵字沒有大小寫之別。設定DBMS_CLOUD_AI.SET_PROFILE之後,SELECT AI之後的文字即為自然語言提示。如果未設定 AI 設定檔,SELECTAI會報告下列錯誤:ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected" -
依據 Oracle 準則套用特殊字元使用規則。例如,如果您在句子中使用單引號,請使用兩次單引號。
select ai how many customers in SF don''t own their own home -
LLM 需遵守 hallucinations ,結果並非總是正確的:
-
SELECT AI可能無法針對特定自然語言提示執行產生的 SQL。 -
SELECT AI可能無法產生特定自然語言提示的 SQL。
在此情況下,
SELECT AI會回應資訊以協助您產生有效的 SQL。 -
-
使用
chat動作搭配SELECT AI chat以進一步瞭解 SQL 建構。若要取得chat動作的較佳結果,請使用含有相關內容資料欄名稱的資料庫檢視或表格,或考慮新增說明資料欄中儲存值的資料欄註解。 -
若要存取 DBA 或 USER 視觀表,請參閱 DBMS_CLOUD_AI Views 。
運用檢索增強生成 (RAG) 選取 AI
Select AI with RAG 透過使用語意相似性搜尋從指定的向量儲存區擷取內容來增強您的自然語言提示。這會透過使用您特定且最新的內容來減少幻燈片,並為您的提示提供更相關的自然語言回應。
Select AI 可自動執行檢索增強生成 (RAG) 流程。此技術使用 AI 向量搜尋從企業來源擷取資料,並增強指定大型語言模型 (LLM) 的使用者提示。RAG 運用企業資料存放區的資訊來減少虛構情況,並產生不動的回應。
RAG 在向量索引上使用 AI 向量搜尋來尋找指定問題的語意相似資料。向量儲存會處理向量內嵌,這些內嵌是各種資料點的數學表示法,例如文字、影像及音訊。這些內嵌項目會擷取資料的含義,以實現有效率的處理與分析。如需有關向量內嵌和 AI 向量搜尋的詳細資訊,請參閱 AI Vector Search 概要。
Select AI 與 Oracle Autonomous AI Database 26ai 中可用的 AI 向量搜尋整合,以使用向量內嵌進行相似性搜尋。
主題
Select AI RAG 的優勢
複查 LLM 使用的來源,簡化查詢、提升目前資料的回應準確性,以及提高透明度。
-
簡化資料查詢並提高回應準確度:讓使用者能夠使用自然語言查詢企業資料,並為 LLM 提供企業資料的詳細內容,以產生更準確且相關的回應,並減少 LLM 幻燈片的執行個體。
-
最新資訊:讓 LLM 使用向量儲存區存取目前的企業資訊,無需昂貴且耗時的微調靜態資料集訓練的 LLM。
-
無縫整合:與 Oracle AI Vector Search 整合,可簡化資料處理並提升效能。
-
自動化資料協調:使用完全託管的向量索引管線自動化協調步驟,確保有效率地處理新資料。
-
可理解的情境結果:能夠從向量儲存區存取和擷取 LLM 使用的來源,確保結果的透明度和信心。以自然語言文字或 JSON 格式檢視和擷取資料,以簡化整合和應用程式開發。
建立您的向量儲存區
Select AI 會自動處理要分塊的文件、產生內嵌項目、將文件儲存在指定的向量儲存區,並在新資料到達時更新向量索引。
- 輸入:資料一開始會儲存在物件儲存中。
- Oracle Autonomous Database 會擷取輸入資料或文件,並加以分塊,然後將區塊傳送至內嵌模型。
- 內嵌模型會處理區塊資料並傳回向量內嵌。
- 接著,向量內嵌會儲存在向量儲存區中,以與 RAG 搭配使用。新增內容時,會自動更新向量索引。
RAG 會從企業資料庫擷取相關資訊片段,以回答使用者的問題。此資訊會連同使用者提示一起提供給指定的大型語言模型。Select AI 會使用此其他企業資訊來增強提示,改善 LLM 的回應。RAG 可以透過向量儲存區的最新企業資訊來提高回應品質。
-
輸入:使用者要求使用 Select AI
narrate動作提出問題 (指定提示)。 -
Select AI 會使用 AI 設定檔中指定的內嵌模型,產生提示的向量內嵌。
-
向量搜尋索引使用內嵌問題的向量,從已編製索引的客戶企業資料 (搜尋向量儲存區) 中尋找相符的內容。
- 向量搜尋會傳回類似於您 Autonomous AI Database 執行處理的輸入的前 K 個文字。
- Autonomous AI Database 接著將這些具有使用者問題的常用 K 查詢結果傳送給 LLM。
- LLM 會傳回對 Autonomous AI Database 執行處理的回應。
- Autonomous AI Database Select AI 可為使用者提供回應。
使用 DBMS_CLOUD_AI 來建立及管理向量索引
使用 DBMS_CLOUD_AI 套裝軟體建立和管理向量索引,以及設定向量資料庫 JSON 參數。
附註:
如果您不希望將表格資料或向量搜尋文件傳送至 LLM,具有管理員權限的使用者可以停用指定資料庫之所有使用者的此類存取權。這實際上會停用 RAG 的 narrate 動作。
您可以透過 DBMS_CLOUD_AI 套裝軟體,為選取您的 AI 提供者與 LLM 中列出的提供者設定 AI 設定檔。
使用資料庫內轉換器模型
Select AI RAG 可讓您使用在 Oracle Database 23ai 實例中匯入資料庫的預先訓練 ONNX 轉換器模型,從文件區塊和使用者提示產生內嵌向量。
附註:
您必須將預先訓練的 ONNX 格式轉換器模型匯入 Oracle Database 23ai 執行處理,才能將 Select AI RAG 與匯入的資料庫內轉換器模型搭配使用。您也可以使用來自受支援 AI 提供者的其他變壓器模型。請參閱範例:使用資料庫內變壓器模型選取 AI ,以瀏覽該功能。
合成資料產生
使用隨機產生器、演算法、統計模型和大型語言模型 (LLM) 產生合成資料,以模擬實際資料以有效開發和測試解決方案。
附註:
Support for Synthetic Data Generation is available in Oracle Database 19c starting with version 19.29, and in Oracle Database 26ai starting with version 23.26.開發和測試解決方案時,合成資料可以是強大的工具,尤其是當實際資料不存在或不允許使用時。合成或人工產生的資料可以有許多實際資料的特性。合成資料通常使用隨機產生器、演算法或統計模型建立,以模擬真實資料的特性和分佈。不過,這可能會很複雜,因為它們會產生或依賴具有不同複雜性的工具。隨著大型語言模型 (LLM) 的可用性,可能會產生更相關的綱要特定資料,以考量以自然語言表示的特性。
主題
合成資料產生的優點
合成資料產生可植入資料庫中繼資料複製,支援開發、測試和機器學習專案,而無需使用原始表格中的敏感資料。
-
使用合成資料填入描述資料複製:描述資料複製會複製資料庫或綱要的結構,但不包括實際資料。Select AI 可讓合成資料產生填入這些複製項、保護機密資料,同時啟用開發、測試及建立樣板。此方法支援效能與擴展性測試。
-
啟動新專案:啟動新專案時,可能無法使用實際資料。合成資料提供切合實際的範例,以協助示範概念並取得專案提案的支援。
-
驗證使用者體驗:綜合資料藉由提供各種資料集來發現設計瑕疵、效能及擴展性問題,協助測試使用者介面。
-
支援 AI 和機器學習專案:當真實資料無法使用或受到限制時,合成資料有助於訓練 AI 和機器學習模型。LLM 可以使用特定模式產生資料,以促進模型訓練和評分。
產生合成資料
使用 DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA 函數來產生綜合資料,並使用「選取 AI」動作來查詢資料。
若要進一步瞭解,請參閱 GENERATE_SYNTHETIC_DATA 函數和範例:產生合成資料。
監控及疑難排解合成資料產生
當跨多個表格產生大量資料時,Select AI 會將合成資料產生工作分割成較小的區塊,並平行執行工作。SYNTHETIC_DATA$<operation_id>_STATUS 表格中會追蹤每個區塊的狀態。
合成資料產生作業會記錄在 DBA_LOAD_OPERATIONS 和 USER_LOAD_OPERATIONS 表格中。使用這些表格來監督 DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA 作業。請參閱追蹤 DBMS_CLOUD 載入作業以瞭解詳細資訊。
USER_LOAD_OPERATION 取得最新的 <operation_id>:SELECT max(id) FROM user_load_operations;
若要檢視在不同階段作業中執行的合成資料作業,請使用 DBA_LOAD_OPERATIONS 視觀表。
檢視合成資料產生的狀態
合成資料產生作業的狀態表格會顯示每個表格的進度及其對應的區塊。USER_LOAD_OPERATIONS 或 DBA_LOAD_OPERATIONS 中的 STATUS_TABLE 資料欄會顯示狀態表格名稱。表格名稱是 SYNTHETIC_DATA$<operation_id>_STATUS,具有下列資料欄:
| 名稱 | 資料類型 | 描述 |
|---|---|---|
|
|
|
記錄的唯一識別碼。 |
|
|
|
表格的合格名稱,例如 "ADB_USER"."EMPLOYEES" |
|
|
|
此資料產生作業的所需記錄筆數 |
|
|
|
實際產生的記錄數。 |
|
|
|
此資料產生作業期間主索引鍵的開始值。 |
|
|
|
指出記錄上次修改時間的時戳。 |
|
|
|
資料產生任務的狀態。有效值為:
|
|
|
|
錯誤代碼,如果資料產生任務失敗。 |
|
|
|
作業失敗時所提供的錯誤訊息。 |
|
|
|
標記資料產生作業結束的時間戳記。 |
若要檢查為每個表格產生的記錄數,請發出下列各項:
SELECT name, SUM(rows_loaded) FROM synthetic_data$<operation_id>_status group by name;查詢 ROWS_LOADED 以確認每個區塊載入的資料列數目,以及每個表格的資料列為 SUM(ROWS_LOADED)。
BEGIN
DBMS_CLOUD_AI.GENERATE_SYNTHETIC_DATA(
profile_name => 'GENAI',
object_list => '[{"owner": "ADB_USER", "name": "DIRECTOR","record_count":150},
{"owner": "ADB_USER", "name": "MOVIE_ACTOR","record_count":300},
{"owner": "ADB_USER", "name": "CLASSES", "user_prompt":"all in fall semester","record_count":5},
{"owner": "ADB_USER", "name": "ACTOR","record_count":220},
{"owner": "ADB_USER", "name": "MOVIE","record_count":50}]'
);
END;
/
-- Check loaded rows for each chunk
SQL> SELECT name, rows_loaded FROM synthetic_data$141_status order by name;
NAME ROWS_LOADED
------------------------------------------
"ADB_USER"."ACTOR" 188
"ADB_USER"."ACTOR" 32
"ADB_USER"."CLASSES" 5
"ADB_USER"."DIRECTOR" 150
"ADB_USER"."MOVIE" 50
"ADB_USER"."MOVIE_ACTOR" 38
"ADB_USER"."MOVIE_ACTOR" 114
"ADB_USER"."MOVIE_ACTOR" 148
-- Check loaded rows for each table
SQL> SELECT name, SUM(rows_loaded) FROM synthetic_data$141_status group by name;
NAME SUM(ROWS_LOADED)
------------------------------------------
"ADB_USER"."DIRECTOR" 150
"ADB_USER"."MOVIE_ACTOR" 300
"ADB_USER"."CLASSES" 5
"ADB_USER"."ACTOR" 220
"ADB_USER"."MOVIE" 50

