在Data Copilot中调优NL2SQL效果

DMS Data CopilotDMS基于阿里云大模型构建的数据智能助手。其结合了DMS熟练的数据管理和数据使用能力,可帮助开发、运维、产品、运营、分析师和数据库管理员,更高效、规范地使用和管理数据。本文为您介绍如何使用Data Copilot。

公测说明

  • 目前Data Copilot功能处于全网公测阶段,公测期间模型资源免费使用。如有任何疑问,请加入钉钉群(群号:44962304)联系DMS技术支持。

  • 为提高Copilot回答问题的准确率,DMS需要获取数据库实例的元数据信息(不会获取实际数据),因此需要您为实例开启安全托管

使用限制

  • Data Copilot基于元数据构建prompt,由于模型的限制,当数据库数据过多时,Copilot仅会对一部分元数据(表、字段)进行采样,可能会忽略一些信息。

    因此,Copilot在大型数据库中的效果可能不如在小型数据库中表现得出色。

  • Data Copilot通过表、列的命名及注释理解数据库,因此,规范的表、列命名及完整的注释可以提高返回结果的准确率。

免费体验Copilot

阿里云提供了数据库解决方案DB+AI体验馆,您无需购买任何资源,即可在线体验DMS Data CopilotNL2SQL和图表推荐功能,带您真实体验DMS产品智能服务能力。具体操作,请参见免费体验ChatBI on DMS智能问数

SQL窗口使用Copilot

前提条件

  • 已为实例开启安全托管。

  • 具有目标数据库的查询权限。查看权限操作,请参见查看我的权限

使用入口

  1. 登录数据管理DMS 5.0
  2. 单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > SQL窗口 > SQL窗口

    说明

    若您使用的是非极简模式的控制台,在顶部菜单栏中,选择SQL窗口 > SQL窗口

  3. 请先选择数据库对话框中,搜索并选择数据库,单击确认

  4. 在页面上方单击image,开始使用Copilot。Copilot功能演示,请参见Copilot功能演示

    Copilot将在当前数据库的所有表作用域内进行查找。

Copilot功能演示

生成SQL

SQL Console使用智能小程序生成SQL

SQL Console界面输入注释后,按下Enter,便可以直接触发智能小程序生成SQL语句。

说明
  • 注释格式为:两个半角连接号(-)+空格+自然语言(包含文字和符号)。例如-- 查找小明在哪个城市买的手机

  • 按下Tab键接受智能生成的SQL语句。

例如,查找小明在哪个城市买的手机,并显示手机型号。

-- 查找小明在哪个城市买的手机,并显示手机型号。
SELECT
  city,
  item_id AS phone_model
FROM
  orders_test
WHERE
  buyer_name = '小明'
  AND item_id LIKE '%手机%';

Copilot对话框中生成SQL

  1. 输入查询、分析的自然语言。

    1. 提出问题后,Copilot会根据表的备注和问题的相关表,分析并选择回答问题需要使用的表。

      image

    2. Copilot选择的表可信度较高时,Copilot会自动进入生成SQL的步骤。

      说明

      如果Copilot无法确认哪些表数据符合您的需求,或筛选出的表不符合您的需求时,您需要手动调整表,选择并添加合适的表。

  2. 可选:查看表的详细信息。

    Copilot找到的关联表区域,单击查看,即可查看表的相关信息,包括表数据、表所在的数据库、数据行数、已有的数据库权限,表的字段信息、索引信息等。

    image

  3. Copilot生成SQL。

    • 如果您对生成的SQL满意,可以复制到SQL ConsoleNotebook中执行。

    • 如果您对生成的SQL不满意,您可补充反馈,Copilot将会根据反馈修改SQL,并自动提取反馈中隐含的业务知识。

      image

NL2SQL

NL2SQL支持使用思维模板功能,让您能够查看Copilot生成SQL的思考过程。您也可以在知识库中新增或编辑思维模板供AI参考,以提升查询结果的准确性和可解释性。

AI思考过程示例:

Copilot中提问查询小红在哪个城市购买的手机,AI找到相关联的表,并给出选择目标表的原因。从度量(指标)、维度(筛选条件)、综上三个方面给出分析过程,并为您生成SQL语句。

image

管理业务知识

  • 增加知识

    目前,DMS支持通过Copilot界面以问答交互的形式积累业务知识、支持用户自助补充业务知识,和通过数据增强链路构建业务知识。生成业务知识后,在Copilot生成SQL时会引用相关的业务知识,并标注出对业务知识的引用。

    通过知识库功能手动添加知识

    1. 登录数据管理DMS 5.0
    2. 单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > 数据资产 > 知识库

      说明

      若您使用的是非极简模式的控制台,在顶部菜单栏中,选择数据资产 > 知识库

    3. 知识粒度页签下,单击新增

    4. 新增知识面板,填写描述内容思考过程,选择知识类型知识等级关联库等参数信息。

      知识类型选择SQL记录时,才会出现思考过程参数。建议您按照DMS提供的模版格式填写,以确保获得较好的效果。

      思考过程(即思维模板),示例如下:

      度量(指标):用户询问了加州各学校的成绩情况,并希望知道哪个学校最好。根据上下文,需要计算每个学校的总平均成绩。
      维度(筛选条件):用户问题里没有提到特定的筛选条件,单核心维度为学校名称。
      综上,需要使用satscores表,sname列,其中sname作为projection选择,计算总平均成绩用于排序,不涉及分组。
    5. 单击确定

    通过Copilot自动生成知识

    • Copilot生成的信息点赞、反馈都会生成知识。更多信息,请参见Data Copilot(新)

      • 点赞的SQL以及问题描述会自动被录入知识库,且知识类型为SQL记录、知识等级为待补充。

      • 反馈的知识点以及修改的SQL会自动被录入知识库,且知识类型为片段知识、知识等级为待补充。

    • 通过数据增强链路构建知识。

  • 验证知识

    表详情页业务知识页签下,您可审核生成的业务知识是否正确,如果正确,您可以将待审核待验证知识等级调整为已验证

    说明

    仅数据库开发人员、库表Owner有权限验证知识。

  • 调整知识

    如果业务知识不正确,您可在SQL引用的知识库区域编辑知识,或在知识库功能中进行调整。在知识库功能中调整知识的操作,请参见知识库

    image

管理SQL知识

在使用Copilot时,为减少AI出错,DMS引入了知识库和相似查询机制。

image

SQL续写

输入一段SQL后,通常需要等待1~4秒(等待开始续写的时间与续写的长度相关),智能助手可自动续写SQL。

说明

按下Tab键接受智能续写的SQL语句。

image

管理相似SQL

Copilot可以使用历史问题作为参考生成SQL;Agent只会使用已验证的知识。

  • 生成相似的问题

    如果您对Copilot生成的SQL很满意,可以在右下角点赞,点赞后即可保存本次查询记录。后续如果提问类似的问题,Copilot会参考相似问题生成SQL。

    image

  • 删除已保存的相似问题

    双击表名称,进入表详情页面,在历史问题页签下删除问题。

    image

报表推荐

成功执行SELECT语句后,在执行结果区域的左侧单击图表,支持以可视化图表展示数据。您还可以进行如下操作:

  • 下载图表:单击图表区域右上角的下载图片

  • 使用智能推荐的图表:单击图表区域右上角的换一个。选择智能推荐的图表后,将会清空当前配置的内容。

  • 将图表应用至仪表盘。仪表盘的更多信息,请参见仪表盘

image.png

相关操作

  • 使用问数Agent

    数据开发人员使用Copilot进行数据查询、补充知识、调优NL2SQL等操作后,可以使用问数Agent功能,以应对产品、运营甚至外部需求方的数据问答需求。Agent是通过自然语言交互方式获取数据,用户无需熟悉表和SQL,只需提出问题即可获得所需结果。

  • 基于Dify+NL2SQL搭建ChatBI

    Dify on DMS+NL2SQL为您构建了完整的ChatBI方案,让复杂的数据分析触手可及。您只需要直接提出问题,DMS ChatBI就能够通过强大的AI工具理解您的意图,并利用NL2SQL将其转换为可执行的SQL语句。通过DMS提供的专属插件,将SQL语句下发至目标数据库执行,并以清晰、直观的可视化图表展示分析结果。

  • 管理知识库

    知识库中的知识可以帮助Copilot智能助手更好地理解、回答问题,并实现自动化决策和推理。

常见问题

  • Q:在对Copilot生成的SQL较为满意的情况下,为什么需要给SQL点赞?

    A:点赞操作可以触发Copilot保存SQL。后续提出相似的问题,能够大大提高回复的准确率。

  • Q:当Copilot生成的SQL与提问不符时,为什么需要补充用户反馈?

    A:补充用户反馈可以提高Copilot回复问题的准确率。