大模型驱动的新一代 BI 平台,Sugar BI 开启智慧决策新模式
本文整理自 2024 年 4 月 16 日的 2024 百度 Create 大会上的《大模型驱动的新一代 BI 平台如何开启智慧决策》分享。
全文包括了可视化 BI 分析技术架构、智能图表推荐策略与规则设计、Sugar Bot 智能问数的技术实现流程,以及目前的场景应用等。
1 Sugar BI 产品介绍
首先,为大家介绍 Sugar BI 近几年的发展路径:
Sugar BI 的前身是百度集团内部的报表平台 ShowX。在 2016 年覆盖了 300 多条产品线、运行几万张报表。ShowX 团队在支持内部业务的过程中不断打磨着产品、完善产品功能,获得了众多业务线及内部用户的好评。
2018 年,我们对 ShowX 做了完整的重构和升级,并将 ShowX 更名 Sugar BI, Sugar BI 在百度智能云以 SaaS 的形式对外提供服务。在 Sugar BI 上线的第一年,日活用户超过 1 w+ 。
在接下来几年时间里,我们陆续推出了 2.0 和 3.0 版本,不断提升 Sugar BI 的可视化图表数量以及支持的数据源数量,支持了更多的 BI 分析能力与第三方的集成能力,夯实了 BI 平台的各项功能,也获得了更多用户的认可。
从 2021 年开始,Sugar BI 开始探索智能分析方向,致力于打造领先的智能 BI 产品,不断将 AI 能力融合进自身产品中,希望利用 AI 能力来辅助用户数据分析。在 4.0 版本中, Sugar BI 推出了各项增强分析的功能,如自动分析、波动归因分析等。
在 2023 年以及今年,在大模型和生成式 AI 的浪潮下,在海量数据中快速发现规律、获取洞见,辅助经营决策,成为当前许多企业关注的重点。我们深度融合大模型的能力,推出了智能问数 Sugar Bot,使得需要数天才能完成的任务缩短至几分钟,大幅度提升了用户的数据分析效率。
![](https://static001.geekbang.org/infoq/f1/f18b0fcb5ada38daadf39788b0824509.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
使用 Sugar BI,用户 5 分钟即可搭建专业的场景化 BI 分析页面。在 Sugar BI 平台上,只需添加数据源连接,基于数据表创建数据模型,通过鼠标点选拖拽可视化组件以及数据字段,即可快速地制作报表和大屏页面。在完成可视化页面的制作之后,可以发布并分享给其他用户,也可按需订阅,支持邮件、如流、飞书、企业微信、钉钉等多种推送方式。
![](https://static001.geekbang.org/infoq/c6/c6f052e982b07e9bc56391f8119f9c1f.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
Sugar BI 支持连接 30 多种数据源,包括了市面上几乎所有的场景数据库类型。支持连接的数据源包括关系型数据库如 MySQL、SQL Server、Oracle、PostgreSQL,还有国产的如达梦、人大金仓、华为 GaussDB 等。大数据方面 Sugar BI 支持如 Hive、Spark、Doris、Clickhouse、Presto 等。另外,Sugar BI 还支持对接一些 NoSQL 和时序数据库,例如 InfluxDB、Prometheus,以及 Redis、MongoDB 等。
当然,用户也可以上传 Excel/CSV 文件作为数据源,甚至可以手动填报录入数据,以及对接一些第三方的 API 接口。在开发调试的时候,还可以使用静态 JSON 的方式来快速搭建可视化的 Demo 效果。
最后,如果您的数据库在局域网,那么您的数据库不需要绑定公网 IP,只需要有一台能访问互联网的机器,并在机器上安装 Sugar BI 官方提供的内网隧道客户端,即可将数据库对接到 Sugar BI 进行可视化分析。并且 Sugar BI 还支持同源异库以及跨多数据源的数据交叉分析。
![](https://static001.geekbang.org/infoq/69/69cfea46e54f8a05b6b516cdd61981fe.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
Sugar BI 基于百度开源的 Echarts 以及 D3 图表库,支持 150 多种可视化组件。同时内置多种主题风格,用户只需要简单的配置就能搭建出美观实用的可视化页面。
除了常见的二维图表,Sugar BI 也支持了三维图表以及一些 3D 地图类组件、媒体组件、三维场景等,能让您的可视化效果更进一步。
![](https://static001.geekbang.org/infoq/68/6845e0aae67c5533cb01cd0c9652e585.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
同时,Sugar BI 在易用性上也满足各类人员角色的需求。在报表页面开发时,Sugar BI 采用完全零代码、拖拽式操作,通过鼠标点选、拖拽组件就能完成可视化页面的设计和制作。每个图表组件都拥有非常完整和丰富的配置,用户以零代码的方式即可获得精美、酷炫的的数据可视化页面。
用户在 PC 上搭建好报表页面后,Sugar BI 页面的布局也会自动优化适配移动端。这一切都不需要用户书写任何的代码和 SQL 语句,只要你懂数据、懂业务,就能完成对数据的快速可视化分析。
![](https://static001.geekbang.org/infoq/b0/b085a8f8dfa6bf28a3efb0f7df3e79b0.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
上面介绍了 Sugar BI 报表搭建相关内容,数据可视化同样也离不开可视化大屏。Sugar BI 内置了 60 多套专业设计的可视化大屏模板,涵盖了政务、教育、零售、金融、制造等垂直行业,能够满足大部分场景下用户的可视化需求。
并且 Sugar BI 的可视化大屏模板覆盖了 PC 和移动端两种不同的终端,用户基于模板,只需要对接自己的业务数据、并稍作修改,即可拥有炫酷的可视化大屏,真正做到开箱即用。
![](https://static001.geekbang.org/infoq/b4/b47d4892902cfbf602130df93ad2a31c.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
![](https://static001.geekbang.org/infoq/f9/f945b55fc6b15ecf1d05dca7376fd203.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
2 可视化 BI 分析技术
在 Sugar BI 定位于具有 AI 特色的可视化 BI 分析平台。为此,后续的工作我们着重突出了 Sugar BI 的三个能力:AI、BI、可视化。
下图是 Sugar BI 的整体架构图,我们将 AI、BI、可视化三大能力进行融合,使用容器化技术进行打包和部署。今天将为大家重点分享并剖析 Sugar BI 的 BI 与 AI 能力。
BI 能力:Sugar BI 基于数据模型构建了各种交互式分析,搭配交叉、留存、二次表计算等 BI 能力,适配对接用户的各种数据源。
AI 能力:Sugar BI 团队基于大模型进行了全新的尝试探索,推出了 Sugar Bot 智能问数模块,将 LUI 和 GUI 结合,给用户带来全新的 BI 体验。Sugar Bot 的底层采用百度文心系列大模型,依托千帆大模型平台进行开发。
![](https://static001.geekbang.org/infoq/90/90b92720a053fc939e6fefd2fda44d4e.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
下面,我将分别给大家详细介绍 Sugar BI 的 BI 和 AI 能力。首先,为大家介绍 Sugar BI 的 BI 能力,如下图所示:
数据源:前面我们说过 Sugar BI 支持对接丰富的数据源种类,一共超过 30 种数据源,支持了达梦、人大金仓、华为 GaussDB 等国产数据库。
数据模型:Sugar BI 可以进行单表、多表 Join,支持视图以及用户自定义的 SQL 视图,并且对字段进行自动的维度和度量的划分。
BI 引擎:在数据的交互性方面,Sugar BI 支持筛选、下钻、联动等;同时,在数据计算方面,Sugar BI 支持了在 SQL 查询中就能实现的计算字段或分桶分组。
计算引擎:Sugar BI 也支持数据查询完之后的二次表计算,甚至支持了特定场景下的一些特殊的计算,如留存分析、交叉透视、监控预警计算等,满足您在不同场景下各类数据计算的需求。
另外,在跨越多数据源的联邦查询场景中,Sugar BI 利用开源 Presto 的能力,自己搭建和运维了 Presto 集群,让用户可以跨数据库的多表 Join 查询分析。
![](https://static001.geekbang.org/infoq/99/99924dca73f073055447e62438dcd2c5.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
下面我将从数据模型、交互分析方面,进一步介绍 Sugar 的 BI 能力。
Sugar BI 的数据模型,是基于数据库中的数据表进行语义话表达,将多表之间的 Join 关系进行描述,并且能够自动帮助用户将字段进行维度、度量的区分,而且还可以建立一些虚拟的计算字段。这个过程中不需要用户懂 SQL,Sugar BI 平台能够自动地适配不同数据库之间的 SQL 方言。
例如:一个简单的 Demo,拖拽数据模型中几个字段到图表上进行绑定,最终生成的 SQL 查询语句可参考下图,本质上是实现了对两张表的 Join 的简单操作。
![](https://static001.geekbang.org/infoq/23/23a430e99b373e04a0fcdd820542de3f.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
懂技术的同学,可能也了解到数据模型它应该就是一个雪花模型。那什么是雪花模型呢,其实这个模型是从形状上和雪花非常相似,所以才叫雪花模型。
比如,大家可以参考下图,下图的模型有 7 张表 Join 组成,table2 到 7 都是围绕在 table1 周围的多张表,多张表形成了一个分叉的树形结构。在数据进行查询和提取时,我们采用了一个算法,叫做最近共同祖先寻找,如果查询的字段来自同一个表,那本次查询不需要 Join 多张表,只需要单表查询即可。
如果查询字段是 field3 和 field6,我们需要 Join 的表是 table1、table2 和 table3。同理如果是 field3 和 field13,我们需要 Join 的表是 table1、table2、table3、table7 这 4 张表。如果是 field7 和 field13,那我们就需要 Join 表 1、2、3、4、7 这 5 张表了,以此类推。
![](https://static001.geekbang.org/infoq/bb/bb9ffd6558f2db5265a2d2b5f4a7e369.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
下面为大家继续介绍 BI 的交互式分析。
Sugar BI 支持两种过滤组件模型,第一种是页面整体的过滤组件,第二种是单个图表的过滤组件,二者的的原理都是一样的。在用户进行数据筛选时,最终影响的是图表数据查询时的 SQL 语句,用户在进行数据筛选的整个过程相当于在 SQL 中增加了 Where 的筛选子句。
![](https://static001.geekbang.org/infoq/f6/f611666f5123391da7131cddfc9409a4.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
除了数据过滤组件,Sugar BI 也支持图表联动和下钻交互。图表联动和数据过滤组件非常类似,下图左侧的图表 A 就可以当成右边图表 B 的一个过滤组件,只不过在交互和配置上稍有不同而已,最终还是一样影响的右边图表 SQL 语句中的 where 子句。
图表下钻也是同样的原理。图表下钻是图表联动的进阶版本,它是在图表 A 发生点击等交互行为时才弹出呈现出来,或者在覆盖掉图表 A 上进行的展示。
![](https://static001.geekbang.org/infoq/04/04dc7a0d8eeb5202c89351f785dec7ce.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
以上就是 Sugar BI 关于 BI 能力的相关介绍。
3 智能图表推荐
下面将为大家详细介绍 Sugar BI 智能图表推荐,这部分也是智能问数 Sugar Bot 的可视化基础。正因为有了它,我们才能基于大模型进行智能化的探索。
3.1 智能图表推荐
智能图表到底是什么呢?下面我们将通过 Demo 视频展示智能图表的能力。
首先拖拽了「地区」字段,图表使用表格的组件展示了所有的地区名称。随后我们拖拽了「销售量」的度量字段,这时图表自动切换为饼图,展示了各个地区的销售量情况。紧接着我们拖入了「销售额」字段,这使得图表变成了折线图展示了这些数据。
然后我们删除了「地区」字段,图表切换成了指标卡片,直接用数字卡的形式呈现了「销售量」和「销售额」,这时我们接着删除「销售额」并且拖入「省份」这个维度字段,图表一下子变成了中国地图,用颜色的方式呈现了各个省的销售量数据,
最后,我们给「销售量」设置了降序的排序方式,图表自动切到排行榜,从大到小用排行的形式进行数据的呈现。
所以,智能图表就是具备了根据数据自动推荐最合适的可视化类型的能力。
3.2 智能图表的技术实现流程
Sugar BI 智能图表技术实现的大体流程,可参考下图:
步骤一:我们对平台中每种图表都抽象了各自的图表特征,用户在拖拽字段以及配置字段各种属性的时候,这些字段也相当于有了一些具体的特征。
步骤二:把这图表的各个特征作为「输入」,图表推荐模块会对这些类特征进行匹配和计算,「输出」最终的图表特列优先级列表,以及字段在图表上的字段放置策略。
步骤三:在匹配的过程中,还需要能够高优先级的兼容用户的指定内容,例如用户指定高优使用饼图进行呈现,那么就需要高优使用饼图,只有在数据没法使用饼图呈现时,才推荐其他类型的图表。
![](https://static001.geekbang.org/infoq/d7/d74f86f574a95febd895f80ec1f801bf.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
3.3 图表特征设计
每个图表都可以有多个特征,而且同一个图表可能会存在一些稍微不同的特性(例如折线和柱图的混搭)。
如下方右侧图,为我们列举了图表特征的详细描述,特征核心其实就是描述一种图表如何绑定数据字段,例如图表可以绑定几个维度字段、几个度量字段,是不是必须要有维度字段,度量字段有数据单位时是否高优使用某种图表类型等等。我们把这些特性进行泛化,从而形成特征配置。
![](https://static001.geekbang.org/infoq/58/5898c00f9bd5b4102ccd794d885cbb36.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
3.4 推荐策略
有了图表特征,我们还需要设计一套推荐的策略打分机制。在用户进行字段拖入时,保证最合适的图表能够获得最高的评分,然后按照评分进行排序,为用户推荐图表。
我们对评分设置了两种类型的规则,分别是强制规则、和可选规则。强制规则是每一项都是要被满足,可选规则是这种图表在某种情况下的加分项。
强制规则只要有一项不满足,那就是 0 分,所以多个强制规则之间我们采用相乘的方式进行积分。
可选规则之间使用相加的方式,最终得分是强制规则 * 可选规则,这也能保证强制规则只要一项没被满足,最终得分就是 0 。
![](https://static001.geekbang.org/infoq/f1/f18f10be62951186a251ee7d5e476477.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
在强制规则和可选规则中,强制规则要求必须被满足,例如折线图的 X 轴必须要绑定一个维度字段,Y 轴起码要绑定一个度量字段,这就是折线图的强制规则。
可选规则是加分项,例如度量字段设置了排序的时候优先使用排行榜,又例如维度字段是日期类型的时候,可能使用折线图来展示趋势会比较好,这些就都是各种图表的加分项特征。
当然,前面我们也提到过,在特定场景中,用户可能会指定高优的图表类型,下面我们讲述的智能问数 Sugar Bot 其中的场景之一。
![](https://static001.geekbang.org/infoq/96/96eb500126946f97649a1fcc6c7a50b3.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
4 Sugar Bot 智能问数
4.1 Sugar Bot 介绍
智能问数目前究竟能做什么、能达到怎样的效果,下面我们将通过电商场景的订单数据模型 Demo 视频,展示智能图表的能力。
大家通过上面的 Demo 可以清晰地看到,我们可以直接和 Sugar Bot 进行对话式的交互,让 Sugar Bot 帮我们对数据进行查询分析以及可视化呈现。同时,在对话交互的过程中,用户还可以针对 Sugar Bot 呈现的结果进行二次修改,用户不仅可以直观地了解到所有查询的维度、度量以及筛选字段,还可以查看具体的 SQL 语句。另外,利用大模型的能力,Sugar Bot 还可以对数据做总结归纳,帮助用户更好地理解和挖掘数据价值,支撑用户做出智慧的决策。
Sugar Bot 除了 LUI+GUI 形式的交互式问数之外,它还能作为 Copilot 辅助用户制作报表和可视化大屏。
我们继续看下一个 Demo 演示。
在报表/大屏的编辑时,Sugar Bot 支持了 Copilot 模式,通过问答得到的可视化图表可以快速「添加」到报表页面中,例如:演示中我们添加了 Copilot 中三个图表,同时数据分析结论也可以添加到报表中。不仅如此,添加到报表中的元素,我们还可以继续进行二次编辑,例如调整大小和更改数据绑定配置等等。最后,我们进行保存和退出,一份 report 报表就制作完成了。
目前 Copilot 还只具备添加图表的能力,对于图表的配置修改,例如大小、配色、各种下钻联动配置等等,后面在 Copliot 都可以实现,这些功能也都已经在开发中,请大家敬请期待。
4.2 整体架构
下面将为大家详细介绍 Sugar Bot 智能问数的技术实现部分。下图是 Sugar Bot 整体的架构,从用户的自然语言输入到最终的可视化结果呈现,主要有四个步骤。实现这一切的基石是前面介绍的 BI 数据模型。
提示词工程(也就是大家常说的 Prompt Engineering )。
NL2JSON:我们利用大模型做的 NL2JSON 提取(此处的 JSON 是指 SQL 语句的一种结构化表达)。
干预纠偏:对 JSON 结果做了一些干预纠偏(这一步主要是纠正大模型的一些幻觉和胡说八道的问题)。
智能图表:最后一步就是我们在上一个章节介绍的智能图表,智能图表主要根据数据来为用户自动修改、推荐合适的可视化展现形式。
![](https://static001.geekbang.org/infoq/f8/f8d7bea963ef01a0d9a68bf114194ca6.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
我们让大模型对用户的输入进行理解,提取用户需要查询的维度、度量,以及需要对数据做怎样的筛选、排序等,然后 Sugar Bot 利用既有的 BI 能力,基于数据模型来生成最终的 SQL 语句,最后对接智能图表的能力进行可视化的呈现。这其中,其实最重要的是提示词工程,下面为大家进一步介绍 Sugar Bot 提示词的相关内容。
4.3 提示词工程
Sugar Bot 的核心提示词包括以下六个部分:
字段 Schema 信息;
示例数据;
输出格式说明;
注意事项(包括用户可以录入私域知识,以及告诉大模型当前的时间);
构造一些 few-shot 示例;
用户输入的问题 query。
![](https://static001.geekbang.org/infoq/61/61eaf99efe2ae607076d46e515372b34.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
下面为大家展示一个具体的 prompt 格式:
prompt 前两行说明有哪些维度、度量字段,紧接着是维度的字段的几行简单示例数据,使用的 markdown 格式。
第 10、11 行是告诉大模型需要输出 JSON 格式的结果,并且详细描述了 JSON 的具体格式,例如维度、度量字段以及 filters 筛选是如何使用 JSON 来表示的。
第 13 行到 15 行是注意事项,这块嵌入的是用户在数据模型上录入的私域知识,以及当前时间。我们知道大模型是不知道当前的准确时间的,所以我们需要在 prompt 中告诉它,这样用户在问「上个月」这样的筛选操作时,大模型才能知道要如何筛选具体的日期时间
再后面就是非常重要的 few-shot 部分,我们给大模型列举了一些例子,告诉它一些问题的正确答案是什么,大模型具备非常强大的 contextlearning 上下文即时学习能力,最后才能用户输入的 query,大模型就能利用这个完整的 prompt,最终输出用户想要的查询的 JSON 格式。
可以看到,下图的 prompt 还是比较复杂的。在真实场景中,用户的 query 可能只有一句话,十几个字,但是我们通过提示词工程之后提交给大模型的 prompt 可能就会有上千个 token。
![](https://static001.geekbang.org/infoq/3e/3eff1a4f43a11656b126bf1c206b8019.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
4.3.1 Schema 信息处理
首先是维度、度量字段。Sugar Bot 智能问数是基于 BI 的数据模型,Sugar BI 的数据模型可以设置每个数据字段的别名,这样可以将数据表的英文字段名映射为语义化中文,甚至是某个垂直领域的专有名词。
![](https://static001.geekbang.org/infoq/3a/3aa7e1fa0458a8a22f848b34f3bdf98b.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
另外数据模型中也可以添加虚拟的计算字段,例如:利润 = 销售额 - 成本, 这样问利润的时候就能很大程度上降低大模型的理解难度。
![](https://static001.geekbang.org/infoq/18/1895faf53816d11caedf599bca095e68.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
最后我们还可以给某些字段做一些特殊的属性配置,例如设置地理字段,这样在可视化呈现的时候就能优先使用地图进行展示。
![](https://static001.geekbang.org/infoq/3e/3ed71899322cc35068852ffd761e38e5.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
4.3.2 few-shot
Sugar Bot 中设计了两种 few-shot 的自动生成方式:
首先是开箱即用的,冷启动方式,我们通过一定的规则来自动生成一些难易程度不等的 few-shot 示例,例如最简单的维度/度量查询「帮我查一下各个城市的销售额有多少?」, 再难一点的日期筛选例如「上个月的利润情况如何?」等等,然后在复杂数据筛选加上时间聚合如「华北地区 23 年 Q4,每个月销售情况怎么样?」,最后也可以加一些排序类型的如「上个月全国利润排名前 20 的城市是哪些?」。这些都是比较常用的用户问题,作为 few-shot 放到 prompt 中能很大程度帮助大模型理解当前要做的任务。
第二种 few-shot 就比较高级一些,它能够让整个系统越用越聪明,效果越用越好。Sugar BI 中支持了用户的点赞、点踩反馈,利用这些历史的点赞 query,通过向量化处理,Sugar BI 可以匹配到与用户当前 query 比较近似的点赞 query,把这些点赞 query 作为 few-shot 传递给大模型,将会得到更好的效果。并且利用这些点赞的 query,对大模型做 SFT 精调,达成了一个完整的数据飞轮,整套系统将达到一个正向的循环效果。
![](https://static001.geekbang.org/infoq/39/394b8abdd81019b261462f5a9883f453.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
4.3.3 私域知识
在私域知识方面,Sugar BI 在数据模型上允许用户录入一些垂直领域的行业知识,帮助大模型进行理解,达到更好的效果。
![](https://static001.geekbang.org/infoq/9c/9c196ced07fa4125757e7a2ac623e67c.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
4.3.4 图表类型指定
最后,利用大模型的 function call,Sugar Bot 智能问数可以优先考虑用户在 query 中指定的可视化图表方式,并且支持用户在界面进行图表类型的二次切换,灵活更换图表。
![](https://static001.geekbang.org/infoq/73/735de2229cba9f333e817854cc98e3d9.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
评论