ChatBI 之 SuperSonic 初尝试

一、背景

随着数据驱动决策的重要性日益增加,商业智能(BI)已经成为企业不可或缺的一部分。然而,传统的BI系统尽管在数据分析和报告生成方面发挥了重要作用,但仍然存在诸多痛点,限制了其在现代企业中的应用效果。

1.1 BI的历史演变与发展阶段

  1. 起源与早期发展(1950年代-1990年代)
    BI的雏形可追溯至19世纪,但真正系统化始于20世纪50年代。IBM研究员Hans Peter Luhn在 1958 年提出“商业智能系统”概念,强调通过技术将数据转化为决策支持信息。1989年,Gartner 分析师 Howard Dresner 正式将 BI 定义为涵盖数据存储和分析的统称,推动BI成为企业决策的重要工具。早期 BI 以 IT 主导的预定义报表为主,依赖数据仓库和 OLAP 技术,但实施周期长、灵活性差,仅适用于大型企业。

  2. 传统BI阶段(2000年代)
    此阶段以SAP、Cognos等工具为代表,采用单体架构,功能模块(数据摄取、处理、存储、可视化)紧密耦合。其三层架构包括:

    • 后端层:构建OLAP数据立方体,支持实时数据探索;
    • 语义层:定义KPI和业务逻辑;
    • 前端层:生成可视化报表。

    然而,传统BI存在成本高、响应慢、业务灵活性不足等问题,难以适应快速变化的市场需求。

  3. 自助BI阶段(2010年代)
    随着云计算和大数据技术发展,自助式BI(如Tableau、Power BI)崛起。这类工具允许非技术人员通过拖拽操作进行数据探索,降低使用门槛,并支持实时分析。数仓建模与可视化工具的结合,使得业务人员能独立完成数据分析。但此阶段仍受限于数仓建模的复杂度,下钻分析能力有限。

  4. 智能BI阶段(2020年代至今)
    AI和机器学习技术的融入推动BI进入智能化阶段。典型特征包括:

    • 增强分析:通过 NLP 实现“搜索式分析”,用户可直接提问生成可视化结果;
    • 预测与自动化:集成机器学习模型,支持趋势预测、异常检测等高级分析;
    • 实时数据处理:结合流计算技术(如Kafka、Flink),实现秒级响应。

1.2 传统BI的主要痛点

虽然传统BI工具在数据管理和分析上做了很多工作,但它们也有一些让人头疼的问题:

  1. 查数不方便:用传统BI工具查数据时,通常需要懂技术的人才能操作得好。这意味着业务人员得找IT部门或者专门的数据分析师帮忙拿数据。这样一来,不仅沟通多了,还容易产生误解,影响效率。
  2. 使用起来太复杂:这些工具的操作界面和技术要求对非技术人员来说太难了,很多人学不会怎么用。这就像是一道高墙,把很多人挡在外面,让数据的价值不能被充分利用,拖累了整个企业的数据分析能力。
  3. 经验难以传承:在用传统BI的过程中,那些宝贵的经验和发现往往只存在个人脑子里,没有好的办法把这些变成公司的财富。所以,一旦关键员工离职,这些知识也就跟着走了,对公司长远发展不利。
  4. 实时性不够强:传统BI系统处理实时数据的能力不怎么样,生成报告的时间也挺长的。这对需要快速应对市场变化的企业来说是个大问题,可能会错过最佳决策时机。
  5. 跨部门合作困难:不同部门之间可能对数据的理解不一样,这就导致合作时容易产生误会和混乱。而且,多个工具之间的连接也很复杂,增加了数据流动的风险和管理难度,降低了工作效率。

1.3 智能化BI的优势

为了解决这些问题,智能化BI带着人工智能(AI)特别是大语言模型(LLM)技术来了。它通过一些新功能,让用户体验更好,数据分析更快更准:

  1. 自然对话就能查数据:智能化BI有了对话式的界面,用户可以直接用说话的方式问问题,系统自己就能理解并给出答案。这样,不管是什么水平的用户都能轻松地获取和理解数据,不需要懂太多技术。
  2. 数据处理快如闪电:依靠AI强大的数据处理能力和预测算法,智能化BI可以瞬间分析海量数据。这让企业能够更快地发现问题,并迅速做出反应,非常适合现在这种节奏快、变化多的市场环境。
  3. 自动挖掘深层信息:有了机器学习的帮助,智能化BI可以自动找出数据里隐藏的模式和趋势,提供深入的见解。这样,做决定的时候就更有依据,减少了人工操作的麻烦。
  4. 量身定制的服务:通过对用户过往行为的分析,智能化BI还能提供个性化的建议和服务。这样的专属体验不仅让用户更满意,也让数据分析的效果更好。
  5. 数据展示更直观:除了普通的图表,智能化BI还有更多生动、动态的方式来展示数据。这让用户更容易看明白数据背后的故事,并且方便跟别人分享这些信息。

总的来说,从传统BI到智能化BI的转变,不仅仅是技术的进步,更是为了满足现代企业对速度和灵活性的需求。通过解决传统BI的不足,智能化BI为企业提供了更强有力、更容易使用的数据分析工具,帮助企业在竞争中占据有利位置。

1.4 公司痛点

目前,使用的 BI 工具是开源版本的 MetaBase,常用数据源有:ODPS(官方不支持,需要额外开发依赖包)、Hologres、Offline(MySQL);经过日积月累的使用,形成了以下痛点:

  1. 不同数据源的底表无法进行关联分析;
  2. 历史原因,同一个需求可能有多个不同数据源的看板,造成使用混乱,而且看板并没有很好的传承下去;
  3. 产运人员的SQL能力有待加强;
  4. 开源版本缺乏官方技术支持。

二、市场案例

为了探索 AI + BI 在牛客的适用场景,对市面上的主流产品进行了一些调研,目前市面上的智能化BI产品主要有2类:

  • 商业化
    • DataFocus
      • 免费版本需要在GPU机器部署自研模型
    • 衡石ChatBI
    • 网易有数ChatBI
  • 开源

商业化产品虽然有免费版本,但是需要联系技术人员部署模型非常麻烦。所以选择开源项目测试,最终选择了腾讯开源并且社区成熟的 SuperSonic 超音数。

2.1 部署方式

采用安装包部署,注意 JAVA 需要 21及以上版本,跟系统版本进行隔离可以在 bin/supersonic-env.sh文件中配置:

#!/usr/bin/env bash

export JAVA_HOME=/usr/lib/jdk-23.0.2
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:/usr/local/bin:/usr/bin:/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib

# Supported DB_TYPE:  h2, mysql, postgres
export S2_DB_TYPE=
export S2_DB_HOST=
export S2_DB_PORT=
export S2_DB_USER=
export S2_DB_PASSWORD=
export S2_DB_DATABASE=

然后执行 sh bin/supersonic-daemon.sh start 启动即可。
在这里插入图片描述

2.2 功能测试

  1. 成功连接 Offline、Hermes 数据源。
    在这里插入图片描述
  2. 部署 DeepSeek-R1
    在这里插入图片描述
  3. 创建公司日活数据,方便后续通过对话交互获取数据

SuperSonic 中 Headless部分的各种概念之间的关系:

  • 数据集、数据模型都归属于一个主题域
  • 数据集可由多个模型组装而来
  • 数据模型由指标、维度组装而成
  • 它们之间类似DB中的对应关系:
    • Database(主题域)->View(数据集)->Table(数据模型)->Column(指标/维度)
      在这里插入图片描述
      首先,要进行“语义建模”:
  • 创建主题域
    • 在这里插入图片描述
  • 创建模型
    • 在这里插入图片描述
  • 数据及管理
    • 在这里插入图片描述
    • 在这里插入图片描述
  • 数据准备完成之后,在“助理管理”中创建助理,并关联数据集:
    • 在这里插入图片描述
  • 在“大模型配置”页,可以编辑提示词模板:
    • 在这里插入图片描述
  • “工具配置”中关联数据集,否则问答对话时会报错
    • 在这里插入图片描述
  • 准备好之后就可以在“问答对话”中测试了,例子:2025-02-25 日活
    • 在这里插入图片描述
  • 首先,会映射 Schema,匹配到语义建模中数据集的日期、活跃这俩字段:
    • 在这里插入图片描述
  • 然后,生成语义查询语句 S2SQL,并经过 LLM解析、修正SQL:
    • 在这里插入图片描述
  • 最终执行SQL如下,红框中是我原始编辑代码:
    • 在这里插入图片描述
  • 但是,目前对 Postgres 中某些函数的支持并不好,比如:unnest,SQL编辑是成功的,但是在问答对话中就报错了:
    • 在这里插入图片描述

三、总结

SuperSonic 的核心理念是通过将物理数据模型抽象为逻辑语义模型,并确保语义的一致性、严谨性,从而支持用户通过 Chat 对话的方式进行数据查询。

这跟传统的 NLP2SQL不同,传统方式是:NLP > SQL,错误率太高。而 SuperSonic 采用的是: NLP > 一致语义层 > SQL 的方式,将数据语义(如业务术语、列值等)纳入提示词中,使 LLM 能够更好地理解语义,以减少幻觉,这也是市面上大多数类似产品的通用思路。

尽管 SuperSonic 采用的中间语义层方式提升了 SQL 的可靠性,但事前准备需要花费大量时间,对使用人员的技能素养要求不低,且目前无法在对话中动态传参。最重要的一点,最终执行的 SQL 也不一定完全正确。

综上我认为,目前我司并不适合将 AI 引入到 BI 中。会因为引入额外的工具,增加学习成本和操作复杂度。但是,我们仍然可以持续关注这一领域的技术进展和发展趋势。

### 关于 Supersonic 技术的信息 提到 "Supersonic" 的描述通常关联到 Quarkus 框架的宣传口号:“Supersonic Subatomic Java”。这表明 Quarkus 致力于提供高性能、轻量级以及快速响应的应用程序开发体验[^2]。 然而,“Supersonic” 并不是一个独立的技术框架名称,而是用来形容 Quarkus 特性的形容词。因此,并不存在名为 “Supersonic 框架” 的具体使用指南。相反,可以关注如何利用 Quarkus 实现高效能应用程序构建: #### 创建首个 Quarkus 应用实例 为了展示 Quarkus 如何实现所谓的“超音速”,这里给出创建简单 RESTful Web Service 的例子: ```bash mvn io.quarkus:quarkus-maven-plugin:create \ -DprojectGroupId=org.acme \ -DprojectArtifactId=getting-started \ -DclassName="org.acme.getting.started.GreetingResource" \ -Dpath="/hello" cd getting-started ``` 这段命令会始化一个新的 Maven 项目并自动生成一些基础文件结构和代码片段来帮助开发者起步[^4]。 接着可以在 `src/main/java/org/acme/getting/started/GreetingResource.java` 中找到如下所示的基础 REST API 定义: ```java package org.acme.getting.started; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/hello") public class GreetingResource { @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return "Hello from Quarkus!"; } } ``` 通过上述操作即可迅速搭建起一个能够立即运行的小型 HTTP 服务器,在本地环境中测试时只需执行 `./mvnw compile quarkus:dev` 即可启动开发模式下的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值