自然语言处理:第九十二章 chatBI 经验(转载)
本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor
原文连接: 一文分享 ChatBI 实践经验
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
一、前言
随着大语言模型(LLMs)为基础的人工智能技术持续发展,它可以为商业智能(BI)领域带来哪些新的机遇?
首先,让我们简要回顾一下BI领域所经历的几个关键阶段:
① 第一阶段(报表式BI产品): 用户提出数据需求,再由数据研发取数后通过图表组件渲染实现可视化,这是一种按需开发方式。虽然这类产品能够满足用户的基本数据查询需求,但它们开发成本较高,且静态报表的应用场景有限,缺乏灵活性,导致边际效益较低。
② 第二阶段(自助式BI产品):在这一阶段,BI产品在宽数据集上支持用户通过拖拉拽的方式自助搭建报表。这有效减少了对数据开发的依赖,而且产品灵活性增强,能够适应多样化的数据分析场景。然而,它要求用户对指标体系有深入了解,并具备一定的配置技能,仍然具有不低的使用门槛。
③ 第三阶段(智能式BI产品):借助大模型强大的理解、推理能力,用户只需要通过简单的交互操作(如点击按钮、进行对话)即可完成报表搭建和数据分析与洞察,这显著降低了BI产品的使用门槛,实现了让每个人都能成为数据分析师的目标。

▲BI产品发展历程
二、大模型在BI领域的落地场景
经过近一年对“LLM+BI”业务场景的探索,笔者落地了三个主要的应用场景:
1、数据解读与总结
将结构化数据转化为用户易懂的文本报告,例如总结客户动态或分析员工行为轨迹。本质上是基于固定的业务规则组装数据集,然后利用大模型的归纳总结能力,按照指令要求生成总结和建议。
▲数据总结演示
2、动态可视化模板
在自助报表分析的阶段,用户需要对指标和维度有一定理解后,才能通过拖拉拽的方式搭建报表,这对用户的配置能力要求很高。为了降低搭建报表的门槛,常见的方法是为不同行业的用户提供多样化的报表模板。这在一定程度上降低了报表的配置难度,但用户仍需浏览每一个模板的配置以找到合适的模板,这个过程既繁琐又耗时。
在智能化阶段,我们可以对报表模板进行标注和向量化存储。用户只需简单描述需求,系统便能通过“RAG+LLM”技术快速匹配模板并自动搭建合适的报表。
▲动态可视化模板演示
3、对话式查数(ChatBI)
ChatBI(基于聊天界面的商业智能工具),主要支持用户通过自然语言与数据进行交互,从而轻松完成业务数据查询,下方将重点围绕ChatBI进行分享。
三、有关ChatBI的实现方案选择
ChatBI是笔者在过去的CRM产品智能化改造中,遇到最具挑战性的项目之一,期间碰壁无数。而ChatBI最终实现的效果不仅依赖于大模型的性能,产品的实现方案同样关键。其中,行业内讨论最多的两种方案是“Text2SQL”和“Text2DSL”。
Text2SQL
Text2SQL(Text-to-SQL)可以简单理解为,通过大模型将自然语言问题转换为结构化查询语言(SQL),使数据库能够理解并返回数据查询结果。
▲Text2SQL流程
这种方式有效利用了大模型的泛化能力,灵活性很高,极大地简化了数据分析过程。但同时也会存在不少的挑战:
- 生成SQL的准确性与可执行性 :生成准确且可执行的SQL查询是一项重大挑战,需要大模型深入理解SQL语法、数据库模式和特定方言 ,同时依赖于Prompt中对表名、表字段以及各个表之间关系的清晰描述。
- 特定业务的复杂查询:例如跨表或跨数据集查询。对于特定业务场景的数据分析可能涉及多表关联(JOIN),这要求模型具备强大的语义理解和逻辑推理能力。
- 性能问题 :在企业级数据查询中,宽表可能包含上百个字段,输入Prompt和输出SQL语句的复杂度会影响大模型的响应时间。超过3秒的响应时间会严重影响用户体验,导致用户流失。
Text2DSL
Text2DSL(Text-to-DSL)技术是将自然语言转换为领域特定语言(DSL)。“领域特定语言”听起来有点抽象,但可以理解为是一种更易于用户理解和使用的语言,例如在BI领域,它指的是从底层数据集中抽象出的指标、维度和过滤条件等报表配置化参数。
结合SQL这种数据库操作的标准语言,Text2DSL既简化了用户表达,又确保了系统能高效执行查询。基本流程如下:
① 用户提问时,大模型依据Prompt来理解用户的需求意图,并将自然语言需求转换为结构化的DSL查询。
② 业务方根据规则将DSL转换为SQL以执行数据查询,并将结果进行可视化展示。
▲Text2DSL流程
简单举个例子:
我要找到华南区上个月业绩表现最好的3名员工
在Text2SQL的方案中,需要大模型对用户的提问进行理解后,输出一段可执行的SQL,如:
SELECTf_user_name,SUM(f_amount) AS total_amount
FROM user_performance
WHERE f_department_id='华南大区' /* '华南大区'是部门名称 */AND f_date >='2024-11-01' AND f_date <='2024-11-30' /* 时间筛选为上个月 */
GROUP BY f_user_name /* 对员工进行分组 */
ORDER BY total_amount DESC /* 对订单成交金额进行倒叙 */
LIMIT 3; /* 取前三 */
在Text2DSL的方案中,会对SQL进行了一层业务封装,只需要大模型识别提问后返回关键参数如:
时间='上月'
数据范围='华南大区'
指标='订单成交金额'
维度='员工名称'
排序='倒叙'
然后业务方基于大模型返回的参数(DSL),根据规则生成对应的SQL,执行查数命令。
由此可见,Text2DSL本质上是一个text to DSL to SQL的过程。简而言之,DSL是对于SQL的一层抽象,而SQL是对于数据输出的具体执行。
Text2DSL方案同样面临挑战:基于Text2DSL搭建的ChatBI需要依赖成熟的指标体系,而且查询的灵活性和扩展性受限于现有指标和维度,本质上是报表搭建参数智能检索召回后的自动化数据查询流程。
但相比于Text2SQL,Text2DSL更易于实现,并且在指标体系能够满足大多数用户需求的情况下,能提供更准确、时效性更强的结果。
适用场景
两种方案都有其适用场景和限制,选择最合适的方案需要综合考虑业务需求、BI基础能力、实现成本和用户体验。
- Text2SQL : 适合没有特定的复杂业务分析要求,需要高度灵活性和可扩展性的标准化数据分析场景,如:平台级BI工具 。
- Text2DSL:适合业务场景明确,产品已建立成熟的数据资产(例如完善的指标体系和数据服务API)且分析深度可控的情况,如:企业内部系统或垂直业务软件系统的BI工具。
四、ChatBI的实现思路分享
接下来,将以笔者负责的ChatBI项目跟大家分享一下实践经历。
1、背景分析
目前所在的SaaS CRM产品主要面向中小型企业用户,他们的BI需求更多围绕CRM产品内产生的数据进行分析,如:员工销售行为分析;客户转化分析等。
经过了近几年的打磨,我们团队已经搭建了一套完善的指标体系,覆盖7个数据域,包含400多个指标。用户可以根据业务需求,通过指标、维度、过滤条件和图表组件等配置化参数,自助搭建报表来完成数据分析。

▲报表配置框架图
尽管自助分析能满足大多数用户的日常需求,但在实际使用中仍有一些问题:
- 使用门槛:CRM产品面向的用户主要是销售人员,在配置报表前需要他们掌握“指标”和“维度”等较为抽象的概念,还需要理解每个指标的具体含义,这尤为困难。
- 数据获取链路过长 : 即使用户已配置了一个满足业务需求的数据看板,但在实际使用中仍需根据不同的分析场景动态调整过滤条件来获得数据,例如:报表默认配置为“本周直销部的业绩数据”,若临时需要查看“上周渠道部的业绩数据”,需要找到【时间】与【统计成员】过滤条件后,切换条件值。
以上问题也是BI自助分析阶段普遍存在的。因此,我们计划通过ChatBI这款产品,来解决这些问题。
2、Text2SQL or Text2DSL ?
正如上文所述,ChatBI的效果与所选方案密切相关。在前期调研中,我们首选了Text2SQL方案,但经过多次测试,结果未达预期。举个例子:
在当前的自助分析BI产品中,用户可以在一张报表内配置多个跨数据集的指标,例如“通话次数”和“订单成交量”,这些指标存储在不同的数据集中,并且每个指标支持多个实时过滤条件。因此,在技术方案中,我们无法创建太多的大宽表,也无法进行大量的数据预聚合。
▲支持跨数据集搭建报表
前端报表搭建实际上是对底层数据查询的业务封装。用户只需选择适合业务需求的指标来搭建报表,而跨数据集的查询等复杂业务则由业务方统一处理。
然而,这种业务特定的场景并不适用于Text2SQL方法,因为它需要将大量元数据整合到Prompt中以支持跨数据集查询。这在与大模型交互时可能会导致表字段识别不准和返回SQL响应时间过长。
最终团队确定采用Text2DSL方案,该方案本质上是在保持现有报表搭建框架的基础上,将用户手动选择参数和拖拉拽搭建报表的过程交由大模型完成。此外,对于常规SQL难以处理的特定业务查询,Text2DSL能够通过其原生的快速计算功能轻松实现。
3、方案设计
选择了Text2DSL的方案后,接下来便是Chat BI的业务方案设计。刚开始我们遇到了一些问题:
- 由于涉及到7个数据域的400多个指标和50多个维度,若全部整合到Prompt中,可能会影响大模型语义理解和意图识别的准确性。
- 用户对数据指标的叫法各异,例如“订单成交量”可能被用户称为“成交业绩”或“订单转化”等。
因此,我们将BI元数据库和业务知识库进行了向量化存储。BI元数据库涵盖了指标、维度、过滤条件、图表类型、同环比和排序等基本信息;而业务知识库则包含了行业特定术语和针对特定业务的SQL编写规则等垂直领域知识(虽然维护知识库需要定期投入资源,但其对于提高语义解析和结果生成的准确性至关重要,这也是产品近年来沉淀的重要数据资产。)
ChatBI初步的业务流程如下:
① 知识召回:当用户提问时,先通过RAG技术对知识库进行相似度检索,以召回高匹配度的知识。
② 关键信息提取:针对召回的知识动态组装Prompt后让大模型进行语义理解与关键词识别,当无法识别关键词时可通过多轮对话的方式进行交互,直至提取用户提问中的关键信息,如指标、维度、过滤条件等。然后让大模型按照Prompt中的规则返回DSL。
③ SQL转换:接收大模型返回的参数后,进行参数合法性和数据权限校验,确认无误后将DSL转换为SQL以执行数据查询。
④ 数据可视化:查询结果后,进行数据报表组装,并在前端进行可视化展示。

▲ChatBI业务流程图
我们在落实这一流程时很快又遇到了新的问题。这套方案在处理用户常规的结构化数据查询提问,如“昨天入库多少个客户”或“上周打了多少通电话"时表现良好,但在应对例如“总结欧汶本周新增客户的转化情况”或“欧汶最近的业绩表现如何”等要求非结构化回答时就显得力不从心。这是因为基于结构化SQL语言生成的回答显得过于生硬,有时甚至让用户一种答非所问的感觉。

▲生硬的回答
因此,我们引入了意图识别机制。大模型首先通过识别意图来区分用户是需要简单的数据查询,还是针对特定业务的分析。对于后者,我们会在SQL查询得到数据后,重新组装Prompt,再次利用大模型进行语义理解分析,并根据用户的提问提供针对性的回答。
意图识别后再走一次LLM
4、产品效果
以下是有关Chat BI的一个初步演示效果
,时长00:51
[ ]
▲ChatBI演示
ChatBI主要聚焦于解答What(是什么)的数据查询,为了帮助用户探索Why(找原因)和How(给方案)的问题,以形成完整的业务闭环,我们从应用层面提供了以下方案。
- Why:在数据可视化环节,支持用户根据需要调整维度、指标和图表组件等,以便进行全面分析,并能够根据用户的设定进行“多维分析”以及“下钻分析”。
▲帮助用户找原因
- How:通过“推荐提问”的功能,针对不同指标数据异常的场景,提供针对性的解决方案,如:设置指标预警、调整销售目标、分配销售任务等。

▲给用户提供方案
团队还通过嵌入式将 ChatBI 产品整合到多端。PC端用户可以直接在输入框中输入文字;移动端用户则可以通过语音方式描述数据需求,从而快速查询数据,增强用户体验。

▲移动端语音描述需求
上文是笔者有关ChatBI产品实践的一个简要分享,在落地过程中还需要克服种种困难,如:报表配置参数的混合检索召回;用户提问的多轮会话识别;大模型参数提炼不准的应对措施等等,此处不做细说。
********五、********结语
ChatBI是今年比较火的一个话题,同时也是ToB领域落地难度较大的Agent应用。但无论采用哪种技术方式落地,最终还是需要以用户价值为导向,核心目的始终是帮助用户更便捷、更低成本去解决业务上的问题,这也是“SaaS+AI”的初衷。
相关文章:
自然语言处理:第九十二章 chatBI 经验(转载)
本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor 原文连接: 一文分享 ChatBI 实践经验 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易,希望走过路过点个关注和赞&#x…...
体验用ai做了个python小游戏
体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…...
sql server 从库创建的用户名登录后访问提示数据库无权限
在主副本库创建登录名并且用户映射赋权指定的数据库权限,副副本库也创建登录名,主副本有权限访问数据库的权限,但是副副本没有权限访问数据库。 解决方案: 检查数据库用户是否映射到登录名 如果数据库用户已存在,但…...
懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)
1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制):https://www.bilibili.com/video/BV1M6rdYEEog/ 备注: 1.本地离线卡密采用最安全的非对称加解密技术,设备id采用最安全多重混合加密不可逆技术生成&…...
Git LFS介绍(Large File Storage)大文件扩展,将大文件存储在外部存储,仓库中只记录文件的元数据(大文件的指针,类似一个小的占位符文件)
文章目录 LFS的功能?如何使用LFS?将大文件存储在外部系统是什么意思?具体是如何运作的?为什么要这样做? 对开发者的影响?1. **性能和效率**2. **协作体验**3. **版本管理差异**4. **额外的工具和配置** LFS…...
前后端项目部署服务器(传统部署和Docker部署)
内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...
python-leetcode 39.二叉树的直径
题目: 给定一棵二叉树的根节点,返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一:深度优先搜索 一条路径的长度为该路…...
Webpack的持久化缓存机制具体是如何实现的?
Webpack 的持久化缓存机制是 Webpack 5 引入的一项重要特性,旨在提高构建速度和性能。通过将构建结果缓存到磁盘上,Webpack 可以在后续构建中重用先前的结果,减少不必要的重新计算。以下是持久化缓存机制的具体实现和工作原理。 一、持久化缓…...
开题报告——基于Spring Boot的垃圾分类预约回收系统
关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...
【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进
文章目录 一. 什么是分布式事务?二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交(2PC)2. TCC(Try-Confirm-Cancel&…...
配置Api自动生成
我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...
适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究
文章目录 1. YOLOv8的性能瓶颈与改进需求1.1 YOLOv8的优势与局限性1.2 可变形卷积(DCN)的优势 2. DCN在YOLOv8中的应用2.1 DCN的演变与YOLOv8的结合2.2 将DCN嵌入YOLOv8的结构中2.2.1 DCNv1在YOLOv8中的应用2.2.2 DCNv2与DCNv3的优化 2.3 实验与性能对比…...
Redis_基础
Redis 命令启动、配置密码 Redis是绿色软件,所以直接解压就能使用 配置文件为:redis.windows.conf 启动redis 服务: redis-server.exe redis.windows.conf启动客户端: redis-cli.exe默认没有给Redis配置密码,所以在…...
linux查看程序占用的本地端口
ss是Socket Statistics的缩写,用来替代旧的netstat工具,功能更强大,执行更快。它用于查看系统的网络连接情况,包括TCP、UDP等协议的信息。 一. 命令解析: sudo ss -tulwnpss (Socket Statistics):替代 ne…...
Linux阿里云服务器安装RocketMQ教程
本文为个人云服务器上搭建RocketMQ教程,用于帮助大家降低安装学习成本,提高学习效率。本人在服务器上(我用的是阿里云服务器)安装MQ时遇到了大大小小的问题,因此在最终完成部署后,希望能总结一个教程&#…...
【JavaEE进阶】MyBatis入门
目录 🌴前言 🌲什么是MyBatis? 🌳准备工作 🚩创建工程 🚩配置数据库连接字符串 🚩数据准备 🚩编写持久层代码 🍃单元测试 🌴前言 在应⽤分层学习时,我们了解到…...
Docker 镜像加速器配置指南
Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内,由于网络环境的不稳定,直接从 Docker Hub 拉取镜像的速度可能会很慢,有时甚至会失败。即使配置了官方的阿里云镜像加速器,也可能因为…...
LeetCode-524. 通过删除字母匹配到字典里最长单词
1、题目描述: 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在&#x…...
工作-述职笔记
文章目录 述职报告量化指标比较好的想法角色的基本要求项目不好做?减少人员介入的内容知识库 wiki 博客等(公司不一定允许) 点评培训的重要性 很少写关于工作的笔记,但是接触的东西越多,发现有很多知识点以及需要学习的内容。 所以整理下吧。 述职不是小…...
前端VUE+后端uwsgi 环境搭建
1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;在nginx上加上安全性或其他的限制,可以达到保护程序的作用;uWSGI本…...
2025软件测试面试题大全(78题含答案解析)
1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容…...
微信小程序地图map全方位解析
微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具,可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点: 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…...
【Bert】自然语言(Language Model)入门之---Bert
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间:…...
实时股票行情接口与WebSocket行情接口的应用
实时股票行情接口与WebSocket行情接口的应用 实时股票行情接口是量化交易和投资决策的核心工具之一,行情接口的种类和功能也在不断扩展。介绍几种常见的行情接口,包括实时股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口,…...
.NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF
将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像,而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中,我们将探讨如何使用 Aspos…...
本地搭建小型 DeepSeek 并进行微调
本文将指导您在本地搭建一个小型的 DeepSeek 模型,并进行微调,以处理您的特定数据。 1. 环境准备 Python 3.7 或更高版本 PyTorch 1.8 或更高版本 CUDA (可选,用于 GPU 加速) Git 2. 克隆 DeepSeek 仓库 bash 复制 git clone https://github.com/deepseek-ai/deepseek.g…...
备战蓝桥杯 Day4 差分
差分(修改区间后查询) 1.要点 a[0]0; for(int i1;i<n;i){diff[i]a[i]-a[i-1];//构建差分数组 } //原数组a区间[l,r]全部加上x diff[l]x;//还原a数组[l,n]全部加上x diff[r1]-x;//还原a数组[r1,n]全部减去x for(int i1;i<n;i){a[i]a[i-1]diff[i]; }实现多次修改完后多次…...
解决华硕主板的Boot界面无法设置M.2的系统启动盘问题
一、问题描述 当我们的华硕主板电脑开机后,发现电脑无法正常进入Windows系统界面,直接显示PXE网络网络信息;且知道我们进入到BIOS界面也无法找到选择系统盘,界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…...
【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★)
【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★) 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 NLP Github 项目…...
硬件学习笔记--46 电能表影响量试验梳理
目录 1.电流和电压电路中的谐波影响试验 1)电流和电压电路中谐波——第5次谐波试验 2)电流和电压电路中谐波——方顶波波形试验 3)电流和电压电路中谐波——尖顶波波形试验 4)电流和电压电路中谐…...
