在智能问数范畴之中,text2sql属于应用极为广泛的一项技术方向,其特性在于高度依赖数据库元数据,具备灵活性然而准确率令人担忧。而指标问数身为text2sql的一种特殊情形,所处理的并非杂乱无章的数据库原始数据,是以经过治理的数据模型作为基础,目标是达成更为精准的数据问答。指标问数对智能体更加友善,能够极大地简化问答的复杂程度。一般而言,指标问数需要解决指标识别、时间维度识别、业务维度识别、构建dsl以及数据查询这五个问题。
Fabarta身为AI+的实践者,始终将企业智能化升级的核心需求当作导向,构建起了以数据为中心的AI能力体系。紧接着会有一系列文章,这些文章会结合在企业实践的业务案例,去介绍Fabarta的智能指标分析产品。而本文是从时间维度识别开始,来介绍Fabarta的智能指标分析产品的设计思路以及技术实践。
探索时间维度识别的业务场景
关于时间识别这方面,指标问数常存在这样一些复杂场景,有时间虚指这种情况,还有时间能上卷以及下钻的状况,另外就是时间对比之类的。
时间虚指所讲的是,用户查询的那个时间并非是一个确切的具体时间,或许得依据当下时间,去计算偏移量。时间上卷以及下钻讲的是,在指标建设期间,会依照不一样的时间粒度来计算指标。从细粒度朝着粗粒度,一般存在这几种:时日以及月份、季度、半年、年份这五种粒度。在不同的业务场景、用户习惯以及指标体系当中,用户所提出的问题会涉及到跨越时间粒度的查询,对于细粒度的指标,要查询其粗粒度的结构,这称作时间上卷。而对于粗粒度的指标,要查询其更为细粒度的结果,这称作时间下钻。数据的同环比、增长率、变化率等属于时间对比范畴,银行、金融等行业统计数据一般按t+1方式,这就要求AI能够识别用户问题里查询的具体日期。
从业务实践的角度去看,用户于时间维度之中的表达方式是丰富多样的,下面便是一些典型的代表,并且是具有代表性的存在:
对这些场景归类:
设计有效的DSL是解决问题的核心
Fabarta智能指标分析具备强大的数据处理能力,具备强大的分析能力,能够领会用户提出的问题,能够把用户的问题转变成查询语言也即DSL也就是Domain Specific Language,之后经由指标语义层进行转换,把DSL翻译为SQL,在此基础上查询出期望的数据。
所以,去设计恰当合适的DSL,这是解决时间维度识别的钥匙关键点,在于DSL里跟时间维度相关联的存在着:
在Fabarta智能指标分析里,针对上述所提及的时间维度有关的场景以及dsl,由三个角色各异的智能体进行分工与协作,以此来识别用户问题当中的时间维度信息,其中包括时间范围识别,对比识别,聚合识别。
确定的计算不要交给不确定的LLM
在时间范围识别的这一步骤当中,智能体会对用户问题里所涉及到的起始时间以及结束时间展开识别。与此同时,为了能够减少大模型出现幻觉的情况,并且准确识别出基于当前时间的偏移量,我们运用了特殊变量加上结构化输出以及规则引擎驱动这样的方式,以此来识别准确的时间维度信息。这里存在着一个重要的思考点,那就是让大模型直接去计算日期的偏移是会产生幻觉的,即便明确地向大模型告知了当前的时间,大模型也不能够准确地给出x个月前或者n天前究竟是什么日期。特别地,选用特殊的变量,有益于减少大模型的运算量,削减模型幻觉。与此同时,规则引擎当中可针对特定日期变量配置各异的值,能够处理特殊业务里t+1类型的需求。
一个表达式里头支持好多对比方式,在时间对比这个环节,智能体会分辨用户的问题是不是涉及同环比,或者是不是特定日期的对比,接着给出不一样的输出。
最终,DSL里会辨认出用户查询之中全部的对比意图,通过一种数组的样式,去生成全部的对比dsl。
时间上卷和下钻比想象中要更复杂
在时间聚合的这一步骤当中,智能体为了能够判断用户所偏好的时间展示形式。在dsl里呀,智能体需要去识别用户提出问题时他们所期望的时间粒度(Day / Month / Quarter / Half_year / Year / Overall)。一旦用户期望的时间颗粒程度跟指标自身的时间粒度并不相同,那么智能体就会给出上卷以及下钻的判断:
时间粒度是用户期望的,它指的是用户希望最终回答里呈现出来的那种时间粒度。时间上钻呢,是依据指标的时间属性来进行的,这种聚合方式最多能给出两级时间上卷。具体来说,一级是指标从Day上卷到期望的粒度,另一级是从期望的粒度上卷到Overall,就是这两级的上卷操作。并且它支持按照SUM,AVG,MAX,MIN这四种不同的聚合方式去处理数据。时间下钻方面,如果用户期望展示更细小粒度的时间属性的数据,那么就会从指标库中去检索同一个指标的细粒度计算后的值,进而给出时间下钻之后的结果。
结语
弥合业务语言跟数据查询之间的鸿沟,这就是指标问数智能体具有的价值核心所在。借助自然语言交互,业务人员不用去掌握复杂的查询语法,也不用理解底层数据结构,就能高效地获取所需的指标分析结果。
在技术达成方面,我们借由多角色协同的架构,把繁杂的 DSL 生成职责,拆分成好多着重考察的子难题,每一个角色专门致力于 DSL 的一个层面,这不但削减了单个步骤的复杂程度,还凭借交叉验证,提升了总体的精确性以及稳健性,由于篇幅受限,这次阐述了时间维度辨认场景的技术规划以及业务实操。通过利用大模型结构化输出、规则引擎的确定性计算能力,在时间维度识别等关键场景里显著降低了幻觉问题,设计了完备的dsl结构,把各种复杂的用户问题转变为dsl描述语言,规避了text2sql所引发的业务不确定性,还增加了识别准确率。
当下,欢迎借助下方链接登录并申请试用Fabarta智能指标分析。随后将会有多期技术文章,这些文章会揭秘Fabarta指标智能分析产品,还请大家满怀期待地静静等候这一时刻的到来。https://fabarta.com/products/intelligent-index-analysis)
参考资料背景
在企业数字化建设里,指标系统身为重点的数据资产,将企业运作进程中的各类业务数据予以整合,涵盖生产、销售、财务、人力资源等各个关键环节 ,这些数据经由系统的整理、分析以及加工,转变成具有清楚指向性的指标,例如销售额增长率、生产效率提升率、客户满意度得分等 ,这些指标不但直观地展现了企业当下的经营状况,还能够助力企业决策者透过数据背后的现象,洞悉潜在的市场趋势、客户需求演变以及内部管理的不足之处。
不过,于企业里头,指标系统常常有着某种程度的复杂度,数据层级较深,数据关系繁杂错乱,通常得穿透多级指标或者维度方可定位数据变化的真切缘由。数据之间存有多种关联,像因果关系、相关性关系、层级关系之类,这些关系相互交缠在一起,从而致使单纯借助人工分析变得极其困难且效率不高。比如,一个企业的销售数据,有可能会受到产品质量的影响,也会受到价格的影响,还会受到市场推广的影响,同时会受到竞争对手策略的影响,以及宏观经济环境等多种因素的影响,这些因素彼此之间还会相互作用,进而形成一个复杂的网络。在这样的情形之下,传统的数据分析方法常常难以快速且准确地定位问题的根源。
指标问数智能体
此刻,把智能体予以引入便彰显出特别的重要意味来。Fabarta给出了智能指标剖析,指标智能体依靠其强悍的数据处理本领与分析本领,能够领会用户的问题,并且把用户的问题转变为查询语言(DSL,即领域特定语言),迅速地在海量数据里边开展数据挖掘以及分析。举例来讲,智能体能够明白“贷款余额较同期”之中的时间与意图,分辨出这是一个查询当下贷款余额以及同比的问题,在指标库里精确地查询到期望的结果。
若用户期望知晓致使贷款余额上升的具体因素是哪些,智能体可剖析各个影响因素的变化率以及贡献度,寻得影响指标的具体因素。
由上述例子能够看出,智能体可以理解用户提出的问题,把输入的信息转变为特定的查询内容,对查询结果予以分析,给出分析以及总结等,给企业的决策供给有力的支持。另外,借助智能体还能够实时监测数据的变化,一旦察觉到异常波动,便能够立刻触发预警机制,并且自动启动数据分析流程,迅速找出问题所在之处,极大地提升了企业的运营效率与决策的及时性。借助AI智能体予以的辅助,企业可以更妥善地面对数字化转型进程里碰到的各类繁杂数据问题,达成更具智能化、更显高效化的运营管理。
技术方案
能够进行智能处理的主体涵盖五个重点核心组成部分,分别是,对用户所提出的问题予以辨别,去搜寻相关指标,生成特定的领域特定语言,查找指标所对应的结果,进而给出经过分析后得出的结论。
在这五个过程里面,最为关键的一步便是生成指标查询的 DSL ,DSL 是指处于某些特定领域范围之内的查询语法 ,在指标问答智能体当中 ,我们达成了一套指标 DSL ,它可以达成多种指标查询语法 ,涵盖了 ,包括。
依据DSL语法规则的智能体,将用户输入问题的意图予以拆解、分析,结合历史对话以及提示词,给出恰当的检索式,于指标系统里执行该检索式,查询出用户所期望的数据,再由大模型对数据进行润色与总结。
在实现指标问答智能体的过程中,有四点核心的设计理念:
