更新时间:2025-07-07 GMT+08:00
分享

准备智能分析助手数据

使用智能分析助手,建议准备“干净”、“简单”、“适量”的数据才能发挥更好的效果。

“干净”的数据

  • 数据内容需与业务口径一致。

    某些原始表,为了节省存储空间,会使用数值/代码来存储枚举值,如用0、1、2来存储男性、女性、未知,如果不对数据做清洗,模型无法将数字和性别做出对应。其余类似的情况还有口语表达和书面表达之间的区别,比如数据中存储了书面表达的内容,而用户提问往往采用口语表达。DataArts Insight提供了三种能力,可以帮助缓解上述问题:

    • 新建维度:用户可以通过新建一个虚拟列,将数字/代码映射为具有语义的文本。

      通过“数据管理 > 数据集”在数据集详情中新建维度来完成内容映射,请参考新建维度

      图1 新建维度入口
      图2 新建维度字段表达示例
    • 同义词和关键词:
      • 对于一些口语化的表达,可以通过编写同义词和字段描述来帮助模型理解。例如:农业银行的全称是“中国农业银行”,可能会缩写为“农行”,DataArts Insight提供了同义词配置,来帮助模型检索、理解。

        通过“数据管理 > 数据集”在数据集详情问答配置页签中配置同义词来提升模型理解。请参考问答配置(可选)

        图3 同义词配置入口
        图4 同义词配置示例
      • 同义词的作用是将某个数据中存在的枚举值,映射为一个用户常用问法。但有时候则需要反方向做映射,比如在金融行业,“基保理”是一个业内术语,指代的是“基金”、“保险”、“理财”,它是三个词汇的组合词,无法通过配置同义词完成。DataArts Insight提供了关键词改写,能将用户提问中包含的“基保理”改写成“基金”、“保险”、“理财”。

        通过“问答管理 > 智能分析助手”在智能分析助手详情页“知识库配置 > 问题关键词改写”配置关键词改写,来改变用户问题。请参考配置关键词

        图5 添加关键词入口
        图6 添加关键词示例
        图7 智能分析助手关键词改写效果图
  • 数据内容尽量不具有歧义。
    大模型在缺少业务知识背景的情况下,难以鉴别歧义。比如数据中如果同时存在“客户名称”、“用户名称”两列,或者存在非常近似的两个枚举值,比如“吉林省”和“吉林市”,当前模型无法确认要使用哪一列和枚举值来回答用户问题(比如“王强的销售额”,“吉林的GDP”),请尽量避免此类数据歧义。DataArts Insight智能分析助手具备一定的歧义检测能力,主动提示用户确认问题中的歧义。
    图8 DataArts Insight会主动提示用户问题的歧义
  • 数据内容尽量不存在冗余。

    某些加工后的业务表的首要目的是用于报表展示,所以其内容可能存在冗余。例如,某用户的消费记录的维表和明细表同时加工到某数据表后,会存在冗余(年收入一列被冗余存储),在此表中提问用户的年收入时,则需要提前将聚合方式改为“无聚合”才能正确回答。

    通过“数据管理 > 数据集”在数据集详情页数据预览页签中进行字段配置,设置默认聚合方式。请参考字段配置
    表1 数据表示例

    用户ID

    消费日期

    消费金额

    商品类别

    年收入

    3130102182

    2024-12-13

    301.13

    日用品

    100,000

    3130102182

    2024-12-14

    345.59

    食品

    100,000

    3130102182

    2024-12-14

    1.29

    云服务

    100,000

    3130102182

    2024-12-15

    103.1

    服装

    100,000

  • 字段类型被正确设置。

    ChatBI对字段类型是敏感的,特别是时间字段。错误设置的字段类型容易使ChatBI生成的SQL无法执行。

“简单”的数据

  • 指标已计算/可计算

    当前大模型对指标的计算能力偏弱,往往无法写出合适的指标加工逻辑。如果能够提前将指标加工好,作为数据列加入到数据中,让大模型专注于执行查询而非计算。DataArts Insight提供了指标管理平台,用户可以提前定义指标的计算逻辑,模型将定义好的指标视作数据列即可。

    新建指标请参考创建指标

    图9 编辑指标示例图
  • 单一的宽表

    当前的ChatBI对自动选取多个数据表,JOIN后再执行查询的准确率较低。我们建议用户提前将数据加工成一个单一的宽表,让ChatBI专注于做好数据查询。为此,DataArts Insight提供了提前定义多表关联的能力,用户可提前定义好数据关联关系,模型将其视作宽表,专注于宽表的数据查询。

    通过“数据管理 > 数据集”在数据集详情页定义多表关联关系。请参考多表级联建模

    图10 选取多个数据表示例图
    图11 建立多表关联示例图
  • 数据粒度保持统一。
    一些企业可能会在同一个数据表中存储不同粒度的数据,以便制作报表。比如在不同层级结构上数据会不断进行汇总,并且汇总数据和明细数据被同时存在一个表中。比如,省、市、区/县的GDP数据都同时存在一个宽表中,如下表所示:
    表2 2023年广东省GDP数据示例表

    /

    GDP(亿元)

    人均GDP(元)

    广东

    -

    -

    135,673

    106,986

    广东

    深圳

    -

    34,606

    195,959

    广东

    深圳

    福田

    5,705

    375,053

    广东

    深圳

    罗湖

    2,808

    273,623

    ChatBI习惯将上述表作为明细表,只存储最细粒度的数据,如果需要取粗粒度数据则向上汇总,如提问广东省的GDP时,ChatBI往往会写出如下SQL,从而得到错误的结论,数据存在冗余。

    SELECT SUM(`GDP(亿元)`) FROM table WHERE `省`='广东'

    解决此类问题,最好从源头抓起,杜绝在一张表中存储不同数据粒度的数据DataArts Insight中,可以利用绑定条件来适配上述数据结构,比如可以为“省”这一列绑定“市”为空且“区县”为空。

    通过“数据管理 > 数据集”在数据集详情页数据预览页签中进行字段配置,为字段绑定条件。请参考字段配置

    图12 绑定条件入口
    图13 为字段设置绑定条件示例

    生成SQL时则会增加如下条件,即可获得正确查数结果。

    SELECT SUM(`GDP(亿元)`) FROM table WHERE `省`='广东' 
    AND `市` IS NULL AND `区县` IS NULL

“适量”的数据

列数不建议超过100

一般而言,数据列越多,而模型的输入token数量则会相对变多,对模型的准确率造成影响。此时需引入检索来筛选与用户问题相关的列,而检索的准确率和召回率则又会为模型提示词生成的精度带来影响。所以,我们推荐宽表的列数要适量,最好控制在100列以内。

相关文档