首页 > 其他分享 >构建Data Agent:探讨企业应用中基于大模型的交互式数据分析及方案【上】

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

时间:2024-09-18 15:53:45浏览次数:13  
标签:数据分析 模型 BI Agent 企业应用 API 工具 自然语言 Data


前言

数据,在如今企业商业决策中的重要性毋庸置疑。正如BI(商业智能)系统已经成为众多中大型企业数据分析、预测与决策支持的关键IT设施。当然,广义上的BI是一个庞大的IT体系,并非一句简单的数据分析就能概括,ETL、数据仓库与集市、BI分析与可视化、数据挖掘工具等构成一个完整的端到端系统。本文聚焦在企业BI应用的最后“一公里”,即面向最终使用者的交互式数据分析、挖掘与呈现的环节(结构化数据为主),探讨大语言模型(LLM)的应用价值与相关方案。

大模型在企业数据分析的价值

在现有的企业数据分析应用中,无论是中小型企业自定义的简单报表查询,还是大型企业基于专业数据仓库与BI工具的经营分析系统,尽管在决策支持中发挥了重大作用,但是在使用中仍然存在一些可见的不足,这也常常使得BI类的应用很难达到预期的建设目标。一些常见的问题包括:

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

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

而现在大语言模型的出现,向企业应用展示了一些独特的能力:

  • 提供了一种基于自然语言的交互界面可能,且在语义理解能力上有了革命性的飞跃
  • 在理解的基础上,基于海量语料训练或微调的模型,能够推理出你需要的结果,比如一段文字或代码

那么,是否可以利用大语言模型的自然语言的能力来连接不懂技术的业务人员与企业的数据,弥补他们之间的技术鸿沟,从而简化数据分析的过程呢?

我们试图在大语言模型的基础上构建一个数据分析的智能体(且称作Data-Agent): **重新定义我们与数据的交流方式,不需要冗长的开发流程或者繁琐的专业工具,只需要“说话“就行,因为没有什么比自然语言更简单的交流方式。**

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

这样,企业内的数据分析场景(至少是一部分场景)在未来可以转变为:业务人员通过自然语言与Agent对话(比如:我需要了解一下上季度各大区的销售与增长情况),完成数据查询、统计、分析甚至洞察。优势显而易见,主要体现在:

  • 简单: 能够用自然语言表达出你的分析需要即可。
  • 快速: 无需冗长的定制开发、也无需BI工具上的拖拉拽。
  • 交互:基于对话的自然交互形式,无需找菜单。
  • 节约: 不会淹没在大量的不常使用的报表之中。

在企业应用的数据分析领域尝试用LLM来升级,一个客观的优势是相对于企业中关键的OLTP应用(联机交易处理),分析型应用的容错空间更大一些。

Data Agent如何定位

尽管如此,我们仍然必须清醒的意识到:大语言模型虽然在不断的迭代过程中越来越强大,但类似商业智能这样的企业级应用要远比分析一个Excel文件、总结一个PDF文件的问题要复杂的多:

  • 数据结构复杂:企业信息系统的数据结构复杂性远远超过几个简单的Excel文件,一个大型企业应用可能存在几百上千个数据实体,所以在实际应用中,大型BI系统会在前端经过汇聚、简化与抽象成新的语义层,方便理解。
  • 数据量较大:分析类应用以海量历史数据为主,即使一些数据在分析之前会经过多级汇总处理。这决定了无法在企业应用中把数据简单的脱机成文件进行分析处理。
  • 分析需求复杂:企业应用的数据分析需求涵盖即席查询、到各个维度的报表与指标展现、数据的上下钻、潜在信息的挖掘等,很多需求有较复杂的后端处理逻辑。

这些特点决定了,当前大语言模型在企业数据分析中的应用无法完全的取代目前所有的或者部分的分析工具。其合适的定位或许是:作为现有数据分析手段的一种有效补充,在部分需求场景下,给经营决策人员提供一种更易于使用与交互的分析工具。

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

具体的应用场景包括:

  • 即席数据查询。提供对运营或统计数据的简单自定义查询,当然你只需要使用自然语言。
  • **传统BI工具能力的升级。**很多传统BI工具会定义一个抽象的语义层,其本身的意义之一就是为了让数据分析对业务人员更友好。而大模型天然具有强大的语义理解能力,因此将传统BI中的一些功能进化到基于自然语言的交互式分析,是非常水到渠成的。
  • **简单的数据挖掘与洞察。**在某些场景下的交互式数据挖掘与洞察,可以利用大语言模型的Code生成能力与算法实现对数据隐藏模式的发现。

Data Agent的三种基础技术方案

现在,我们在技术层面思考这个问题,如何把自然语言(比如"看下上个季度不同销售大区的销售额的分布与增长情况")转换成对软件系统的操作,最终形成决策人员需要看到的报告呈现呢(比如一个表格或者柱状图)?基于目前的大模型能力,可以看到的几种实现的技术途径:

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

  • 自然语言转数据分析的API,text2API
    类似现有的一些BI工具会基于自己的语义层开放出独立的API用于扩展应用,因此如果把自然语言转成对这些数据分析API的调用,是一种很自然的实现方式。当然完全也可以自己实现这个API层。
    这个方案的特点是受到API层的制约,在后面我们会分析。
  • 自然语言转关系数据库SQL,text2SQL
    这也是目前最受关注的一种大模型能力(本质上也是一种特殊的text2code)。由于SQL是一种相对标准化的数据库查询语言,且完全由数据库自身来解释执行,因此把自然语言转成SQL是最简单合理、实现路径最短的一种解决方案

有的关系型数据库已经推出了内置的SQL AI增强,比如Oralce最新的Select AI功能:

构建Data Agent:探讨企业应用中基于大模型的交互式数据分析及方案【上】_人工智能_05

  • 自然语言转数据分析的语言代码,即text2Code
    即代码解释器方案。简单的说,就是让AI自己编写代码(通常是Python)然后自动在本地或者沙箱中运行后获得分析结果。当然目前的Code Interpreter大多是针对本地数据的分析处理(如csv文件),因此在面对企业应用中的数据库内数据时,需要在使用场景上做特别考虑。
    这种方案的特点是可以利用Python语言自身强大的数据科学库,且独立于数据库。

方案一:text2API

用下图来表示text2API这种方案的大致架构:

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

基本流程

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

问题一:Text2API的实现探讨

如何实现大语言模型的text2API能力?由于这是私有企业应用的定制API,无法借助于一些已经对互联网公开API训练过的一些text2Tool模型。

  • 如果你能够使用OpenAI的模型,可以借助OpenAI的Function Call功能来实现。
  • 如果无法使用OpenAI的接口或需要连接私有模型,则需要借助提示工程来让大语言模型为你实现这种转换,比如类似这样的Prompt:
"""  
请遵循如下要求与约束:  
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}  
"""

在借助LLM把自然语言转化为API的调用及参数后,通过对输出的解析,我们就可以调用对应的API取得结果。当然,实际使用时需要对Prompt进行细致的调优与反复测试来验证准确率与稳定性。

问题二:企业的APIs过多的问题

在大型的企业BI应用系统中,数据分析的需求可能非常复杂,即使只考虑部分的需求实现,其潜在的API数量也可能非常庞大。由于在大语言模型的无状态特征,每次我们在输入用户问题时,理论上需要携带全部的API规格说明。这就可能导致上下文超出模型的最大允许tokens。一种可能的解决方案是:

借助于向量数据库的语义搜索能力对所有的工具即APIs进行一次过滤,在每次需要LLM进行text2API的转换时,只携带与用户问题相关的API Schema,这样可以大大减少输入的tokens与上下文大小。

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

大致过程为:

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

问题三:输出与可视化处理

获取到数据分析结果后,通常的前端呈现有简单的结果或列表,也可能要求采用可视化的图表来展现。针对后一种情况,需要考虑结合一些可视化的解决方案,甚至借助LLM来实现智能的图表展现。

比如把API调用结果加入到用户输入,重新输入大模型,并要求大模型根据用户要求输出最佳的图表建议类型以及所需数据。调用端根据大模型的输出,结合本地的可视化方案进行处理。具体的图表绘制可以在服务端(比如借助matplotlib)完成后返回图片,也可以在客户端直接渲染生成(比如借助Ant的G2)。

text2API总结

text2API方案本质上是在传统的数据分析系统之上增加一层自然语言的UI,核心的数据分析功能需要自行设计API来实现。所以这种方案的好处是:

核心的分析逻辑不依赖于大模型(在API中),因此更可控。对于一些包含了复杂分析逻辑的任务(涉及不同的数据源、较多的逻辑判断和数据实体等),或者分析逻辑经常变化的任务,可以把内部的复杂性对大模型屏蔽,从而减少对输出稳定性的影响。

而这种方案的不足是:

  • **核心分析逻辑API实现,需要极高的业务理解与抽象能力。
    **
  • 灵活性与扩展能力差,受限于已经实现与开放的API库。

因此,可以认为这种方案更适合用在输入输出结构上较简单(决定了API更简洁),但是内部数据处理与分析逻辑较复杂的任务。

* 我们将在下篇探讨另外两种方案



标签:数据分析,模型,BI,Agent,企业应用,API,工具,自然语言,Data
From: https://blog.51cto.com/u_16163453/12046914

相关文章

  • 大模型 | 自进化Agent:兼具反思与记忆增强能力
    大模型在动态环境中持续决策、长期记忆缺乏以及有限的上下文窗口等方面仍面临挑战:元学习、多任务学习等方法来增强LLMs的迁移能力和适应性;针对有限记忆存储的问题,MemGPT和MemoryBank采用了不同的策略管理记忆;但这些方法通常针对特定任务或场景,缺乏一个通用框架。提出了一个创新框架......
  • 构建多轮对话问答系统:基于大模型的Agent与Tools探索
    在当今人工智能快速发展的时代,多轮对话问答系统作为人机交互的重要形式,正逐渐渗透到我们生活的各个领域,从智能家居到智能客服,从在线教育到医疗咨询,其应用场景日益广泛。本文将深入探讨如何基于大模型构建高效、智能的多轮对话问答系统,并介绍一些关键的Agent(代理)与Tools(工具)技术......
  • 159.235 2023 S02 Wireframe Data Viewer
    159.2352023S02—Assignment2Thisassignmentcoversthetopics:coordinates,transformations,3dmodelling,andvisiblesurfaces.WireframeDataViewerWriteaJavaprogramthatrendersa3dimensionaltrianglewireframesurfacedatamodelandallowso......
  • HCIP Datacom认证是什么?深入解读华为HCIP数通方向!
    HCIPDatacom认证不单象征着个人于数据通信范畴所具备的专业技能,更是职业发展途中的关键里程碑。此文将深度剖析HCIPDatacom认证以及其在数通方向的重大意义。HCIPDatacom认证是什么?HCIPDatacom认证,全名叫做华为认证ICT专家-数据通信方向,乃是华为认证体系里的中级认证......
  • 32130 Data exploration and preparation
    32130AssessmentTask2:DataexplorationandpreparationTaskdetailsThisassessmentwillgiveyouprac!calexperienceindatavisualisation,explora!on,andprepara!on(preprocessingandtransforma!on)fordataanalytics.Thisassignmentisindividual......
  • Hadoop(十三)DataNode
    一、DataNode工作机制1、一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳2、DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息3、心跳是每3秒一次,心跳返回结果带有......
  • FIT9132 Introduction to Databases
    FIT9132 Introductionto DatabasesAssignment 1 Logical- ReadMoreCommunity Library(RCL)PurposeGiventhe providedcasestudyfromAssignment 1-Conceptual,and additionalforms/documents relatedtothecasestudy,studentswillbeasked t......
  • Java客户端SpringDataRedis(RedisTemplate使用)
    文章目录⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结⛄概述SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,......
  • AgentTuning:提升大型语言模型的通用Agent能力
    人工智能咨询培训老师叶梓转载标明出处大模型被用作现实中复杂任务的Agent时,它们的表现往往不如商业模型,如ChatGPT和GPT-4。这些任务要求LLMs作为中央控制器,负责规划、记忆和工具利用,这就需要精巧的提示方法和鲁棒性强的LLMs来实现。尽管已有多种提示方法被提出来完成特定的A......
  • 数据控制语言(DCL,Data Control Language)
    目录GRANT语句REVOKE语句权限类型数据控制语言(DCL,DataControlLanguage)用于管理数据库中的权限和访问控制。DCL语句主要用于控制用户对数据库对象的访问权限。常见的DCL语句有GRANT和REVOKE。GRANT语句GRANT语句用于授予用户或角色对数据库对象(如表、视图......