LLMs在BI中的运用

news2024/11/17 12:46:19

现有的BI分析存在以下一些问题:

  • 原始数据入库规整要求比较高。业务过程产生的数据需要经过一些清洗等前置处理后才能够进行后续的BI分析使用。
  • 业务部门的数据分析过度依赖于技术部门。而业务与技术之间由于对分析需求理解上的差异,往往需要繁琐的沟通与确认,效率较低。
  • 较多的“沉睡”功能。不断的业务需求迭代的结果可能是大量功能的堆积,特别是一些定制的分析型应用,可能80%以上的功能使用频率较低。
  • 过于专业的BI工具。虽然能够灵活的即席查询、多维分析、数据洞察等,在一定程度上增强了灵活性,但是对业务人员仍然不够友好。

Text2API

  • 首先需要定义良好的数据分析API接口,形成API的使用“说明书”(JSON Schema描述,也就是Agent里面的Tools工具描述)。
  • 使用者输入自然语言,系统借助LLM将使用者的输入问题转化为对API工具的调用,包括API的名称与提取的参数。
  • 根据LLM的响应调用指定的API,取得返回的数据。根据情况需要,可能还需要将返回的数据再附加到用户输入,再次交给LLM,由LLM来输出最终响应给客户的分析结果。

"""
请遵循如下要求与约束:
1.参考以下的工具列表,找到需要使用的工具,并输出以下JSON格式内容用来使用工具。注意要确保下面内容在输出结果中只出现一次:
{"api_calls":[{"name":name of tool,"args":{"arg1":value1,"arg2":value2...}}]}
2.请根据工具的定义与参数描述来生成调用文本, 参考案例如下:
工具列表:
[
    {
      "name": "get_current_weather",
      "description": "获取给定位置的当前天气信息",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "需要查询天气的城市"
          }
        },
        "required": ["location"]
      }
    }
  ],
用户输入:查询北京的天气
返回调用JSON文本:
{"api_calls":[{"name":"get_current_weather","args":{"location":"Beijing"}}]}
3.如果无法理解用户意图,请回复“我无法理解您的意图”。
4.请根据用户问题与上下文来推理与提取本次工具调用需要的参数内容。
5.直接输出上述的JSON结果,不要有多余解释。
上下文:
{context}
工具列表:
{tools}
用户问题:
{question}
"""

由于API定制化处理,采用Text2API方法存在一些问题:

(1)由于API是企业应用的定制API,无法借助于公开API训练过的Text2Tool模型,需要通过模型微调或是需要借助提示工程来让大语言模型实现转换。

(2)企业的APIs过多的问题。由于大语言模型的无状态特征,每次在输入用户问题时,理论上需要携带全部的API规格说明。这就可能导致上下文超出模型的最大允许tokens。借助于向量数据库的语义搜索能力对所有的工具即APIs进行一次过滤,在每次需要LLM进行Text2API的转换时,只携带与用户问题相关的API Schema,这样可以大大减少输入的tokens与上下文大小。

大致过程为:

  • 对所有的工具即API的功能描述做嵌入存储到向量数据库
  • 根据用户输入问题进行语义搜索,获取到相关的API描述
  • 借助检索到chunk的元数据关联获取需要携带的API Schema
  • 在发送给大模型的提示中仅携带关联的API Schema,从而节省上下文长度

(3)如何实现可视化。图表绘制可以在服务端(比如借助matplotlib)完成后返回图片,也可以在客户端直接渲染生成(比如借助Ant的G2)。

Text2SQL

Text2SQL就是把自然语言转化为数据库能够执行的SQL,获得数据查询或统计结果。

Text2SQL的核心在于如何把自然语言组装成Prompt,并交给LLM转化成SQL。

  • 指令(Instruction):比如,“你是一个SQL生成专家。请参考如下的表格结构,直接输出SQL语句,不要多余的解释。”
  • 数据结构(Table Schema):类似于语言翻译中的“词汇表”。即需要使用的数据库表结构,由于大模型无法直接访问数据库,你需要把数据的结构组装进入Prompt,这通常包括表名、列名、列的类型、列的含义、主外键信息。
  • 用户问题(Questions):自然语言表达的问题,比如,“统计上个月的平均订单额”。
  • 参考样例(Few-shot):这是一个可选项,当然也是提示工程的常见技巧。即指导大模型生成本次SQL的参考样例。
  • 其他提示(Tips):其他你认为有必要的指示。比如要求生成的SQL中不允许出现的表达式,或者要求列名必须用“table.column"的形式等。

当前AI模型输出SQL的准确性还远无法达到人类工程师的输出精度。深度学习的AI模型预测本身就有置信度的问题,无法确保绝对可靠性,这点在LLM中依然存在。输出的不确定性也是目前限制大模型在关键企业系统应用最大的障碍。除了模型自身的知识能力以外,还有些客观原因:

  • 自然语言表达本身的歧义性,而SQL是一种精确编程语言。因此在实际应用中,可能会出现无法理解,或者错误理解的情况。比如,“谁是这个月最厉害的销售”,那么AI是理解成订单数量最多,还是订单金额最大呢?
  • 尽管可以通过Prompt输入数据结构信息帮助AI模型来理解,但有时候AI可能会由于缺乏外部行业知识导致错误。比如,“分析去年的整体客户流失率?”,那么如果AI缺乏对“客户流失率”的理解,自然就会出错或者编造。
  • 对于复杂关联表查询,目前LLMS还无法很好处理。

从当前的一些模型测试结果看,让大语言模型能够在这些场景下完全胜任,达到人类工程师的精度是不现实的。但是可以在几个方面考虑其优化:

  • 选择或者微调合适的大模型
  • 提示词工程优化
  • 应用场景的限制与设计

Text2Code

借助于大模型的代码生成能力,在理解客户自然语言描述的问题基础上,通过输出代码(常见的是Python)并自动迭代执行与调整,最终完成客户任务。在完成数据分析任务时,通常可以通过上传文件,然后要求Code Interpreter完成相关任务,其任务能力主要包括:

  • 加载与读取文件内容,数据结构识别(Data Profiling)
  • 数据质量检查,比如一致性、缺失值处理等
  • 数据建模,如构建BI常见的多维星型模型
  • 数据分析与洞察,如给出常见的KPI或回归分析
  • 数据可视化,通过合适的图表对分析结果做展示

以Python语言代码为例,Code Interpreter一般会借助于其强大的数据分析组件numpy,pandas,matplotlib等进行自动化编程,并在服务器端安全执行后输出结果。针对合适的场景与分析主题,从企业数据仓库/数据库提取与同步数据到临时的数据分析存储区(如文件),借助于LLM的能力向决策者提供交互式数据分析与洞察能力。

  • 基于代码解释器的数据分析与现有的BI工具不是取代而是互补。
  • 代码解释器适合的工作层为经过汇总、建模与抽象过的数据层,物理形式最好是文件。
  • 与Text2SQL输出针对数据库的代码不一样,代码解释器并不直接针对数据库:从海量的数据中快速检索与操作数据是SQL而非代码解释器的强项。
  • 建议代码解释器针对的应用场景限制为:
    • 较小或者中等规模的数据集
    • 有着灵活、交互式数据查询分析需求的主题
    • 相对规范与简单的数据模型,比如星型模型
    • 涉及较复杂的数据挖掘算法与模型,如回归分析

两种用于数据分析的代码解释器方案:

  • 借助Assistants API实现
  • 基于Open Interpreter+LLM实现

TableGPT

TableGPT 的架构如下图所示,由一个表格编码器和一个大模型组成。当用户给出一个表格,并提出查询时,表格编码器会从用户所给的表格里提取矢量表征,并把它们和用户的查询文本一起一起喂给大模型来做推理。

把表格中的信息分成两部分:

(1)表格的元数据表征,即表格的呈现形式、表格内容的行业背景,每一列的栏目名称等。这样可以大模型对表格结构有一个整体的把握。

(2)学习表格中的数字信息表征,比如每一列中数值的分布和变化趋势。这里将表格的行和列视为一组元素,并学习整个集合的整体表征。而表格编码器的主干来自修饰过的集合转换器(modified set transformer)。编码器通过注意力机制加强之后可以理解不同行和列之间的相互关系。

大模型具有思维链(chain-of-thought),可以把复杂的推理过程分解成一系列中间步骤。而在这里,研究团队提出指令链(chain-of-command),为思维链的这一系列中间步骤提供逐步的指示。例如当用户提出:“列出 5 部利润最高的电影。” 大模型会先检查列表里面有没有利润这一栏,如果没有这一栏,那么它会生成一套指示来指导自己通过票房和成本数据计算出利润,再根据指示按照利润高低排列电影,找出利润最高的那 5 部。指令链增强了大模型的多跳推理(multi-hop reasoning)能力,使其能够把用户的诉求拆解成一系列指令,这样更易于进行复杂的跨表格操作。此外,当用户的请求太过模糊、宽泛的时候,比如用户说“给我一些数据”,那么指令链还会提醒用户把请求变得具体、明确。

TableGPT 能够与用户以自然语言交互,还可以做数据可视化和生成报告等等。与现有的会使用工具的大模型相比,功能更加齐全:

对于企业来说,数据安全十分重要。作为一个自包含的系统,不依赖外部的 API,可以本地化部署,TableGPT 一定程度上减轻了数据和隐私安全的担忧。

参考文献

(1)构建Data Agent:探讨企业应用中基于大模型的交互式数据分析及方案【上】

(2)构建Data Agent:探讨企业应用中基于大模型的交互式数据分析及方案【中】

(3)构建Data Agent:探讨企业应用中基于大模型的交互式数据分析及方案【下】

(4)deephub:Table-GPT:让大语言模型理解表格数据

(5)https://arxiv.org/pdf/1809.08887.pdf

(6)https://arxiv.org/pdf/2308.15363.pdf

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

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

相关文章

六、长短时记忆网络语言模型(LSTM)

为了解决深度神经网络中的梯度消失问题,提出了一种特殊的RNN模型——长短期记忆网络(Long Short-Term Memory networks, LSTM),能够有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略。 长短时记忆网络原理…

springboot244基于SpringBoot和VUE技术的智慧生活商城系统设计与实现

智慧生活商城系统的设计与实现 摘 要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了&…

【wine】winetricks部署一个windows xp 应用程序的基础运行环境

AI 的资料 我想基于wintricks的“安装windows dll 或组件”功能,安装一个基础的windows xp运行环境,应当安装那些项目? 为了基于winetricks创建一个基础的Windows XP运行环境,您应该考虑安装以下项目以提高兼容性: 核…

非常好用的Java诊断工具Arthas(阿尔萨斯)

小伙伴们好,欢迎关注,一起学习,无限进步 文章目录 Window 安装Linux 安装SpringBoot 整合 arthas其他使用场景 Arthas是阿里巴巴开源的一款Java诊断工具,可以用于线上诊断问题、监控应用性能等。支持 Linux/Mac/Windows&#xff0…

3D-Genome | Hi-C互作矩阵归一化指南

Hi-C 是一种基于测序的方法,用于分析全基因组染色质互作。它已广泛应用于研究各种生物学问题,如基因调控、染色质结构、基因组组装等。Hi-C 实验涉及一系列生物化学反应,可能会在输出中引入噪声。随后的数据分析也会产生影响最终输出噪声&…

【C++】浅谈 vector 迭代器失效 深拷贝问题

目录 前言 一、底层空间改变 【错误版本1】 🌟【解答】正确版本 ​ 【错误版本2】 🌟【解答】正确版本 二、指定位置元素的删除操作--erase 【错误版本1】 🌟【解答】 【错误版本2】 🌟【解答】 三、深拷贝问题 前言 迭…

基于Jupyter快速入门Python,Numpy,Scipy,Matplotlib

文章目录 Jupyter 和 Colab 笔记本PythonPython 版本基础数据类型数字Numbers布尔值Booleans字符串Strings 容器列表List字典Dictionaries集合Sets元组Tuples 函数类 Numpy数组Array数组索引Array indexing数据类型DatatypesArray math广播Broadcasting Scipy图像操作MATLAB文件…

Pytorch_lightning先前版本的官方文档地址

https://lightning.ai/docs/pytorch/1.4.2/https://lightning.ai/docs/pytorch/1.4.2/ Pytorch_lightning更新到2后,和之前版本的变化较大,以前原有的api被删除了 比如:on_pretrain_routine_start 官方也没有在显眼的位置放置先前版本的文档…

3D数字孪生运行不起来?该检查你的电脑配置了

运行3D数字孪生项目通常需要一定的计算资源和图形处理能力。以下是一些常见的电脑配置要求,可以作为参考:1处理器(CPU):推荐使用多核心处理器,如Intel Core i7或更高级别的处理器。较高的时钟频率和较大的缓…

3DES算法的起源与演进:保障信息安全的重要里程碑

title: 3DES算法的起源与演进:保障信息安全的重要里程碑 date: 2024/3/8 21:25:19 updated: 2024/3/8 21:25:19 tags: 3DES算法起源安全性增强三次迭代加密密钥管理复杂效率对比AES应用场景广泛Python实现示例 一、3DES算法的起源与演进 3DES算法是DES算法的增强版…

粉嘟嘟的免费wordpress模板

粉色好看的wordpress免费模板,用免费wordpress模板也可以搭建网站。 https://www.wpniu.com/themes/11.html

利用Python副业赚钱,看完这篇你就懂了!_自学python能干些什么副业?

Python都可以做哪些副业? 1、兼职处理数据Excel整理数据功能虽然很强大,但在Python面前,曾经统治职场的它也的败下阵来。因为Python在搜集数据整理分析数据的过程中更加便捷,通过几行代码还可以实现自动化操作。 如果你学会Pyth…

VSCode国内镜像下载方法

VSCode国内镜像下载方法: 找到下载界面,点击下载后,发现下载速度非常慢。 复制下载链接,然后替换图中画线部分: 改为:vscode.cdn.azure.cn 然后将链接粘贴到浏览器回车,会发现嗖的一下就好了

(未解决)macOS matplotlib 中文是方框

reference: Mac OS系统下实现python matplotlib包绘图显示中文(亲测有效)_mac plt 中文值-CSDN博客 module ‘matplotlib.font_manager‘ has no attribute ‘_rebuild‘解决方法_font_manager未解析-CSDN博客 # 问题描述(笑死 显而易见 # solve 找到…

Docker容器化解决方案

什么是Docker? Docker是一个构建在LXC之上,基于进程容器的轻量级VM解决方案,实现了一种应用程序级别的资源隔离及配额。Docker起源于PaaS提供商dotCloud 基于go语言开发,遵从Apache2.0开源协议。 Docker 自开源后受到广泛的关注和…

springboot整合redis redis连idea

首先是maven项目里pom.xml添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId> </dependency> 然后是application.properties 中增加redis配置 spring.redis.host=lo…

【Spring知识体系】1.1 Java 注解(Annotation)

文章目录 1.1 注解&#xff08;Annotation&#xff09;1.1.1 什么是注解1.1.2 内置注解1.1.3 元注解&#xff08;5种&#xff09;1.14 自定义注解1.15 注解使用场景介绍※ 本文小结 1.1 注解&#xff08;Annotation&#xff09; 1.1.1 什么是注解 注解的定义&#xff1a;它提…

FFmpeg教程(干货快速上手)

什么是FFmpeg&#xff1f; FFmpeg是一款免费、开源的跨平台多媒体处理工具&#xff0c;它支持几乎所有的视频格式和编码标准。FFmpeg包含了一系列的子项目和工具&#xff0c;如ffmpeg命令行工具用于转码和处理视频和音频文件&#xff0c;ffplay用于播放多媒体内容&#xff0c;…

​谷歌seo外链服务哪家好?

首先你要知道的&#xff0c;就是外链能起到的作用&#xff0c;不是说工具查一查外链数有增加就可以的&#xff0c;外链最重要的作用就是提升关键词排名&#xff0c;发的外链没有效果是没有任何意义的&#xff0c;而且外链基本上是一次性服务&#xff0c;服务完了没有效果完全就…

知识管理系统原来搭建起来这么简单,秘诀在这!

随着信息技术的发展&#xff0c;知识管理系统已经成为组织和团队必不可少的一部分&#xff0c;它可以帮助我们收集、组织和共享知识信息&#xff0c;提升工作效率。然而&#xff0c;搭建一套好的知识管理系统并不会一帆风顺&#xff0c;但放心&#xff0c;我们有简单易行的建设…