自然语言处理:第九十二章 chatBI 经验(转载)

news2025/2/22 0:58:55

本人项目地址大全: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,如:

SELECT
    f_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”的初衷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2302178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…

懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)

1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)&#xff1a;https://www.bilibili.com/video/BV1M6rdYEEog/ 备注&#xff1a; 1.本地离线卡密采用最安全的非对称加解密技术&#xff0c;设备id采用最安全多重混合加密不可逆技术生成&…

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网&#xff08;8.140.26.187&#xff09;&#xff0c;测试/生产环境连内网&#xff08;172.20.59.17&#xff09; 内外网地址不同&#xff0c;但指定的库是同一个 内网IP地址范围包括&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…

python-leetcode 39.二叉树的直径

题目&#xff1a; 给定一棵二叉树的根节点&#xff0c;返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一&#xff1a;深度优先搜索 一条路径的长度为该路…

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

文章目录 一. 什么是分布式事务&#xff1f;二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交&#xff08;2PC&#xff09;2. TCC&#xff08;Try-Confirm-Cancel&…

配置Api自动生成

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API&#xff0c;并导入Postman&#xff0c;完成API单元测试 Swagger: 是一套API定义的规范&#xff0c;按照这套规范的要求去定义接口及接口相关信息&#xff0c;再通过可…

适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究

文章目录 1. YOLOv8的性能瓶颈与改进需求1.1 YOLOv8的优势与局限性1.2 可变形卷积&#xff08;DCN&#xff09;的优势 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是绿色软件&#xff0c;所以直接解压就能使用 配置文件为&#xff1a;redis.windows.conf 启动redis 服务&#xff1a; redis-server.exe redis.windows.conf启动客户端&#xff1a; redis-cli.exe默认没有给Redis配置密码&#xff0c;所以在…

Linux阿里云服务器安装RocketMQ教程

本文为个人云服务器上搭建RocketMQ教程&#xff0c;用于帮助大家降低安装学习成本&#xff0c;提高学习效率。本人在服务器上&#xff08;我用的是阿里云服务器&#xff09;安装MQ时遇到了大大小小的问题&#xff0c;因此在最终完成部署后&#xff0c;希望能总结一个教程&#…

【JavaEE进阶】MyBatis入门

目录 &#x1f334;前言 &#x1f332;什么是MyBatis? &#x1f333;准备工作 &#x1f6a9;创建工程 &#x1f6a9;配置数据库连接字符串 &#x1f6a9;数据准备 &#x1f6a9;编写持久层代码 &#x1f343;单元测试 &#x1f334;前言 在应⽤分层学习时,我们了解到…

Docker 镜像加速器配置指南

Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内&#xff0c;由于网络环境的不稳定&#xff0c;直接从 Docker Hub 拉取镜像的速度可能会很慢&#xff0c;有时甚至会失败。即使配置了官方的阿里云镜像加速器&#xff0c;也可能因为…

前端VUE+后端uwsgi 环境搭建

1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的&#xff0c;uwsgi完全可以完成整个的和浏览器交互的流程&#xff1b;在nginx上加上安全性或其他的限制&#xff0c;可以达到保护程序的作用&#xff1b;uWSGI本…

【Bert】自然语言(Language Model)入门之---Bert

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间&#xff1a;…

.NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF

将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像&#xff0c;而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中&#xff0c;我们将探讨如何使用 Aspos…

解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

一、问题描述 当我们的华硕主板电脑开机后&#xff0c;发现电脑无法正常进入Windows系统界面&#xff0c;直接显示PXE网络网络信息&#xff1b;且知道我们进入到BIOS界面也无法找到选择系统盘&#xff0c;界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…

【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★)

【Arxiv 大模型最新进展】PEAR: 零额外推理开销&#xff0c;提升RAG性能&#xff01;&#xff08;★AI最前线★&#xff09; &#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 自小刺头深草里&#xff0c;而今渐觉出蓬蒿。 NLP Github 项目…

Linux-C/C++《C/9、信号:基础》(基本概念、信号分类、信号传递等)

本章将讨论信号&#xff0c;虽然信号的基本概念比较简单&#xff0c;但是其所涉及到的细节内容比较多&#xff0c;所以本章篇幅也会相对比较长。事实上&#xff0c;在很多应用程序当中&#xff0c;都会存在处理异步事件这种需求&#xff0c;而信号提供了一种处理异步事件的方法…

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…

OpenCV形态学操作

1.1. 形态学操作介绍 初识&#xff1a; 形态学操作是一种基于图像形状的处理方法&#xff0c;主要用于分析和处理图像中的几何结构。其核心是通过结构元素&#xff08;卷积核&#xff09;对图像进行扫描和操作&#xff0c;从而改变图像的形状和特征。例如&#xff1a; 腐蚀&…

【Ubuntu】GPU显存被占用,但显示没有使用GPU的进程

文章目录 一、问题描述二、解决方案2.1 寻找问题进程2.2 尝试杀死相关进程2.3 投放核弹&#xff0c;一键全杀2.4 再次查看GPU使用情况 参考资料 一、问题描述 今天使用服务器的时候发现gpu被占了很多内存&#xff0c;但是使用 nvidia-smi 命令并没有发现占这么多显存的进程&am…