欢迎光临
我们一直在努力

AI+BI平台SuperSonic解析

摘要

SuperSonic是一个统一Chat BI和Headless BI的AI+BI平台,采用Spring Boot微服务架构,集成LangChain4j和多种数据库,通过语义层和LLM实现自然语言到SQL的转换,为企业提供智能化数据分析解决方案。

基本概念

Headless概念之间的关系:

  • 数据集、数据模型都归属于一个主题域
  • 数据集可由多个模型组装而来
  • 数据模型由指标、维度组装而成
  • 它们之间类似DB中的对应关系:
  • Database(主题域)->View(数据集)->Table(数据模型)->Column(指标/维度)

    主题域 主题域可以理解为一个分类的概念,用户可以根据自己的业务场景来划分主题域。SuperSonic中的数据模型,数据集,术语等概念都归属于一个主题域。

    数据模型 在SuperSonic中, 数据模型是对数据库中数据的一种逻辑层面上的抽象, 它既可以直接指代一张物理表, 也可以由一段SQL逻辑创建而成。 当我们得到一张表物理表或者一段逻辑SQL后,可以将表头字段指定为主键、维度、度量、时间日期或者是普通字段, 当表头字段都被赋予这些特定的语义后, 即形成了一个数据模型。

    字段

    字段类型(表/SQL表头)

    语义类型(模型)

    imp_date

    Date

    日期

    user_name

    String

    主键

    department

    String

    维度

    pv

    Bigint

    度量

    uv

    Bigint

    度量

    主键 SuperSonic中的主键概念不完全等同于数据库中的主键。当我们创建多个模型之后,如果需要指定模型间的关联关系,通俗来讲就是Join的方式, 就可以通过指定主键来进行关联。

    维度 维度指代那些表格中通常被用来进行分组和过滤的字段。

    度量 度量的概念则恰好和维度相反,通常是一些数值型的字段,用来表达客观现象的程度。在SuperSonic中,度量主要用来创建一个具体的指标,没有其它实质性的作用。

    指标 指标是相对度量更具具体和实例化的概念,用户可以基于度量,字段或者已有指标来创建指标并对它进行管理。同时,创建出来的指标也可以被问答这样的上层BI产品进行消费。

    时间日期 时间日期字段在SuperSonic中有比较重要的作用,比如一个典型的场景,当我们在问答中询问\”超音数近10天访问次数\”时,需要得到具体的 时间字段来进行时间范围的过滤。因此,提前在建模时把时间字段及其格式显示指定好,能起到很大的作用。并且,目前当模型中包含有度量时, 就必须指定时间日期字段。

    数据集 数据集是SuperSonic用来对接问答和其它上层BI应用的一个数据结构,在数据集中,可包含来自多个模型的维度指标。 对上层应用来说,底层建模细节是隐藏的,它只需要关注数据集中暴露出来的维度指标即可,也就是说,上层应用可以把一个数据集当作是一个大宽表,可以直接进行指标维度的分析查询。

    术语 企业内部通常有自己的私域知识,是否能把私域知识教给大模型对结果准确性有较大的影响。因此,SuperSonic引入了术语的概念,通过配置术语及其描述,就可以把私域知识 传授给大模型。比如SuperSonic给的样例术语:[近期]指代近10天;[核心用户]指Tom和Lucy,就能很容易让大模型学习到这个知识。

    SQL变量 当我们写SQL脚本的时候,如果希望有一些更加动态的效果,就需要用到SQL变量。举个例子,当我们想基于同一个SQL模板动态的查询日表/周表/月表的时候,就可以采用SQL变量, 如下面这段SQL,interval就是一个SQL变量,通过在调用接口的时候动态的传递interval的值,就可以实现查询不通周期粒度表的效果。

    1. 项目应用场景

    SuperSonic作为新一代AI+BI平台,主要应用于以下场景:

    1.1 企业数据分析

    • 自然语言查询:业务人员通过自然语言提问获取数据洞察
    • 智能报表生成:自动生成可视化图表和报表
    • 实时数据监控:支持实时数据查询和告警

    1.2 数据民主化

    • 降低技术门槛:非技术人员可直接进行数据查询
    • 知识库管理:构建企业级数据知识库
    • 语义映射:建立业务术语与数据字段的映射关系

    1.3 多源数据整合

    • 异构数据源:支持MySQL、ClickHouse、Presto、Trino等多种数据库
    • 统一查询接口:提供标准化的数据访问API
    • 数据治理:通过语义层实现数据标准化

    2. 学习目标

    基于SuperSonic的核心代码分析,本文设定以下学习目标:

    2.1 核心技术掌握

    • 理解AI+BI平台的整体架构设计
    • 掌握LLM与传统BI系统的集成方式
    • 学习语义层的设计与实现

    2.2 关键组件分析

    • LLMSqlParser:LLM驱动的SQL生成器
    • SemanticLayer:语义层核心组件
    • ChatQueryExecutor:查询执行引擎
    • KnowledgeBase:知识库管理系统

    2.3 设计模式应用

    • 策略模式在多解析器中的应用
    • 工厂模式在组件创建中的使用
    • 责任链模式在查询处理中的实现

    3. 目录结构分析

    supersonic/
    ├── auth/ # 认证授权模块
    │ ├── api/ # 认证API接口
    │ ├── authentication/ # 身份认证实现
    │ └── authorization/ # 权限控制实现
    ├── chat/ # Chat BI核心模块
    │ ├── api/ # Chat API接口定义
    │ └── server/ # Chat服务端实现
    │ ├── parser/ # 查询解析器
    │ ├── executor/ # 查询执行器
    │ ├── processor/ # 结果处理器
    │ └── plugin/ # 插件系统
    ├── headless/ # Headless BI核心模块
    │ ├── api/ # Headless API接口
    │ ├── chat/ # Chat集成层
    │ ├── core/ # 核心业务逻辑
    │ └── server/ # 服务端实现
    │ ├── service/ # 业务服务层
    │ ├── rest/ # REST控制器
    │ └── pojo/ # 数据对象
    ├── common/ # 公共组件模块
    │ └── src/main/java/
    │ ├── com/tencent/supersonic/common/ # 通用工具类
    │ └── dev/langchain4j/ # LangChain4j集成
    ├── launchers/ # 启动器模块
    │ ├── standalone/ # 独立部署启动器
    │ ├── chat/ # Chat服务启动器
    │ ├── headless/ # Headless服务启动器
    │ └── common/ # 启动器公共组件
    ├── webapp/ # 前端应用
    │ └── packages/
    │ ├── supersonic-fe/ # 主前端应用
    │ └── chat-sdk/ # Chat SDK
    └── assembly/ # 打包配置

    赞(0)
    未经允许不得转载:171主机测评 » AI+BI平台SuperSonic解析
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址