暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何实现AI自然语言查询

作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;墨天轮:Digital Observer;PGFans:施嘉伟。

在这篇文章中,我将介绍如何在 Oracle 数据库中通过 DBMS_CLOUD_AI 包接入第三方 AI 提供商(以 Cohere 为例),并实现用自然语言查询数据库的能力。此能力是 Oracle 23ai 推出的新特性之一,非常适合希望将 AI 能力嵌入数据库的开发者或数据分析人员。

一、准备工作

1. 授权用户使用 AI 相关的包

首先需要将 AI 执行权限授予目标用户(假设用户名为 TEST):

GRANT EXECUTE ON DBMS_CLOUD_AI TO TEST;
GRANT EXECUTE ON DBMS_CLOUD_PIPELINE TO TEST;
这一步是确保目标用户能够顺利调用 AI 相关功能的基础。通过授予 DBMS_CLOUD_AI 和 DBMS_CLOUD_PIPELINE 包的执行权限,用户就能够访问和使用数据库中的 AI 模块,从而支持与 AI 服务的集成。这对于数据库管理员来说是确保用户能够执行 AI 功能的关键操作。

2. 配置访问外部 AI 接口的网络权限

允许数据库访问外部 API 服务,例如 Cohere 的 API:

BEGIN  
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host => 'api.cohere.ai',
    ace  => xs$ace_type(
              privilege_list => xs$name_list('http'),
              principal_name => 'TEST',
              principal_type => xs_acl.ptype_db
            )
  );
END;
/

为了能够实现数据库与外部 AI 服务的互联互通,必须配置网络权限。通过设置访问控制列表(ACL),可以指定数据库可以访问的外部主机及其相应的服务权限。这一配置能够确保数据库在与 AI 服务交互时能够进行安全、受控的访问,防止未经授权的外部请求。

二、配置 AI 服务凭证

1. 删除旧凭证(如存在)

EXEC DBMS_CLOUD.DROP_CREDENTIAL('OPENAI_CRED');

如果存在过期或不再使用的凭证,首先需要删除它们。这样可以避免潜在的认证冲突,并确保新的凭证能够顺利生效。在部署和更新过程中,管理凭证的生命周期至关重要。

2. 创建新的凭证

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'SELECTAI_CRED',
    username => 'your_email@example.com',  -- 替换为你的账号
    password => 'your_api_key_here'        -- 替换为你的 API 密钥
  );
END;
/

凭证的创建是与外部 AI 服务建立连接的关键步骤。这里需要指定用户名和 API 密钥,这些凭证将用于验证数据库对外部 AI 服务的访问权限。在生产环境中,建议将密钥存储在安全的管理系统中,而不是硬编码在 SQL 语句中,以提高安全性。

3. 验证凭证创建情况

SELECT * 
FROM USER_CREDENTIALS 
WHERE CREDENTIAL_NAME = 'SELECTAI_CRED';

创建凭证后,验证其是否正确生成非常重要。通过查询凭证信息,可以确认凭证是否成功创建,并确保数据库在与 AI 服务交互时能够正确进行身份验证。这样做可以避免因凭证问题导致的连接失败或安全问题。

三、创建并配置 AI Profile

Profile 是 Oracle 用于配置 AI 服务使用参数的抽象对象,类似于一个 AI 的“连接配置文件”。

1. 删除已有同名 Profile(如有)

EXEC DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'SELECTAI');

在创建新 Profile 之前,必须先检查是否存在同名的旧 Profile。如果存在,应该删除它,避免发生配置冲突。删除旧的 Profile 是为了确保新的配置能够生效,数据库能够使用正确的配置与 AI 服务进行交互。

2. 创建新的 Profile

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name   => 'SELECTAI',
    attributes     => '{
      "provider": "cohere",
      "credential_name": "SELECTAI_CRED",
      "model": "command-r-plus",
      "object_list": [
        {"owner": "SHIJW", "name": "ORDERS"},
        {"owner": "SHIJW", "name": "ORDER_ITEMS"},
        {"owner": "SHIJW", "name": "PRODUCTS"},
        {"owner": "SHIJW", "name": "USERS"}
      ]
    }'
  );
END;
/

创建新的 AI Profile 时,必须指定 provider(AI 提供商)和 credential_name(凭证名)等参数。此外,object_list 中指定了数据库表(如 ORDERS、PRODUCTS 等)是 AI 服务将访问的数据。通过这些配置,数据库能够使用指定的 AI 模型与数据进行交互,从而完成智能查询和数据分析。

四、查看并启用 AI Profile

1. 查看 Profile 及其属性

SELECT a.profile_name, a.status,
       b.attribute_name, b.attribute_value
FROM user_CLOUD_AI_PROFILES a
JOIN user_cloud_ai_profile_attributes b
  ON a.profile_id = b.profile_id
WHERE a.profile_name = 'SELECTAI';

通过查询数据库中的 user_CLOUD_AI_PROFILES 和 user_cloud_ai_profile_attributes 表,可以查看已创建的 Profile 及其相关属性。确保所配置的 Profile 是正确的,并且能够满足与 AI 服务的交互需求。

2. 启用 Profile

BEGIN
  DBMS_CLOUD_AI.SET_PROFILE(
     profile_name => 'SELECTAI'
  );
END;
/

启用 Profile 后,数据库可以开始使用该 Profile 与外部 AI 服务进行交互,处理来自用户的自然语言查询或执行 AI 驱动的数据分析任务。启用 Profile 是实现 AI 功能的关键一步。

五、使用自然语言与数据库对话

现在,一切准备就绪!你可以用自然语言进行查询,比如:

示例 1:基础对话测试

微信图片_20250517_000221_786.png

示例 2:验证自然语言查询准确性

微信图片_20250517_000252_479.png

示例 3:自然语言解析成sql

e6739aea75baab9bd1bfa80a968b828b.png

六、总结

通过 Oracle 的 DBMS_CLOUD_AI 包,我们可以轻松集成外部 LLM(如 Cohere 或 OpenAI),并利用自然语言驱动对数据库的访问。这不仅降低了业务人员访问数据的门槛,也为开发更智能的数据库应用铺平了道路。通过这种方式,数据库的智能化程度显著提升,能够帮助企业更加高效地从数据中挖掘价值。

如果你正在使用 Oracle 23ai,并希望让你的数据库“会说话”,不妨动手试一试!

hhh6.jpg

最后修改时间:2025-05-26 20:50:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论