SuperSonic
SuperSonic是下一代BI平台,集成了Chat BI(由LLM驱动)和Headless BI(由语义层驱动)范式。这种集成确保Chat BI能够访问与传统BI相同的经过策划和治理的语义数据模型。此外,两种范式的实施都从这种集成中受益:
- Chat BI的Text2SQL通过从语义模型中检索上下文得到增强。
- Headless BI的查询接口通过自然语言API得到扩展。
SuperSonic提供了一个Chat BI界面,使用户能够使用自然语言查询数据并用适当的图表可视化结果。要实现这种体验,唯一需要做的就是通过Headless BI接口构建逻辑语义模型(定义指标/维度/标签及其含义和关系)。同时,SuperSonic设计为可扩展和可组合的,允许通过Java SPI添加和配置自定义实现。
动机
像ChatGPT这样的大型语言模型(LLM)的出现正在重塑信息检索的方式,在数据分析领域引领了一种新的范式,称为Chat BI。为了实现Chat BI,学术界和业界主要专注于利用LLM将自然语言转换为SQL,通常称为Text2SQL或NL2SQL。虽然一些方法显示出promising的结果,但它们的可靠性对于大规模实际应用来说还不够。
同时,另一种新兴范式称为Headless BI,它专注于构建统一的语义数据模型,引起了广泛关注。Headless BI通过通用语义层实现,通过开放API暴露一致的数据语义。
从我们的角度来看,Chat BI和Headless BI的集成有潜力在两个维度上增强Text2SQL生成:
- 将数据语义(如业务术语、列值等)纳入提示中,使LLM能更好地理解语义并减少幻觉。
- 将高级SQL语法(如连接、公式等)的生成从LLM转移到语义层,以降低复杂性。
基于这些想法,我们开发了SuperSonic作为一个实用的参考实现,并用它来支持我们的实际产品。此外,为了促进进一步的发展,我们决定将SuperSonic作为一个可扩展的框架开源。
开箱即用的功能
- 为业务用户提供内置的Chat BI界面,以输入自然语言查询
- 为分析工程师提供内置的Headless BI界面,以构建语义数据模型
- 内置基于规则的语义解析器,以在某些场景下提高效率(如演示、集成测试)
- 内置支持输入自动完成、多轮对话以及查询后推荐
- 内置支持三级数据访问控制:数据集级、列级和行级
可扩展组件
高级架构和主要流程如下:
-
知识库: 定期从语义模型中提取模式信息,构建字典和索引以促进模式映射。
-
模式映射器: 识别用户查询中对模式元素(指标/维度/实体/值)的引用。它将查询文本与知识库进行匹配。
-
语义解析器: 理解用户查询并生成语义查询语句。它由基于规则和基于模型的解析器组合而成,每个解析器处理特定场景。
-
语义校正器: 检查语义查询语句的有效性,并在需要时进行修正和优化。
-
语义转换器: 将语义查询语句转换为可以针对物理数据模型执行的SQL语句。
-
聊天插件: 通过第三方工具扩展功能。给定一个配置好的插件列表,包括描述和示例问题,将利用LLM选择最合适的插件。
-
聊天记忆: 封装了一系列可以被回忆起来以促进少样本提示的历史查询轨迹。
快速演示
在线演示
访问http://117.72.46.148:9080注册并体验新用户。请勿修改系统配置。我们将每周末定期重启以重置配置。
Docker部署
- 安装Docker和docker-compose。
- 下载docker-compose.yml文件;执行:wget https://raw.githubusercontent.com/tencentmusic/supersonic/master/docker/docker-compose.yml。
- 执行"docker-compose up -d"。
- 打开浏览器访问http://localhost:9080开始探索。
本地构建
SuperSonic附带示例语义模型和聊天对话,可作为起点使用。请按以下步骤操作:
- 从发布页面下载最新的预构建二进制文件
- 运行脚本"assembly/bin/supersonic-daemon.sh start"启动独立Java服务
- 在浏览器中访问http://localhost:9080开始探索
构建和开发
请参阅项目文档。
微信联系
请关注SuperSonic微信公众号: