Oracle SELECT AI碰上LLM大模型

2024年 1月 18日 80.3k 0

在23c之前,大家跟数据库打交道只能通过SQL,大语言模型出来以后,机器能够理解自然语言了,那跟数据库打交道的方法有什么样的变化呢?Oracle 23c 新功能,SELECT AI 能力可以让您使用自然语言跟Oracle对话了,生成式人工智能大语言模型(LLM)与Oracle SQL相结合,使您能够描述您想要的内容(声明性意图)并让数据库生成与您的模式相关的SQL查询。有些LLM可能擅长生成SQL,但能够针对数据库运行该SQL则是另一回事。选择AI可以生成特定于数据库的SQL。本文详细描述了如何建立和使用该技术的过程。

1 前提条件

1.1 OpenAI/Cohere帐号

  • OpenAI:收费或者免费的帐号,收费的为ChatGPT 4.0,免费帐号模型为ChatGPT 3.5,申请方法访问网站: chat.openai.com,需要有一个邮箱建议使用gmail邮箱,还需要一个能正常使用openai的国家的手机号码,用来接收验证码(生成API KEY时手机号为必须项)。

  • Cohere:收费和免费的Pretrained的模型不同,免费模型没有使用Oracle SQL方面的训练,或者使用OCI的Cohere模型。申请方法访问网站:https://dashboard.cohere.com。Cohere会自动赋予免费的Trial的API KEY,无需任何手机号验证。

1.2 Oracle自治数据库

Oracle自治数据库,ADW或者ADB都支持SELECT AI语法,版本19c即可。

 

  • 自治数据库实例所属Region需要在可以正常访问openai.com的Region,否则无法使用

  • 可以是Always Free帐号的自治数据库

  • 演示schema为SH

 

2 申请API KEY

2.1 申请OpenAI API KEY

登录OpenAI帐户,打开如下链接,进入到API Keys页面:

https://platform.openai.com/api-keys

点,输入相应国家的手机号。

手机号码确认后弹出验证码验证,输入验证码,即会生成API KEY,copy此Key串,后面在ADW里面配置需要使用此KEY.

2.2 Cohere API Key

Cohere无需手机号验证,并且自动免费创建Trial的API KEY

https://dashboard.cohere.com/api-keys

如果是付费帐户可以生成Production Key,复制此KEY串。

3 配置自治数据库

Oracle 自治数据库无服务器使用 AI 配置文件来促进和配置对 LLM 的访问,并设置从自然语言提示生成 SQL 语句。

3.1 SELECT AI语法

在 SELECT 语句中使用 AI 作为关键字,以便使用自然语言提示与数据库进行交互。

SELECT 语句中的 AI 关键字指示 SQL 执行引擎使用活动 AI 配置文件中标识的 LLM 来处理自然语言并生成 SQL。您可以在使用 Oracle 客户端(如 SQL Developer、OML Notebooks 和第三方工具)的查询中使用 AI 关键字,以自然语言与数据库进行交互。

 

注意事项:

1、 SELECT AI语法不支持在APEX中使用,在APEX中请使用DBMS_CLOUD_AI.GENERATE来支持自然语言提示与数据库进行交互。

2、 AI关键字只支持SELECT语法。

3、 PL/SQL语句、DDL语句、DML语句不支持使用AI关键字。

4、 序列是 SELECT,后跟 AI。这些关键字不区分大小写。经过DBMS_CLOUD_AI.SET_PROFILE配置后,SELECT AI 后面的文本是自然语言提示。如果未设置 AI 配置文件,则 SELECT AI 会报告以下错误:

 

5、 根据 Oracle 准则,特殊字符使用规则适用。例如,如果您在句子中使用撇号,请使用两次单引号

 

6、 LLM 会产生幻觉,结果并不总是正确的:

a) SELECT AI 可能无法为特定的自然语言提示运行生成的 SQL 

b) SELECT AI 可能无法为特定的自然语言提示生成 SQL 

7、 将chat操作与 SELECT AI 聊天结合使用,了解有关 SQL 构造的更多信息。为了获得更好的聊天操作结果,请使用具有上下文列名称的数据库视图或表,或者考虑添加列注释来解释列中存储的值。

8、 相关视图: DBMS_CLOUD_AI

3.2 配置AI Profile(ADMIN用户)

以下过程为OPEN AI的配置过程,如果要使用Cohere,配置过程一致,只需要将帐号和API KEY替换成Cohere的即可。

  •  使用ADMIN用户登录自治数据库

  •  授权

SQL> grant execute on DBMS_CLOUD_AI to Your_USER;

如果直接使用ADMIN用户进行使用,无需此步授权

  • OpenAI Endpoint授权

BEGIN      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(         host => 'api.openai.com',         ace  => xs$ace_type(privilege_list => xs$name_list('http'),                             principal_name => 'ADMIN/YOUR_USER',                             principal_type => xs_acl.ptype_db)   );END;/

 

  • 创建OpenAI的Credential

将OpenAI的帐号和API KEY替换掉下行红色部份。

EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'xxxx@gmail.com', 'OpenAI API KEY');

 

  • 创建并启用AI配置文件

-- Create AI profile-- 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');

 

4 使用SELECT AI

使用SELECT AI与LLM进行交互生成SQL或者结果。

  • 使用SELECT AI显示想要的SQL,使用语法SELECT AI showswql

  • 使用SELECT AI自动生成SQL并执行直接给出结果,使用语法SELECT AI

  •  使用SELECT AI 将结果给出更人性性的对话,SELECT AI narrate

  • 使用聊天模式SELECT AI chat

 

  • SELECT AI 有可能会出现幻觉,比如下图的第二条SQL语句,因为LLM不能总是给出正确的答案

 

5 SELECT AI总结

现在,在OCI可以借助使用 LLM 使用自然语言与数据库数据进行交互。这意味着您可以使用自然语言来查询数据库,即便你不懂一行SQL代码。

用户手册:

https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/sql-generation-ai-autonomous.html#GUID-9CE75F94-7455-4C09-A3F3-118C08E82B7E

 

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论