实现AI和BI整合的初步思路和探索-Part3
前两篇探索了用code和dify的实现思路,实现起来均有一定的门槛。那么市面上有没有什么开源的现成产品已经对这个方向进行了探索呢?最近还真搜罗到了两个不错的产品,一个是飞致云下的SQLBot,还有一个是WrenAI。
这两个平台的初印象
最近零散的了解并体验了下这两个平台,简单记录如下:
SQLBot
是飞致云旗下的一款开源产品,目前Github star 4.6k。飞致云也是博客园的合作伙伴,1Panel也是旗下的产品(通过这两个产品才了解到原来这家公司这么牛),如果你的Linux服务器部署了1Panel,也可以很方便的在1Panel里部署SQLBot。
Docker的部署支持Linux,和Windows WSL,但是不支持Macos,经官方确认,目前在Mac下只能通过源码的方式来部署。
同时SQLBot也支持阿里云的部署,阿里云也提供了一个小时的免费体验,如果你懒得折腾环境去安装,那么也可以在阿里云上体验下。
WrenAI
另一款开源产品,目前Github star 13k,居然比SQLBot还高。其社区版本免费,商用版或者Cloud版收费。
社区版的部署支持Macos docker,但是后台配置起来麻烦,需要去改配置文件,不如SQLBot方便。
实现的思路
这两个平台的实现思路都差不多,以下引用SQLBot的一张图:

大体上来说跟我前两篇差不多,都是把用户的问题,以及数据的schema都扔给大模型,生成SQL查询,然后把查询到的数据推给SQLBot以及大模型,生成相应的data table或者chart。
顺便贴一个SQLBot的官方展示图:

SQLBot Docker的安装
虽然Docker不如往年,但当前还是我们很方便的一个工具。
以下是官方提供的脚本。
docker run -d \
--name sqlbot \
--restart unless-stopped \
-p 8000:8000 \
-p 8001:8001 \
-v ./data/sqlbot/excel:/opt/sqlbot/data/excel \
-v ./data/sqlbot/file:/opt/sqlbot/data/file \
-v ./data/sqlbot/images:/opt/sqlbot/images \
-v ./data/sqlbot/logs:/opt/sqlbot/logs \
-v ./data/postgresql:/var/lib/postgresql/data \
--privileged=true \
dataease/sqlbot
过程很简单,在国内的环境只需要考虑好怎么高效率的访问到Docker的资源就可以。
其它的部署方法可以参考官方的文档:https://dataease.cn/sqlbot/v1/installation/online_installtion/
需要做的一些配置
SQLBot的相关配置还是很方便的(真的没WrenAI那么硬核)。
LLM配置
管理员登录后,可以直接在系统管理下添加大模型。这个是必要的,如果不配置直接使用系统,也会提示没配置大模型,直接导航到大模型的配置页面。

可以看到模型的支持对国内还是很友好的。
数据库的配置
在主面板下点击数据源,可以管理和添加各种数据源。

主流的数据库都支持,SQLServer也支持。
这里由于我的部署环境是云端,不想连我本地的SQLServer,所以我是把数据导出成Excel,然后导入到SQLBot。数据就是在上一篇创建的mart数据。
功能体验
Gloves产品按月的销量,用折线图展示

可以查看背后的数据,以及系统生成的SQL语句。也可以切换Chart。
点击数据分析,可以生成基于大模型的分析。以下是其针对这段数据生成的分析报告。
深度思考过程
数据理解:
提供的数据包含两个字段:order_month(月份)和 total_quantity(销量)。
数据的时间范围是从2012年12月到2014年1月,共计15个月。
销量数据是按月统计的,单位为"数量"(可能是件、台等)。
分析目标:
需要对销量数据进行分析,可能包括趋势分析、季节性变化、增长情况等。
分析步骤:
趋势分析:观察销量随时间的变化趋势,是否存在上升或下降的趋势。
季节性分析:检查是否存在明显的季节性波动,例如某些月份销量较高或较低。
增长率计算:计算每个月相对于上一个月的增长率,以了解增长的速度。
峰值与低谷:找出销量最高的月份和最低的月份,并分析其原因(如果有的话)。
累计销量:计算总销量以及各时间段的累计销量。
具体分析:
从2012年12月到2013年6月,销量整体呈上升趋势,从3.0增加到122.0。
2013年7月销量略有下降至120.0,但随后在8月达到135.0,继续上升。
2013年9月销量明显下降至96.0,可能是由于季节性因素或其他外部影响。
从2013年10月开始,销量再次回升,达到142.0、144.0、148.0,显示出较强的恢复势头。
2014年1月销量骤降至64.0,这可能是因为新年假期或其他市场因素导致的需求减少。
结论:
整体来看,销量在2013年大部分时间内保持增长,但在9月和2014年1月出现了显著的下滑。
存在一定的季节性波动,尤其是2013年9月和2014年1月的低点值得关注。
增长率在不同时间段有所不同,特别是在2013年下半年增长较为稳定。
分析结果
根据提供的数据,以下是详细的分析结果:
总体趋势:
销量从2012年12月的3.0逐步增长到2013年12月的148.0,整体呈现上升趋势。
然而,在2013年9月和2014年1月出现了明显的下降,分别降至96.0和64.0。
季节性波动:
2013年9月销量显著下降,可能受到季节性因素的影响(如开学季后的消费疲软)。
2014年1月销量大幅下降,可能是由于春节前后的市场需求变化或库存调整。
增长率分析:
2013年1月至6月的增长率较高,尤其是在2月到3月之间,销量从88.0增长到115.0,增幅达30.7%。
2013年10月至12月的增长相对平稳,每月增长约2-4个单位。
峰值与低谷:
最高销量出现在2013年12月,达到148.0。
最低销量出现在2012年12月,仅为3.0;其次是2014年1月的64.0。
累计销量:
从2012年12月到2013年12月的累计销量为1,325.0。
2014年1月的销量仅为64.0,占全年销量的比例较小。
综上所述,该产品的销量在2013年表现出强劲的增长态势,但也存在明显的季节性波动。建议进一步调查2013年9月和2014年1月销量下降的原因,并考虑采取相应的营销策略来应对季节性需求变化。
此外还有数据预测的功能,也就是生成未来月份数据的预测。
使用折线图展示在2013年,每一个产品小类按月的销售趋势

首先,对于产品小类的解析,大模型理解对了。
同样点击数据分析报告,可以看到基于LLM的分析报告,一定程度上来说还是能帮助我们偷下懒的。
家里有三个孩子的家庭,购买最多的前三样产品是什么?
接下来上点强度。

看下后台的SQL,这个还算靠谱:
SQL
SELECT "t1"."EnglishProductName" AS "product_name",
SUM("t1"."OrderQuantity") AS "total_quantity"
FROM "public"."DataMartInternetSales_c75c827ef1" "t1"
WHERE "t1"."CustomerTotalChildren" = 3
GROUP BY "product_name"
ORDER BY "total_quantity" DESC
LIMIT 3
每个销售区域,最畅销的前五种产品是什么。
再来一个。

可以看到这个系统没有捕捉到前五种这个关键信息。
把大模型从QWen-Plus切换成Deepseek和QWen-Max,结果还是一样的。这个应该受限在大模型这块。
Dashboard
每一个生成的Chart,都可以将其添加到Dashbaord。这个思路跟Tableau的有点像。
添加完之后,就可以在Dashbaord下查看样式,并且重新调整其布局。

目前版本在Dashboard能交互的还不多,如果非要跟Tableau或者Power BI来比的话还是需要再多迭代几个大版本的,但是大致的雏形已经形成,可以预见到未来不错的表现。
其它
这种实现的方式目前还处于边界的探索过程之中,除了大模型的能力之外,还需要排除人的不确定因素,因为本身在人与人的沟通过程中,根据不同的环境和上下文,一个点的理解就可能出现差异,比如销量,到底是sales amount还是sales quantity,当你跟销售团队沟通的时候,通常是amount而不是quantity,或者是amount和quantity都要。
此外通过这种方法,大多数的答案,都是用户已经知道的,在如何能高效的解决用户问题这个点上,还有很大的提升空间。但目前的实现方案来说,不同的平台确实都让我们窥探到了未来的样子,在这条路线上我们还能看到很多希望。