导读 本文将分享数势科技在数据分析这一智能化赛道中的一些思考与实践。
1. 引言:大模型技术对于数据分析领域能够解决哪些痛点
2. 解决方案:智能分析产品常见设计思路以及优化路径
3. 技术架构:Agent架构结合数据语义层 (Semantic Layer)如何实现产品落地
4. 应用场景:某零售连锁行业智能分析助手落地案例
5. 产品设计理念与挑战:LUI+GUI 融合的产品设计理念与挑战
6. 未来展望:智能数据分析产品演进展望
7. 问答环节
分享嘉宾|岑润哲 数势科技 数据智能产品总经理
编辑整理|小宁
内容校对|李瑶
出品社区|DataFun
引言:大模型技术对于数据分析领域能够解决哪些痛点
第一部分,将剖析金融、制造、零售等行业客户所面临的痛点,以及大模型技术能为数据分析领域解决哪些问题。首先,从管理团队视角来看,很多企业耗费大量精力建设了很多数据仓库、数据湖,包括一些大屏、驾驶舱,这些工具确实在一定程度上解决了领导层面看数据的问题,但是很多数据产品是固化形式的看板,对于决策层而言,data 并不代表 insight,当需要对某些细分的业绩指标做洞察分析时,还是要给分析团队提需求,这个时候就需要漫长的等待。同时,领导层通常更关注 why 的问题,比如为什么公司业绩出现了下滑,为什么某一个门店的销量不好等等。而可视化、驾驶舱等工具只能给出 what 的解答,并没有触及到数据背后关键的 why。所以这个时候很多领导希望能够直接对着大屏,通过自然语言提问,比如为什么指标下降,由系统给出一个结论,这是很多领导层希望通过大模型加数据得到的。第二,从业务人员视角来看,主要痛点是没有一个好的工具,他们只能自己去学习 SQL 语言,或学习使用一些复杂的 BI 工具,来做数据的可视化和分析。拿到数据之后,他们还要从大量的数据里面去挖掘一些洞见,需要手动导出 Excel,做透视表来获取结论。很多团队希望通过自然语言交互的形式,更快地从海量数据中直接获取到一些 insight,来辅助日常决策。另一个重要团队是技术团队,包括数据开发,数仓工程师等。面临的痛点是,数据仓库虽然已经搭好了,但是业务方总有很多临时性需求,这就会导致数据仓库集市层建立了大量临时 ADS 表,维护了一些临时性的口径,使得数据分散、指标口径不一致。针对上述痛点,我们希望利用大模型 Agent 架构去改变原有范式。如上图所示,原有模式为业务方提需求,技术团队采买 BI 工具供业务方使用,但是工具太复杂,业务方不会用。数据分析师虽然会用 BI 工具,但相比需求数量,人员严重不足。因此,我们提出了 Agent 架构加语义层的新范式,旨在降低业务团队的看数门槛,让大模型参与到整个环节中。解决方案:智能分析产品常见设计思路以及优化路径
我们提出的关键概念之一,是在数据和业务之间添加语义层,作为连接业务语言和技术语言的桥梁。如上图所示,构建数据语义层包括 7 个核心要素,首先把数据集成进来,然后构建语义模型,通过数据虚拟化、OLAP 计算等方式,供大模型去消费。很多企业目前在尝试的是称为仓内语义层的一套范式。在这一范式下,会将整个数据语义口径层构建在数据仓库内部,包括指标对应的是哪些表的哪个字段,加工逻辑等。- 数据语义层都是由数据工程师在数仓构建加工,业务方很难去修改这些 ETL 作业,而看数分析口径确实有可能发生变化,所以这种方式对业务方不够友好。
- 虽然数仓内部数据语义层做了统一,然而一旦把数据集市的结果表同步给了终端,比如 BI 工具、大屏、Data Agent,数据团队很难在终端维护指标口径。因为不同数据应用的负责人不一样,他们可能自己修改口径,就会导致两边看到的数据、指标不一致。数据本身的指标口径都不一致,想让大模型理解就更难了。
基于仓内语义这套机制,很多团队也在尝试直接把数据中台内部的指标语义交给大模型,直接去生成 SQL。这种方式仍存在问题:- 首先,即使用现在最强的 GPT-o1,也会存在一些准确性的问题。
- 第二,大模型生成的 SQL,可能没有经过优化,没有一个很好的 OLAP 引擎优化机制,这会导致查数非常慢,作为自然语言交互工具,这种等待会造成用户体验很差。
- 第三,大模型缺少直接对数据查询、数据权限的管控,这会导致不同用户问同样一个问题时,大模型不知道以什么样的口径、什么样的权限输出给客户,因此存在数据安全的问题。
在维护原有的数据仓库、数据中台表不变的情况下,增加一个称为建模右移的指标语义层,其本质就是前文中提到的 7 要素。可以直接让业务团队、产品经理把指标、维度的一些核心要素做拼接,比如一个指标叫借款人数,它是原子指标,是一个最小颗粒度的指标,基于这个指标,会有一些分析维度,如机构、产品、时间要素等。这些指标、分析维度原子化之后,就对大模型比较友好了。举个例子,这时候业务方提问大模型:帮我看一下最近 30 天的借款人数的增速如何?大模型首先会把这段中文的自然语义解析为:这句话里包含哪些原子指标,哪些要素,哪些时间,哪些高级算子。这层转化逻辑,是通过大模型本身的意图理解,对于自然语言的识别而实现的。当大模型把这段自然语义解析为这些要素之后,就可以通过指标语义层的程序把这些指标、维度、时间要素解析为对应的 SQL,用于 OLAP 引擎查询。这个例子中,大模型做的不是 SQL 生成,而是只做用户语义的识别,对 SQL 片段进行拼接,这样能够避免大模型直接生成 SQL 产生的幻觉。同时,这个过程是以低代码的方式去构建的,业务方也可以参与到数据编织、指标口径的调整优化中。这是仓外语义相比仓内语义的最大优势。这样一来,指标语义层的产品定位,就变成由数据人员和业务人员共建的模式。这时候数据团队、数据管理员可以更多地聚焦于如何把数据仓库建好,而上层更加灵活的指标、口径定义和拼接可以由业务团队来设计。最终交给大模型理解的,其实是由业务团队设计好的指标语义、维度语义,避免了大模型幻觉的问题。在这套范式下,整个流程变为,用户用自然语言提出一个分析需求,通过大语言模型进行意图识别,把需求理解为对应的指标、维度,这个意图识别的过程叫 Natural Language to Semantics to API。这些非结构化的自然语言,大模型只要解析到半结构化的 JSON,解析出自然语言里的指标、维度、时间、高级算子就可以,不需要穿透到每一个具体的 SQL 片段。然后由指标语义层,通过数据虚拟化技术生成 SQL 片段后,再由 OLAP 引擎做查询,并把结果同步给用户。通过这种方式,结合了数据语言跟业务语言,让大模型发挥更擅长的思考、意图识别和解析的能力,而让数据语义层发挥标准化的查询能力。同时数据的安全性也有了保障。比如北京、上海、深圳三地的业务人员都要求:看一下近 7 天的销售额,虽然三个人的自然语言是一样的,但是可以通过识别每个人的角色、对应的权限级别划分等,保证不同人问同一个问题时,拿到的数据是不一样的。这是 NL2SQL 很难实现的。这种基于指标语义、基于 API 的方式,能够更精细化地考虑到指标的行列权限,并通过 Agent 架构覆盖到更多的场景。上图展示了某客户实测 NL2SQL 和我们的 NL2Semantics 的效果对比。当查询请求是比较简单的单表查询时,NL2SQL 可以通过直接读表实现。但是当难度上升到 3 星以上时,如果没有刚才提到的 Semantic Layer,没有一个多任务规划机制,直接 NL2SQL 就会有不准确的问题。以第四个问题为例,业务方既要看这个品牌在最近三个月销量 TOP3 的商品是哪些,又要看这三个商品的好评率,同时还要做一个数据报告。这其实需要多个任务的衔接,不仅仅是数据分析,还要做排序、解读,甚至归因。所以这时候,直接采用直接生成 SQL 的模式,很难满足业务方的特定需求。通过我们引入的 Agent 架构,先把一个复杂请求做拆解,拆解成一个个原子能力,然后再结合指标语义层做解析。最终大模型看到的所有指令,都会映射到上图底部的这些不同颜色的要素,比如时间维度、地域维度、公司维度等。还是以第四个问题为例,对于大模型而言,只需要把这句话里的最近三个月识别为时间,商品识别为产品维度,好评率识别为指标,把这些映射关系 mapping 出来就够了。这些指标维度对应的 SQL 片段的逻辑,是在数据语义层 Semantic Layer 去维护的。所以这种 Agent 架构加上 Semantic Layer 的方式,能够更好地满足用户在一些特定复杂场景下的查询请求。技术架构:Agent 架构结合数据语义层(Semantic Layer)如何实现产品落地
为了把 Data Agent 做好,除了语义层,还有一个很重要的技术点就是 Agent 架构。接下来将介绍如何将 Agent 架构与语义层相结合,来实现产品落地。上图是某金融机构的一个例子,业务方的问题是:看一下最近 7 天基金申购人数,哪个渠道跌得最多,再帮我做个总结。我们如果是从 Agent 的角度思考,在底层上会分为四个环节来完成这个任务,即专家雇佣、协同决策、动作执行和结果评估。专家雇佣机制可以理解为,有一个小组,小组中每个角色都有自己擅长的能力,比如有些专门做数据提取,有些专门做可视化,有些专门做异常归因或写报告,这些都是独立的 Agent。我们希望针对任务,把这些 Multi Agent 做grouping。针对上述用户问题,需要三个专家一起参与:先取到数据,然后做数据的异常归因,最后基于结果写报告。这三位专家,或者说这三个 API 作为一个小组,一起协作把问题解决。在协同决策流程中,大模型会生成一个调度任务。这个任务的编排,类似于现在很多 Agent builder 里面的流程图,把每一步的逻辑同步或是异步地自动化编排出来。这时候,大模型扮演了一个规划者或者协调者的角色。它会把这三个专家按照执行的顺序做串联,最终再由每一个 Agent 执行,拿到对应的结果或者报告给用户。大模型的 Agent 架构,其实像一个交响乐团的指挥,指挥并不一定会所有乐器,但是他能够去协调每一个声部、每一个乐器如何配合。这个时候其实就是一个大小模型协同的机制,大模型扮演的是一个思考者、协调者,把这些原子能力做编排,并且最终把用户的任务集成解决。这就是我们希望能够结合指标语义层和 Agent 实现的能力。语义层需要确保取的数是准确的;而 Agent 架构则确保数据分析子任务能够被有机地编排起来,并且形成一个能让业务方看懂的结论或者报告。这就是我们的指标语义层与 Agent 的协作关系。Agent 架构能够在一些复杂场景帮助用户完成一些高阶的回答。从图中可以看到,当一个用户提问时,首先让大模型做一个感知,如果问的问题不是数据分析类,把这些任务路由到其他 Agent,比如知识库或文生图的 Agent 等等。当发现这个意图确实是数据分析的时候,会通过一个 planning 规划的机制,对任务进行拆解,并反思设计的这一套 planning 的流程是否合理;同时还要考虑上下文,比如用户之前是不是问过类似的问题,是不是可以做一些动态 few-shot,实现更快的召回,用户上文提到的内容是不是对下文有帮助,会做一些记忆的获取。在用户把复杂问题交给大模型,大模型做了合适的 planning 之后,下一步通过工具调用实现具体任务,比如取数,取到数据之后做归因分析,然后生成详细的报告。这就是一个从大模型理解用户意图,再到编排,获取记忆,再去做实际的 function 执行的全流程。第一步,数据语义层,要能够在获取数据时保证数据是准确的,这是最重要的。第二步,对复杂任务,通过 Agent 机制,将原子能力以合适的顺序、合适的时间点做编排,并且最后做回传。这里的工具调用,可能是同步的,也有可能是异步的,比如取数、图像生成比较快,就是一些同步的任务;当做一些数据解读,或者产出分析报告的时候,可能大模型用的时间很长,就变为一个异步的任务。这就是一个由 Agent 架构出发,结合指标语义层的数据智能分析助手的实现逻辑。应用场景:某零售连锁行业智能分析助手落地案例
接下来将分享一个零售连锁行业客户落地智能分析助手的案例,展示如何通过语义层加 Agent 架构来解决企业内部日常看数、用数的问题。这个客户是一个加盟连锁形态的零售商,希望赋能的群体是一些领导和线下门店经理。原来所有的看数、取数、指标分析全依靠于总部专业的 BI 分析师去做,提需求的有上千人,而数据分析师只有十几人,这就会遇到效率问题。我们帮助其在已有数据中台之上构建了 Semantic Layer,先让大模型明白公司内部有哪些指标和维度。这层叫统一的数据语言,财务指标、门店指标、商品指标、供应链、外卖、毛利指标等所有指标的数据编织要先管理好,不仅人能看懂,大模型也明白该怎么取数。这里对其原有数据仓库、数据湖建设没有任何侵入,而是在仓外构建了一个专门的数据语义层,去做数据的集成、数据的加速。这里最关键的就是 Semantic Layer 的环节,它是数据语言和业务语言之间的桥梁,使大模型能够理解用户所说的业务名词、黑话。在此之上,通过 Agent 架构、规划器的机制去串联不同的场景,比如查门店的业绩表现,看门店的客群画像,或者对一些财务指标做洞察。我们会先让大模型对用户的自然语言做一个意图识别,这里也适配了很多国产大模型,比如百川、智谱、千问等等。第一步大模型意图识别和 planning,第二步把对应的指标标签、客群或者对应的维度通过加速引擎查询出来。其中最关键的就是语义层。上图是一个示意。当时有几百个指标,之前都是在每一个专业分析师的脑子里,分析师离职后,就再也不知道口径怎么取了。当我们把指标语义、指标血缘存起来后,想知道某个指标,就可以路由到对应的指标的结构或语义。在构建智能分析助手之前,每个门店经理在做月度复盘、技术复盘时都是依靠专业分析师在 BI 或 Excel 里面做分析,成本、门槛很高。落地我们的一套系统之后,实现了让门店经理、不太懂数据的人可以直接通过自然语言的输入,去做一些指标洞察跟分析。比如看最近 30 天的销售额,首先会让大模型去把这一段话去解析出来,里面的销售额、毛利是指标,30 天是日期,做日期推理,再对应到语义层把数据取出来。取到之后,还可以通过快速地点选,让大模型生成一些可视化的图表。当发现指标异常时,可以让大模型去调度一些归因小模型,来做一些维度或者因子分析,实现快速洞察。针对维度特别多的问题,我们会通过一个维度归因的算法,快速定位到因子维度。原来一个门店经理可能要花 4 个小时才能够知道,这一天毛利为什么跌了,是什么商品跌了,谁负责的门店跌了。现在通过自然语言交互即可直接生成结论。一方面指标语义层告诉大模型指标体系怎么构建,另一方面通过 AIGC 技术,可以更加快速地把数据结论以报告或者文本的形式呈现出来,业务方不用自己去做 ETL 作业的编排。语义层也对一些黑话做了配置和映射。这其中很重要的一个基础就是构建指标体系,明确指标血缘关系后,才能够做归因分析。智能分析助手在准确性、人效、用户满意度等方面都带来了显著提升,同时通过强化学习机制,从点赞点踩中让大模型更好地了解用户应用的逻辑。产品设计理念与挑战:LUI+GUI 融合的产品设计理念与挑战
接下来分享我们的产品设计理念,以及在设计 Data Agent 过程中遇到的一些挑战。对于 B 端应用,大模型参数等配置非常复杂。我们建议,产品形式不要像C 端一样只是一个对话框,而是采用 GUI 跟 LUI 结合的形式。LUI 的好处在于门槛低,GUI 的好处是一些参数、按钮、追问以图形化的形式呈现。常见挑战 1:当用户提问模糊的时候,怎么提升交互体验一个常见的挑战是,用户很多时候不明白自己的请求是否清晰。举个例子,一个用户作为门店经理,他的问题是:帮我看一下最近按照渠道的订单量,并对比一下去年同期。这个时候大模型不知道最近是 7 天还是 30 天,口径也不明确,也不知道需要怎样的对比。当用户的请求模糊时,我们希望大模型能够自己去思考,做一些反问提示。比如,用户提问:最近的资产情况。大模型应该思考这个指标常用的时间维度是什么,给用户做一个推荐。又如,用户想要查看利润,那么用到的指标到底是前台毛利还是综合毛利,还是商品毛利?大模型应结合指标语义层进行反思,然后反问用户。这样才能够解决用户语意不清楚情况下的查询准确率问题。第二点就是前文提到的,用户在表述自然语言时可能很相似。比如用户运营部门、活动运营部门、经营分析或者财务部门,他们在表述需求时提出“看一下昨天某个门店的数据表现”。但实际上,每个人对于“数据表现”这四个字的理解是完全不一样的。运营人员可能想要看的是首单、复购、召回;经营分析部门则可能指的是营收、成本、利润、损耗。而大模型并不知道提问者是谁,因此需要把角色考虑进去,让大模型先知道你是谁,你对“数据表现”这四个字的理解是什么。我们通过在后台,对企业专有名词(黑话)进行配置,并且把场景、角色考虑进去,去解决这个问题。这里会有一个冷启动的机制,我们需要去教大模型,用户是谁,用户关注的是什么,这样才能够让大模型逐渐理解到“黑话”到底映射的是什么样的指标。应用场景 3:用户不仅需要提取数据,更需要分析思路还有一个比较大的挑战是,对于业务方而言,数据的获取只是一个过程,不是结果,业务方要的不是数据,而是结论,是动作,是建议,所以不能只把数据表给用户。在数据的基础上,需要帮助用户做一些快速的归因解读。通过持续反思,让大模型形成追问机制,能够更加快速地帮用户解决特定场景的问题。未来展望:智能数据分析产品演进展望
最后总结一下对数据智能分析产品未来演进方向的展望。在 GPT-o1 推出之后,我们发现它的基础能力变得更加强大,已具备了在某些特定垂直领域的专业能力。而我们现在大部分的工具,不管是 Data Agent 还是其他 Agent,还是以 listening 的方式为主,还是以 chat box 的形式,回答用户问题。更好的模式应该是大模型在理解了用户分析历史,理解用户角色之后,来帮用户提问。比如一个面向财务人员,大模型每天帮他自动跑他关心的几个指标,生成报告。把分析的范式,从 listen 变成 speak,这样才更加符合数字员工的真实体验。大模型作为一个员工,能够主动思考,主动帮你想问题,主动帮你去分担一些任务。同时,当有了一些 data 的结论之后,更好的一个形式是这个系统能够串联这些决策,能够从 conclusion 到 decision。比如发现某个指标不好,建议动作是哪些。这样才能够连接企业内部更多的决策体系,充分发挥数据的价值。从 listen 到 speak,从 basic planning 到 expert strategy,从 conclusion 到 decision,这三个层次的演进是我对未来 Data Agent 的期望,这种形式才更加符合 Data Agent 作为主动化、智能化的数字员工的定位。以上就是本次分享的内容。欢迎大家关注数势科技,了解更多相关技术,或试用我们的产品。谢谢大家。问答环节
A1:这个问题我们确实遇到过。因为数据语言是一个非常结构化,要求非常严谨的一种程序,但是人讲话一定是口语化的,比如同样对于销售额这个指标,你可能说 GMV,我可能说流水,另外一个人可能说营业额。因此很重要的一个环节就是要做语义的对齐,也就是把公司内部不同的人,说的不同的话,对齐到某一个公共的指标上。这层面的映射确实是需要一定人工的,不是纯靠大模型都能做的。这种知识的泛化,可以遵循 learn and go 的逻辑,一开始召回率可能只有 80%,随着注册越来越多的黑话,构建越来越多的语义绑定关系,大模型会更好地理解用户语言。所以我们的 Semantic Layer,通过数据虚拟化、语义建模等技术,更好地构建了数据语言跟业务语言的映射关系。还有一层,是怎么让人说的话,去跟标准语义对齐。因为标准语义只有一个,就是销售额,而员工可能会说流水、GMV 或是营业额,所以这个时候会涉及到自然语言与标准语义的对齐,而这一步需要随着用户的使用持续地构建。A2:我们目前是通过大模型加规则的方式去实现的。当有一个结果指标之后,会有一些上下文的历史记忆,这时大模型会拿着这个结果,去跟历史上下文做一个 RAG 召回,参考历史的一些分析思路,生成追问的一些问题。还有一种方式是直接通过规则,这种比较简单。当你问销售额,那么可能追问的问题包括看一些 top n、看排序、看趋势、看归因等。所以我们的实现逻辑既包括由大模型做一些记忆上下文的 RAG,又包括依据一些规则的方式去实现。A:大模型在开始阶段可能只能达到 60-70% 的准确率,这个时候有一个很重要的机制,在我们的系统里面做了记忆模块,把一些历史上业务方提的复杂问题和拆解思路这种 QA 对记录下来。我们现在主要通过 dynamic few-shot 的机制,在每一次思考的时候,去召回一些历史分析思路。在做 COT 或者 TOT 拆解的时候,它就会照着原来的一些分析拆解思路去做一些补充。所以一开始的规划可能并不能把每一个复杂任务拆解正确,当分析思路沉淀的越来越多,通过前端的用户点赞这种机制,这个模块(长期记忆)会越来越厚,拆解就会越来越准。我们就是通过这样一个持续的循环,去实现比较好的任务拆解的。岑润哲,现任数势科技数据智能产品总经理,前头部互联网公司资深量化运营负责人,多年零售与金融行业数据挖掘与用户运营策略设计经验,曾为多家大型企业搭建从目标设定、数据诊断、策略设计到优化复盘的全链路数字化运营平台
在评论区留言参与与文章相关的话题互动。留言点赞最高的1位用户赠送一套《数据治理知识地图》。说明:
1. 留言需要与本文相关,点赞数需真实有效如发现刷赞行为,将取消参与资格。
2. 中奖者请在收到通知的24小时内将您的“姓名+电话+快递地址”留言至原评论下方处即可,隐私信息不会被放出,未在规定时间内回复视作自动放弃兑奖资格。活动时间:截至11月25日开奖。 快快拉上你的小伙伴参与进来吧~~