Supersonic 新一代AI数据分析平台

介绍

Supersonic是腾讯音乐开源的融合了Chat BI和Headless BI的新一代数据分析平台,可以通过自然语言来分析数据。(项目地址在文章末尾)

Headless BI

在传统的BI系统中,数据处理、分析逻辑和用户界面是紧密耦合在一起的。而Headless BI则采用了"无头"的设计理念,只提供数据处理和分析的核心功能,通过API接口对外提供服务,不包含预定义的用户界面。

Chat BI

在大模型时代,Chat BI的核心主要是通过大模型将自然语言转化为SQL(Text2SQL),以此降低数据分析门槛。

优点

Supersonic使用Headeless BI构建数据模型,更加便于大模型理解我们的数据集,提高了Text2SQL的准确度。

使用效果

Docker部署

下载docker-compose.yml

wget https://raw.githubusercontent.com/tencentmusic/supersonic/master/docker/docker-compose.yml

启动

docker-compose up -d

访问:http://localhost:9080

使用

在开始使用前我们需要先了解几个核心的概念

概念

主题域

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

数据模型

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

后边在使用时需要先创建我们的数据模型。

主键

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

维度

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

度量

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

指标

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

数据集

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

术语

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

配置大模型

目前Supersonic支持的大模型有Openai、微软、百炼等。可以在大模型管理中进行配置。

连接数据库

目前支持的数据库有H2、CK、MySQL、PG、 HANADB、STARROCKS、KYUUBI、PRESTO、TRINO

语义建模

创建主题域

比如我这里建立的AI Agent主题域

创建模型

创建模型可以通过SQL创建和快速创建,这里我们使用SQL创建:

可以自定义这个模型需要的字段

选择模型字段的各个语义

保存之后Supersonic会自动创建指标和维度:

创建数据集

将刚刚创建的模型与数据集进行关联

创建AI助理

助理的配置主要分为四个部分

基本信息配置

大模型应用配置

这里根据自己的实际需求去配置就可以

工具配置

需要选择Text2SQL工具,并选择可以使用的的数据集

记忆管理

当开启大模型的“记忆启用评估”后会自动开启记忆

问答对话

以上配置完毕后就可以在问答对话中和小助理对话了,SuperSonic会自动识别我们的意图,转换为SQL,将数据以可视化的方式呈现出来。

现有问题

  • 目前查询的准确性受限于语义模型中的字段定义
  • 需要查询描述语义模型的字段定义需要相似则准确度比较高,否则效果比较差
  • 对于使用人员和建模人员来说会有一定的要求,需要统一话术

相关链接

SuperSonic 是一个开源的媒体流服务器,主要用于个人媒体收藏的管理和播放。它支持多种音频和视频格式,并提供远程访问、转码、播放列表以及多用户支持等功能。在音频播放加速方面,SuperSonic 提供了类似“快进”、“慢放”等增强功能,这对播客听众或语言学习者尤其有用。 在使用 SuperSonic 进行音频播放加速时,常见的实现方式是通过其 Web API 或客户端界面来控制播放速度。例如,可以通过修改播放请求中的参数来指定不同的播放速率。此外,一些第三方客户端也支持这些功能,使得用户可以在不同设备上享受加速播放体验[^1]。 SuperSonic 的音频播放加速功能依赖于后端转码引擎,如 FFmpeg。FFmpeg 能够对音频进行实时处理,包括调整播放速度而不显著影响音质(尤其是在适度加速的情况下)。这种处理通常通过对音频帧的时间戳进行重新调度,并可能采用时间拉伸算法保持音调不变[^2]。 然而,在实际使用过程中,可能会遇到以下问题: 1. **兼容性问题**:某些音频格式或编码方式可能导致加速播放功能无法正常工作,特别是在使用较旧版本的 SuperSonic 或未正确配置 FFmpeg 的情况下。 2. **音质下降**:在较高倍速播放时,部分音频文件可能出现音质失真或异常,这取决于所使用的音频处理算法和硬件性能。 3. **同步问题**:如果使用视频内容,音频与视频之间的同步可能会因加速播放而出现偏差,尽管这一问题在纯音频场景中通常不适用。 4. **性能瓶颈**:在低配服务器上运行 SuperSonic 并启用加速播放时,可能会导致 CPU 占用率升高,从而影响整体性能。 为了优化音频播放加速体验,建议采取以下措施: - 确保使用最新版本的 SuperSonic 和 FFmpeg,以获得更好的兼容性和稳定性。 - 在服务器端配置适当的转码参数,选择适合当前硬件能力的音频处理策略。 - 对于移动设备或带宽受限的环境,可预先缓存转码后的音频文件,以减少实时处理带来的负担。 ```python # 示例:使用 Python 请求 SuperSonic API 获取加速播放的音频流 import requests def get_accelerated_audio_stream(base_url, username, password, song_id, speed=1.5): # 登录获取会话令牌 login_params = { 'u': username, 'p': password, 'v': '1.16.1', 'c': 'myapp' } session = requests.Session() login_response = session.get(f"{base_url}/rest/ping", params=login_params) if login_response.status_code != 200: raise Exception("Login failed") # 请求加速播放的音频流 stream_params = { 'id': song_id, 'speed': speed # 播放速度,如 1.5 表示 1.5 倍速 } stream_response = session.get(f"{base_url}/rest/stream", params=stream_params, stream=True) if stream_response.status_code == 200: return stream_response.raw else: raise Exception("Failed to retrieve accelerated audio stream") # 使用示例 audio_stream = get_accelerated_audio_stream("http://localhost:4040", "admin", "password", "song123", speed=1.5) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

壹氿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值