DBMS_CLOUD_AI 程序包
使用 Select AI 的 DBMS_CLOUD_AI 程序包可简化和配置自然语言提示的转换,以生成、运行和解释 SQL 语句。此外,还支持检索增强生成和基于自然语言的交互,包括与 LLM 聊天。
Prerequisites
作为开发人员,您可以将 DBMS_CLOUD 过程与部署在 Oracle Public Cloud、Multicloud 或 Exadata Cloud@Customer 上的自治 AI 数据库结合使用。
根据部署选择,必须满足以下先决条件,才能将 DBMS_CLOUD 过程与 Amazon S3、Azure Blob Storage 和 Google Cloud Storage 服务提供商结合使用。
组管理员必须使用 NAT 网关配置出站连接,如下所述:
-
按照 Oracle Cloud Infrastructure 文档中的创建 NAT 网关中的说明,在自治 AI 数据库资源所在的虚拟云网络 (VCN) 中创建 NAT 网关。
-
创建 NAT 网关后,在自治 AI 数据库资源所在的 VCN 中添加路由规则和出站安全规则到每个子网,以便这些资源可以使用网关从 Azure AD 实例获取公钥:
-
转到子网的 Subnet Details(子网详细信息)页面。
-
在 Subnet Information(子网信息)选项卡中,单击子网的 Route Table(路由表)的名称以显示 Route Table Details(路由表详细信息)页面。
-
在现有路由规则表中,检查是否已存在具有以下特征的规则:
-
目标:0.0.0.0/0
-
目标类型:NAT 网关
-
目标:刚在 VCN 中创建的 NAT 网关的名称
如果不存在此类规则,请单击添加路由规则并添加具有这些特征的路由规则。
-
-
返回到子网的子网详细信息页面。
-
在子网的安全列表表中,单击子网的安全列表的名称以显示其安全列表详细信息页。
-
在侧边菜单的资源下,单击出站规则。
-
在现有出站规则表中,检查是否已存在具有以下特征的规则:
-
目标类型: CIDR
-
目标:0.0.0.0/0
-
IP 协议: TCP
-
源端口范围:443
-
目标端口范围:全部
如果不存在此类规则,请单击添加出站规则并添加具有这些特征的出站规则。
-
-
您环境中的 HTTP 代理设置必须允许数据库访问云服务提供商。
这些设置由组管理员在创建 Exadata Cloud@Customer 基础结构时定义,如 Using the Console to Provision Exadata Database Service on Cloud@Customer 中所述。
注:只有在 Exadata 基础结构处于 Requires Activation 状态之前,才能编辑包括 HTTP 代理的网络配置。一旦激活,您就无法编辑这些设置。
为已预配的 Exadata 基础结构设置 HTTP 代理需要 My Oracle Support 中的服务请求 (SR)。有关详细信息,请参见在 My Oracle Support 中创建服务请求。
DBMS_CLOUD_AI 子程序概要
本节介绍自治 AI 数据库随附的 DBMS_CLOUD_AI 子程序。
| 子程序 | 说明 |
|---|---|
| CREATE_PROFILE 过程 | 此过程将创建一个新的 AI 配置文件,用于将自然语言提示转换为 SQL 语句。 |
| 概要信息属性 | 提供您可以配置的 AI 配置文件属性。 |
| DROP_PROFILE 过程 | 此过程将删除现有 AI 配置文件。 |
| ENABLE_PROFILE 过程 | 此过程允许在当前数据库中使用 AI 配置文件。 |
| DISABLE_PROFILE 过程 | 此过程将禁用当前数据库中的 AI 配置文件。 |
| SET_ATTRIBUTE 过程 | 此过程设置 AI 配置文件属性。 |
| SET_PROFILE 过程 | 此过程为当前数据库设置 AI 配置文件。 |
| 生成函数 | 此函数使用 AI 生成要转换的 SQL 语句。 |
| GENERATE_MONOETIC_DATA 函数 | 此函数生成合成数据。 |
| ENABLE_DATA_ACCESS 过程 | 使用此过程可以允许将数据发送到 LLM。 |
| DISABLE_DATA_ACCESS 过程 | 使用此过程可禁止向 LLM 发送数据。 |
| CREATE_VECTOR_INDEX 过程 | 此过程在指定的向量数据库中创建向量索引,并使用异步调度程序作业使用对象存储中的数据填充向量索引。 |
| DROP_VECTOR_INDEX 过程 | 此过程将删除向量存储索引。它通常会删除向量存储索引对象并删除向量数据库。 |
| DISABLE_VECTOR_INDEX 过程 | 此过程将禁用当前数据库中的向量索引对象。禁用时,AI 配置文件无法使用向量索引,并且系统不会将数据加载到向量存储中。 |
| ENABLE_VECTOR_INDEX 过程 | 此过程启用或激活以前禁用的向量索引对象。 |
| UPDATE_VECTOR_INDEX 过程 | 此过程使用向量索引属性的指定值更新现有向量存储索引。 |
| 向量索引属性 | 提供可以配置的向量索引概要信息属性。 |
| CREATE_CONVERSATION 过程 | 此过程可帮助您创建对话。 |
| CREATE_CONVERSATION 函数 | 此功能可帮助您创建对话并在其他过程中使用对话 ID。 |
| CREATE_CONVERSATION 属性 | 使用对话属性定制您的对话。 |
| UPDATE_CONVERSATION 过程 | 此过程使用用户指定的参数更新现有过程。 |
| SET_CONVERSATION_ID 过程 | 此过程在当前会话中设置对话支持。 |
| GET_CONVERSATION_ID 函数 | 此过程可帮助您获取 conversation_id 参数。 |
| CLEAR_CONVERSATION_ID 过程 | 此过程可帮助您清除当前会话中设置的任何 conversation_id。 |
| DELETE_CONVERSATION_PROMPT 过程 | 此过程将删除特定的提示。 |
| DROP_CONVERSATION 过程 | 此过程将删除整个对话及其元数据。 |
| FEEDBACK 过程 | 使用此过程可以通过向 Select AI 提供反馈来提高查询生成准确性。 |
| 向量索引 - FEEDBACK | 这是首次使用 feedback 时创建的默认向量索引。 |
CREATE_PROFILE 过程
该过程将创建一个新的 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 标识符的命名规则。配置文件名称的最大长度为 125 个字符。 此项是必需参数。 |
attributes |
JSON 格式的概要信息属性。有关更多详细信息,请参见 AI Profile Attributes 。 默认值为空值。 |
status |
概要的状态。 默认值为“启用”。 |
description |
AI 配置文件的说明。 默认值为空值。 |
范例
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OpenAI,
attributes => JSON_OBJECT('provider' value 'openai',
'credential_name' value 'openai_cred'),
description => 'AI profile to use OpenAI for SQL translation'
);
END;
/
概要信息属性
AI 配置文件的属性有助于管理和配置 AI 配置文件的行为。某些属性是可选的,并且具有默认值。
| 属性名称 | 说明 |
|---|---|
azure_deployment_name |
部署了 Azure OpenAI 服务的模型的名称。名称只能包含字母数字字符、下划线字符 (_) 和连字符 (-) 字符。名称不能以下划线 (_) 或连字符 (-) 结尾。要了解如何获取 azure_deployment_name,请参阅创建和部署 Azure OpenAI 服务资源。 |
azure_resource_name |
Azure OpenAI 服务资源的名称。资源名称只能包含字母数字字符和连字符,并且不能以连字符开头或结尾。要了解如何获取 azure_resource_name,请参阅创建和部署 Azure OpenAI 服务资源。 |
comments |
在用于使用 AI 转换自然语言提示的元数据中包括列注释。支持 注:设置单个属性时,布尔值不适用于 |
conversation |
指示是否为配置文件启用对话历史记录的 VARCHAR2 属性。只有 OpenAI 和 Azure OpenAI 服务支持对话历史记录。有效值为 true 或 false。默认值为 false。值不区分大小写。 |
credential_name |
用于访问 AI 提供程序 API 的身份证明的名称。 可以使用提供程序名称作为用户名创建使用 Bearer 标记的身份证明,并使用 Bearer 标记作为密码创建身份证明。 这是一个必需的属性。请参见 CREATE_CREDENTIAL Procedure 。 |
embedding_model |
AI 配置文件中定义的嵌入模型。以下是嵌入模型及其默认值所支持的 AI 提供程序:
注: |
max_tokens |
表示每次生成时要预测的令牌数。默认值为 1024。有关详细信息,请参阅令牌和令牌。 |
model |
用于生成响应的 AI 模型的名称。 支持的型号:
注:此参数不用于 Azure,因为在 Azure OpenAI 服务门户中创建部署时将确定模型。 |
object_list |
由 JSON 对象组成的数组,用于指定符合 SQL 自然语言转换条件的所有者和对象名称。要包括给定用户的所有对象,请省略 "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 集群位于芝加哥、法兰克福和伦敦地区。请参见 [Generative 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 |
生成文本模型的采样包含随机性,因此在每次单击“生成”时,相同的提示可能会产生不同的输出。温度是用于调整随机度的非负浮点数。较低的温度意味着更少的随机世代。有关详细信息,请参见 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 配置文件的属性。有关支持的属性的列表,请参见“Profile Attributes(概要信息属性)”。
| Parameter (参数) | 说明 |
|---|---|
profile_name |
要为其设置属性的 AI 配置文件的名称。 此参数是必需的。 |
attribute_name |
AI 配置文件属性的名称 此参数是必需的。 |
attribute_value |
配置文件属性的值。 默认值为空值。 |
范例
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 前缀,请参见 Use AI Keyword to Enter Prompts 。(可选)可以通过以 JSON 格式指定配置文件属性或修改属性。有关设置属性,请参阅 SET_ATTRIBUTE 过程。
仅当 AI 配置文件的所有者是会话用户时,才能为当前会话设置 AI 配置文件。
要为特定数据库用户或数据库中所有用户会话的所有会话设置 AI 配置文件,请考虑对特定用户或整个数据库上的 AFTER LOGON 事件使用数据库事件触发器。有关详细信息,请参阅 Oracle Database 19c Database PL/SQL Language Reference 或 Oracle Database 26ai Database PL/SQL Language Reference 中的 CREATE TRIGGER Statement 。
语法
DBMS_CLOUD_AI.SET_PROFILE(
profile_name IN VARCHAR2,
);
参数
| Parameter (参数) | 说明 |
|---|---|
profile_name |
当前会话中 AI 配置文件的名称。 此参数是必需的。 |
范例
BEGIN
DBMS_CLOUD_AI.SET_PROFILE(
profile_name => 'OPENAI'
);
END;
/
生成函数
此函数在使用无状态数据库连接时提供 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 配置文件的名称。如果已在会话中使用 默认值为空值。 以下情况适用:
注:对于 Database Actions,可以在 有关更多信息,请参见 Executing SQL Statement in the Code Editor 。 |
action |
使用 AI 翻译自然提示的操作。支持的操作包括:
Use AI Keywords to Enter Prompts 中包括了操作的说明。 |
attributes |
通过以 JSON 格式提供属性来覆盖特定的 AI 概要信息属性。有关详细信息,请参见 Profile Attributes 。 |
params |
指定对话参数。请参见 CREATE_CONVERSATION Attributes 。只能指定以下参数:
|
示例
示例:使用 GENERATE 函数选择 AI 操作
以下示例说明了可以与 DBMS_CLOUD_AI.GENERATE 函数一起使用的 runsql、showsql、explainsql、narrate、summarize、translate 和 chat 操作。
有关更多详细信息,另请参见 Use AI Keywords to Enter Prompts 。
具有 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_MONOETIC_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 Parameters 。 |
可选参数
| Parameter (参数) | 值数据类型 | 值 | 说明 |
|---|---|---|---|
sample_rows |
数字 | 0 <= sample_rows <= 100 |
指定表中的行数,以用作在数据生成中指导 LLM 的示例。 值为 0 表示不会使用示例行。默认值为 |
table_statistics |
布尔 |
|
允许或禁止使用表统计信息。 默认值为 |
priority |
字符串 | 有效值包括:
|
分配一个优先级值,该值定义发送到 LLM 以生成合成数据的并行请求数。优先级更高的任务将消耗更多数据库资源并更快地完成任务。 默认值为
用于合成数据生成的最大并行进程数限制为 64 个。 |
comments |
布尔 |
|
启用或禁用向 LLM 发送注释以指导数据生成。 默认值为 |
object_list 参数
| Parameter (参数) | 值数据类型 | 必需 | 说明 |
|---|---|---|---|
owner |
字符串 | 是 | 指定所引用的对象的所有者数据库用户。如果未提供特定所有者,则该过程将默认为使用运行它的用户的方案。 |
name |
字符串 | 无 | 指定表名以填充合成数据。使用该表的用户需要对表对象具有 SELECT 和 INSERT 权限。该表为空或包含记录。 |
record_count |
数字 | 无 | 要以合成方式生成的记录数。请提供大于 0 的数值。 提供 |
record_count_percentage |
数字 | 无 | 要合成生成的记录数的百分比。请提供大于 0 的数值。 对于元数据克隆数据库,如果保留包括统计信息的表元数据,则支持 提供 使用 |
user_prompt |
字符串 | 无 | 与 GENERATE_MONOETIC_DATA Function Parameters 中的 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 标识符的命名规则。向量存储名称的最大长度为 125 个字符。 此项是必需参数。 |
attributes |
JSON 中向量索引的定制属性。要查看可配置参数的列表,请参见 Vector Index Attributes 。 默认值为空值。 |
status |
向量索引的状态。可能的值有:
默认值为禁用。 |
description |
向量索引的说明。 默认值为空值。 |
范例
以下示例演示如何创建向量索引并将属性配置为 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 标识符的命名规则。向量存储名称的最大长度为 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 标识符的命名规则。向量存储名称的最大长度为 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 标识符的命名规则。向量存储名称的最大长度为 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 标识符的命名规则。向量存储名称的最大长度为 125 个字符。 此项是必需参数。 |
attributes |
以 JSON 格式指定向量索引属性。 此项是必需参数。 |
attribute_name |
在 您不能修改以下属性:
此项是必需参数。 |
attribute_value |
自定义 默认值为空值。 |
注:使用 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 |
NA | 是 | 此参数指定源文件 URI 或目录以及源文件。 源文件 URI 和目录都支持通配符模式。 云源文件 URI: 可以为存储桶或子文件夹指定源文件 URI。可以使用通配符指定子文件夹或文件名。字符 " 使用通配符的示例: location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv URI 的格式取决于您使用的云对象存储服务,有关详细信息,请参见 Cloud Object Storage URI Formats 。 目录: 可以指定一个目录和文件名。指定目录的格式为: 只能使用通配符指定目录中的文件名。字符 使用双引号指定区分大小写的目录名称。例如: 要包含引号字符,请使用两个引号。例如: 此位置中的文件可以是 PDF、DOC、JSON、XML 或 HTML 等格式的文档。请参阅支持的文档格式。 |
match_limit |
5(默认值) |
无 | 指定在向量搜索查询中返回的最大结果数,从而控制输出大小并提高数据检索操作的效率。 |
object_storage_credential_name |
NA | 是 | 指定用于访问对象存储的身份证明的名称。 |
pipeline_name |
<vector_index_name>$VECPIPELINE |
无 | 指定向量索引数据加载管道的名称。此属性会自动为向量索引设置,您无法指定或修改。管道名称可用于使用监视管道和排除管道故障监视向量索引数据加载。 |
profile_name |
NA | 是 | 用于嵌入源数据和用户提示的 AI 概要文件的名称。 |
refresh_rate |
1440 分钟(默认值) |
无 | 在向量存储中更新数据的间隔。单位是分钟。 |
similarity_threshold |
0(默认值) |
无 | 定义将两个项视为匹配项所需的最小相似度级别,可用于在匹配算法中筛选结果以确保相关性。 |
vector_distance_metric |
与说明中指定的值之一对应的字符串。 | 无 | 指定用于比较数据库中向量的距离计算类型,从而确定如何量化项之间的相似度。 Oracle 23ai 的有效值:
|
vector_db_provider |
oracle |
是 | 指定管理和充当向量存储的提供程序名称。 |
vector_dimension |
NA | 无 | 指定向量存储中每个向量的元素数,定义数据表示形式的大小和结构。 |
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 Attributes 。 默认值为空值。 |
范例
示例:创建对话
以下示例显示了在不进行任何定制的情况下创建对话。
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 函数
This function creates a conversation and returns its conversation_id that can be used in other procedures or functions such as DBMS_CLOUD_AI.SET_CONVERSATION_ID and DBMS_CLOUD_AI.GENERATE.
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 Attributes 。 默认值为空值。 |
范例
示例:创建对话
以下示例显示使用 DBMS_CLOUD_AI.CREATE_CONVERSATION 函数创建对话而不进行任何定制。
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION FROM DUAL;
结果:
CREATE_CONVERSATION
------------------------------------
30C9DB6E-EA4D-AFBA-E063-9C6D46644B92
示例:创建具有定制属性的对话
以下示例显示了如何使用 DBMS_CLOUD_AI.CREATE_CONVERSATION 函数指定属性,例如 title、retention_days 和 conversation_length。
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
attributes => '{"title":"This is a test conversation",
"retention_days":7,
"conversation_length":20}')
FROM DUAL;
CREATE_CONVERSATION 属性
这些属性管理对话上下文,包括保留多长时间、对存储或显示的响应的提示数,以及标题和说明等元数据以供参考。某些属性是可选的,并且具有默认值。
属性
| 属性名称 | 默认值 | 说明 |
|---|---|---|
title |
新建对话 | 用户为对话分配的名称。如果未提供,Select AI 将在对话首次与提示一起使用时让 LLM 生成一个。 |
description |
NULL | 提供用户定义的描述,汇总对话的目的或上下文。如果未提供,LLM 将在对话首次与提示一起使用时生成一个,并在第 5 次使用时再次更新,以包括更准确和相关的信息。 |
retention_days |
7 | 指定对话历史记录的保留天数。它从创建日期开始存储在数据库中。如果省略该值,系统会将其设置为默认值 7。如果将其设置为 0,系统将保留对话,直到您使用 DBMS_CLOUD_AI.DROP_CONVERSATION 过程或 DBMS_CLOUD.DELETE_ALL_OPERATIONS('CONVERSATION') 手动删除对话。 |
conversation_length |
NULL | 指定要与当前提示一起包含的最近提示和响应数。允许的最大值为 999。您可以通过在
如果没有指定 |
以下示例说明如何在 DBMS_CLOUD_AI.CREATE_CONVERSATION 过程中定制对话属性。
-- Create conversation with custom attributes
SELECT DBMS_CLOUD_AI.CREATE_CONVERSATION(
attributes => '{"title":"Conversation 1",
"description":"this is a description",
"retention_days":5,
"conversation_length":5}')
AS conversation_id FROM dual;
UPDATE_CONVERSATION 过程
此过程使用指定的对话属性值更新现有对话。
语法
DBMS_CLOUD_AI.UPDATE_CONVERSATION(
conversation_id IN VARCHAR2,
attributes IN CLOB
);
参数
| Parameter (参数) | 说明 |
|---|---|
conversation_id |
分配给对话的唯一编号。 此项是必需参数。 |
attributes |
JSON 格式的对话属性。有关更多详细信息,请参见 CREATE_CONVERSATION Attributes 。 |
范例
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(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 |
分配给对话中的提示的唯一编号。可以通过查询 此项是必需参数。 |
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.
FEEDBACK 过程
通过此过程,您可以向 Select AI 提供反馈,以提高查询生成准确性。您可以选择提供正面或负面的反馈,以及文本备注或修订的 SQL 查询。
语法
DBMS_CLOUD_AI.FEEDBACK(
profile_name IN VARCHAR2,
sql_id IN DBMS_ID,
feedback_type IN VARCHAR2 DEFAULT NULL,
response IN CLOB DEFAULT NULL,
feedback_content IN CLOB DEFAULT NULL,
operation IN VARCHAR2 DEFAULT 'ADD'
);
DBMS_CLOUD_AI.FEEDBACK(
profile_name IN VARCHAR2,
sql_text IN CLOB,
feedback_type IN VARCHAR2 DEFAULT NULL,
response IN CLOB DEFAULT NULL,
feedback_content IN CLOB DEFAULT NULL,
operation IN VARCHAR2 DEFAULT 'ADD'
);
参数
| 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。
向量表名称
表 <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 配置文件。如果未提供 默认值为空值。 |
user_prompt |
提供自然语言提示以指导或自定义汇总。除了汇总参数之外,还可以包含其他说明。 例如,摘要应以 '' 文章摘要为:''' 开头 此参数不是必需的。 |
params |
定义汇总参数。请参见 SUMMARIZE Parameters 。 |
范例
请参见 Example:Select AI Summarize 进行浏览。
SUMMARIZE 参数
这些属性使用自定义参数管理生成摘要。某些属性是可选的,并且具有默认值。
属性
| 属性名称 | 默认值 | 说明 |
|---|---|---|
min_words |
0 | 指定生成的摘要应包含的最小单词数。 注:此参数用作准则,而不是严格限制:根据提供的内容和模型的解释,汇总的实际长度可能会有所不同。 |
max_words |
200 | 指定生成的摘要应包含的大致最大单词数。 注:此参数用作准则,而不是严格的限制,汇总的实际长度可能因提供的内容和模型的解释而异。 |
summary_style |
段落 | 指定摘要的格式样式。以下是可用的摘要格式选项:
|
chunk_processing_method |
map_reduce |
当文本超过 LLM 可以处理的令牌限制时,必须将其拆分为可管理的块。此参数允许您选择用于处理这些块的方法。提供的选项如下:
有关更多详细信息,请参见 Select AI Terminology 。 |
extractiveness_level |
low |
确定摘要与输入的原始措辞的密切程度。它控制模型提取的程度与重写它的程度。下面是相应的选项:
注:此设置用作模型汇总行为的指导,它不强制实施严格的规则。摘要的实际样式和措辞可能因输入内容和模型决策而异。 |
TRANSLATE 函数
使用此功能可以将文本转换为指定的 target_language。
您可以在函数中提供 source_language 和 target_language 参数,也可以从用户的 AI 配置文件中获取这些参数。如果 AI 配置文件不包括 source_language 属性,生成式 AI 提供程序将自动检测输入语言。如果缺少 target_language 属性,Select AI 将返回错误。
语法
DBMS_CLOUD_AI.TRANSLATE(
profile_name IN VARCHAR2,
text IN CLOB,
source_language IN VARCHAR2 DEFAULT NULL,
target_language IN VARCHAR2 DEFAULT NULL
) RETURN CLOB;
参数
| Parameter (参数) | 说明 |
|---|---|
profile_name |
指定要使用的 AI 配置文件。 这不是必需参数。 |
text |
指定要转换的文本。 此项是必需参数。 |
source_language |
输入文本的语言 |
target_language |
将文本翻译到的语言。 |
范例
请参阅示例:选择 AI 翻译以进行浏览。