如何构建AI与BI整合的深度应用场景?

摘要:这些年AI火的一塌糊涂,很多行业和传统技术领域都在积极的跟其产生交集。
BI是一个20年前开始火起来的技术,跌跌荡荡这些年,如今虽然不是网红菜,但绝对是企业的必点菜。
AI的出现让很多东西跟人们越来越近,那么
实现AI和BI整合的初步思路和探索 这些年AI火的一塌糊涂,很多行业和传统技术领域都在积极的跟其产生交集。 BI是一个20年前开始火起来的技术,跌跌荡荡这些年,如今虽然不是网红菜,但绝对是企业的必点菜。 AI的出现让很多东西跟人们越来越近,那么AI配合BI有没有搞头呢? 关于这个话题,这些年我也不断的在尝试探索AI跟BI到底能碰撞出什么样的火花。我看到近些年在网上能找到的示例,主要是以下几种应用场景: Deepseek in word or excel一类,甚至在Power BI里也有,主要就是通过脚本去调用deepseek的http的接口,B站好多视频,我个人认为这个智能算纯技术探索,实在想不出有什么应用场景。 自然语言问答,通过自然语言的方式直接获取答案,第一次看到是在早期版本的Power BI,现在仍保持着这个功能。 文件直接生成图表。这个B站的教程很多,算是一个技术领域的介绍吧,但还很难上桌,因为用过Power BI或者Tableau的都会知道,客户对表格的要求是多么变态。 基于自然语言的统计,主要是TEXT2SQL这类,通过大预言模型对数据结构的理解,根据用户的问题生成查询,然后通过MCP之类的技术,返回结果。 这里我会演示最后一种方案。我们选择Dify + SQL Server的方式。 其实第三种方案,在B站你能看到基于Dify的很多演示,但受限于工具的功能,只能找到MySQL的。理论上来说,通过MCP也可以,但是我搜索了下支持SQLServer的MCP工具,都失败了。 所以这里我会换一个思路,既然Dify现成工具以及MCP都很难找到对SQLServer的支持,那么就拿出Python大法,大体的思路就是通过Python来访问SQLServer,然后再通过Python暴露一个http的接口,供Dify去调用。 你会问为什么偏要SQLServer,因为这里想主要介绍通过Dify现成工具以及MCP之外的另外一种万能的方式,其次,再怎么说我也是曾经连续连年的SQLServer MVP,所以对SQLServer还是很有感情的。 再就一点,在SQLServer下有一个不错的资源即使官方示例的数据仓库,Adventure works,里面有现成的数据可以供我们演示用。 这套数据仓库的结构如下,以下是我在Power BI里的建模,可以清晰的看到表间关系: 当初我在设计数据仓库比较迷茫时,都会来参考一下相应的问题,在这套数据仓库里是如何设计的。 为了方便演示,这里我只选择两张表,一个是FactInternetSales,一个是DimProduct。我们首先需要做的是将两个表的建脚本导出来,后续放在大模型里让大模型知道相应的数据结构。大模型会根据字段的名字来理解相应字段的含义。有些时候通过字段名可能看不出其含义,解决的方法就是通过对字段的注释,来辅助大模型理解数据的含义。 接下来在Dify中,创建一个ChatFlow。 这里我们主要用到以下几个关键模块: LLM,通过大模型根据用户的问题生成查询语句,最后再通过大模型汇总信息。 代码执行,由于我们用的是思考模型,所以Dify中我们读取到的反馈是包含大模型思考信息的。通过Python代码,可以很容易的过滤掉这部分信息,确保只有纯查询语句被传递到下一步。 HTTP请求,通过这个模块去调用Python编写的http接口,来跟SQLServer进行交互。 工作流大体结构如下: 这里有几个需要关注的点: 在大模型Text2SQL模块中,在User提示词里除了要提供相应表的结构之外,还需要告诉大模型出了SQL语句不要返回其它信息。不然大模型会贴心的输出说明内容,后续还需要单独对其进行过滤。 以下是我用到的提示词,供参考。请留意为了考虑篇幅排版,这里我省略了建表脚本。 你是一个数据库专家。 以下是相关表结构: ***FactInternetSales的建表脚本,为了篇幅这里我省略了。 ***DimProduct的建表脚本,为了篇幅这里我省略了。 请将用户的请求转换成相应的SQL查询。 {{#sys.query#}} 直接生成SQL查询,只返回SQL查询,不要生成其它任何内容。 由于我使用的大模型会附带think部分的信息,所以后面我加了一段python代码处理了一下: def main(arg1: str): return { "result": arg1.split("</think>")[1], } 接下来是构建Python跟SQLServer通信的部分,这里我用的是Flask,通过它可以很方便的将Python的一个方法,暴露成一个http接口。
阅读全文