RDS Agent 智能问数最佳实践

更新时间:
复制 MD 格式

RDS Agent可以理解已纳管数据库的 Schema 和业务语义,将自然语言问题转换为只读 SQL,并根据查询结果给出业务答案。本文以 RDS Agent(兼容 Hermes Agent)为例,通过一次商品销售额分析,展示从知识库增强、问题推荐、智能问数到独立校验的完整能力链路。

前提条件

  • 已创建并正常运行 RDS Agent(兼容 Hermes Agent)。

  • 已配置可用的模型服务,并能够进入 RDS Agent(兼容 Hermes Agent)WebUI,具体操作,请参见快速入门RDS Agent(兼容Hermes Agent)。

  • 已使用只读数据库账号纳管目标数据库。

  • 数据库连接正常,并已在控制台生成或更新知识库。

  • 目标数据库中存在可供查询的业务数据。

注意事项

  • 知识库用于增强 RDS Agent(兼容 Hermes Agent)对业务领域、指标口径、表用途和关联关系的理解,不存储订单、销售额等业务数据。用户正式问数时,RDS Agent(兼容 Hermes Agent)会结合知识库访问已纳管数据库并返回查询结果。

  • 查询敏感数据时,应使用脱敏视图、列级权限或受控数据集。

  • 不在会话中粘贴数据库密码、AccessKey 或大批量敏感明细。

  • 本文数据来自 RDS Agent(兼容 Hermes Agent)测试环境,仅用于展示能力与校验方法。实际表结构和查询结果以用户数据库为准。

提问建议

在开始问数前,建议参考以下提问模板组织问题,以获得更准确的查询结果:

统计<时间范围>内的<指标>,按<维度>汇总。
指标口径为<计算公式>,仅包含<过滤条件>,时区为<时区>。
按<排序方式>返回前<N>条,并展示最终只读 SQL、真实结果和口径说明。
  • 多连接环境中应明确目标数据库连接。

  • 对可能存在多种定义的指标,应补充时间范围、时区、状态、退款和去重规则。

  • 先用聚合与 LIMIT 验证逻辑,再扩大查询范围。

步骤一:准备测试业务数据(可选)

本文使用 MySQL 数据库 test_db,初始化了订单主表 orders 和订单明细表 order_items。两张表通过 order_id 建立一对多关系:一条订单可以对应多条商品明细。

说明

下述测试数据仅用于复现实例中的问数效果。您无需使用相同表名或数据量,实际使用时以已纳管数据库的真实 Schema、业务口径和查询结果为准。

orders 表包含以下字段:

字段

类型

约束或用途

order_id

bigint unsigned

主键,订单唯一 ID。

user_id

bigint unsigned

下单用户 ID。

order_status

状态字段

记录订单当前业务状态。

total_amount

decimal(10,2)

订单总金额。

create_time

datetime

下单时间。

update_time

datetime

最后更新时间。

order_items 表包含以下字段:

字段

类型

约束或用途

item_id

bigint unsigned

主键,明细唯一 ID。

order_id

bigint unsigned

外键,关联 orders.order_id。

product_name

varchar(255)

下单时的商品名称快照。

unit_price

decimal(10,2)

下单时的商品单价。

quantity

int unsigned

购买数量。

本次实测数据包含 13 条订单和 22 条订单明细,覆盖不同用户、订单状态、下单时间、商品、单价和购买数量。按 unit_price * quantity 汇总,全部商品销售额为 12,583.00 元。

步骤二:在控制台完善知识库

数据库纳管完成后,可以在控制台维护该连接的知识库,为后续取数问数补充业务上下文。

  1. 进入 RDS Agent(兼容 Hermes Agent)应用详情页。

  2. 单击数据库纳管页签。

  3. 在连接列表中选择目标数据库。

  4. 单击知识库管理页签。

  5. 查看或维护 AI 知识、用户知识和表知识。

知识库包含以下内容:

知识类型

作用

维护建议

AI 知识

根据数据库结构生成业务领域、数据流向和核心表关联说明。

检查自动生成的描述是否符合实际业务,必要时进行编辑。

用户知识

补充企业自定义术语、指标口径和业务规则。

仅添加已确认的知识,例如"销售额"的定义、有效订单状态和退款处理规则。

表知识

展示表用途、字段和结构信息,帮助 Agent 选择正确的数据对象。

重点核对表含义、关键字段及主从表关系。

当表结构或业务定义发生变化时,单击更新知识库重新生成相关知识。单击重新加载可刷新当前页面的展示结果。

步骤三:查看推荐问题

新建会话时,RDS Agent(兼容 Hermes Agent)可以根据当前数据库的 Schema 和业务内容生成推荐问题,帮助您快速发现可查询的数据主题。

本次实测生成了以下推荐问题:

  • 哪些商品的销售额贡献最高?

  • 购买次数最多的前 5 位用户是谁?

  • 上个月的订单销售总额是多少?

  • 销量排名前 10 的商品有哪些?

  • 不同订单状态的分布比例是怎样的?

您可以直接选择推荐问题,也可以在其基础上补充时间范围、状态过滤、指标公式和返回数量。推荐问题用于降低提问门槛,不代表业务口径已经完全确定。

步骤四:发起智能问数

本次选择商品销售额分析,并补充明确的计算公式和输出要求。提示词示例如下:

请统计当前已纳管数据库中销售额贡献最高的 5 个商品。
销售额按 order_items.unit_price * order_items.quantity 计算,按 product_name 汇总。
返回商品名称、销售数量、销售额和销售额占比,按销售额降序排列。
同时展示生成的 SQL 和查询结果。

RDS Agent(兼容 Hermes Agent)结合知识库中的业务语义和表关系选择目标表与字段,在已纳管数据库中完成查询。Agent 调用 2 个工具,耗时约 30 秒,生成的 SQL 语句如下:

SELECT
    product_name AS 商品名称,
    SUM(quantity) AS 销售数量,
    SUM(unit_price * quantity) AS 销售额,
    CONCAT(ROUND(SUM(unit_price * quantity) * 100.0 / (SELECT SUM(unit_price * quantity) FROM order_items), 2), '%') AS 销售额占比
FROM order_items
GROUP BY product_name
ORDER BY 销售额 DESC
LIMIT 5;

查询结果如下表所示:

排名

商品

销售数量

销售额

销售额占比

1

平板电脑

1

1,899.00 元

15.09%

2

RGB 灯带

8

1,600.00 元

12.72%

3

27 寸显示器

1

1,599.00 元

12.71%

4

智能手表

1

1,299.00 元

10.32%

5

机械键盘

1

899.00 元

7.14%

除查询结果外,RDS Agent(兼容 Hermes Agent)还会输出分析摘要,对 Top 5 商品的销售额分布和占比进行文字解读。

检查结果时,建议确认以下事项:

  • SQL 只使用真实存在的表和字段。

  • 指标公式、分组字段和过滤条件符合业务定义。

  • 金额计算没有在聚合前进行不必要的取整或浮点转换。

  • 排序字段和 LIMIT 数量符合问题要求。

  • SQL 只包含查询操作,且最终数字来自真实执行结果。

步骤五:执行独立校验

对销售额、订单量、转化率等重要指标,可以要求 RDS Agent(兼容 Hermes Agent)改变计算路径,使用另一条 SQL 重算总量和汇总值。校验提示词示例如下:

请用一条独立的只读查询校验刚才的结果:
计算全部商品总销售额、Top 5 合计销售额和占比。
使用 DECIMAL 原始精度,不在聚合前 ROUND 或转换浮点数。
展示校验 SQL 和结果。

本次独立查询中,Agent 调用 4 个工具,耗时约 27 秒,生成的校验 SQL 使用嵌套子查询分别计算全部商品总销售额和 Top 5 合计销售额,避免与步骤四使用相同的聚合路径。校验 SQL 如下:

SELECT
    (SELECT SUM(unit_price * quantity) FROM order_items) AS `全部商品总销售额`,
    (
        SELECT SUM(product_sales)
        FROM (
            SELECT SUM(unit_price * quantity) AS product_sales
            FROM order_items
            GROUP BY product_name
            ORDER BY product_sales DESC
            LIMIT 5
        ) AS top5
    ) AS `Top5 合计销售额`,
    CONCAT(ROUND(
        (SELECT SUM(product_sales) FROM (SELECT SUM(unit_price * quantity) AS product_sales FROM order_items GROUP BY product_name ORDER BY product_sales DESC LIMIT 5) AS top5)
        / (SELECT SUM(unit_price * quantity) FROM order_items) * 100,
    2), '%') AS `Top5 销售额占比`;

校验结果如下表所示:

校验项

结果

全部商品总销售额

12,583.00 元

Top 5 合计销售额

7,296.00 元

Top 5 销售额占比

57.98%

若两次结果不一致,应逐项比较时间范围、过滤条件、关联方式、聚合顺序、类型转换和取整位置,不能在未验证前直接归因于缓存或精度问题。

说明

对销售额、订单量、转化率等重要指标,建议使用独立查询校验结果,不能仅凭单次查询直接采信。