在当今快速发展的数据分析领域,智能分析平台正经历从传统 BI 到敏捷分析,再到智能分析的转变。随着移动互联网的兴起和大语言模型的出现,数据分析变得愈加普及,用户可以通过自然语言与系统进行互动,获取所需数据。然而,即使在敏捷分析阶段,仍然存在一定的学习成本。大语言模型的引入为数据分析带来了新的机遇,它不仅提升了语言理解和生成能力,还使得逻辑推理与工具使用变得更加高效。通过对用户自然语言指令的理解和转化,智能分析平台能够实现更直观的数据查询和分析过程,为用户提供更为便捷的服务。本文将分享腾讯基于 LLM 的智能数据分析平台 OlaChat 的落地实践。
随着大语言模型(Large Language Models, LLMs)的快速发展,智能分析在商业智能(Business Intelligence, BI)领域的影响日益显著。本节将探讨从传统 BI 到智能 BI 的过渡过程,分析这一转型所带来的新机遇与挑战。
传统的商业智能体系通常是基于一种自上而下的模式,业务负责人提出需求,开发人员进行数据提取和分析,最终经过一段时间的开发后,将结果反馈给业务方。这种流程不仅效率低下,还存在较大的沟通成本,导致决策的延迟。用户常常需要等待一周甚至更长的时间,才能获得所需的数据分析结果。
2.移动互联网时代的敏捷分析
随着移动互联网的崛起,数据的丰富性和复杂性不断增加,市场对数据分析的需求也在发生变化。敏捷分析应运而生,它旨在使更多的用户能够方便地获取数据并进行自助分析。通过简单的拖拽操作,用户可以轻松进行数据探索。然而,调研显示,即便是这种简单的操作,对某些用户来说依然存在较高的学习成本。比如,用户在进行环比计算或其他复杂操作时,仍需掌握相关功能的使用方法,存在一定的门槛。
到了 2019 年,智能分析的构想开始萌芽。虽然大语言模型尚未全面普及,但一些在自然语言处理领域表现良好的模型已经出现。这一时期,业界开始关注如何让更多的用户能够轻松进行数据分析,目标是将每个人都转变为“数据分析师”。智能分析的概念逐步形成,致力于简化数据分析流程,降低用户的技术门槛。
现如今,随着大语言模型的普及,智能BI 迎来了新的发展机遇。大语言模型不仅能够处理复杂的数据查询,还能通过自然语言与用户进行交互,使得数据分析变得更加直观和人性化。用户只需用自然语言描述他们的需求,系统便能自动生成相应的分析结果,这大大提高了分析的效率和准确性。
大语言模型(Large Language Models, LLMs)的发展历程展现了自然语言处理(Natural Language Processing, NLP)领域的显著进步。接下来将梳理大语言模型的发展脉络,并探讨其对数据智能分析所带来的新机遇。
1.大语言模型的发展脉络
(1)初期阶段:基于概率的语言模型
自然语言处理的早期阶段主要依赖于概率模型,如条件随机场(Conditional Random Fields, CRF)和马尔可夫模型。这些模型基于历史数据,通过词袋模型(N-gram Model)来计算词语出现的概率。此时,语言模型的能力相对有限,主要侧重于基于历史词语的概率预测。
2013 年,谷歌发布了一项具有里程碑意义的方法 word2vec,标志着基于神经网络的语言模型时代的到来。在这一阶段,长短期记忆网络(Long Short-Term Memory, LSTM)等模型开始得到广泛应用。神经网络的引入大大提高了语言模型的性能,增强了其对上下文的理解能力。
2017 年,Google 发布了 Transformer 架构,由此在 2018 年前后出现了一系列基于此的模型,如 BERT、GPT1/2 等。相较于之前的模型,BERT 和 GPT1/2 模型的参数量显著增加,达到千万、数亿规模。这些模型通过在大量语料上进行统一训练,可以快速适应不同任务,展现出强大的语言理解能力。
随着 GPT-3 和后续版本的推出,语言模型的参数量达到了千亿、万亿级别。这使得一个模型能够同时在多个任务上达到较好的效果,降低了对多个模型的依赖。在这一阶段,语言模型在文本生成、理解和逻辑推理等方面的能力都得到了极大的提升。
2.大语言模型对数据智能分析的影响
大语言模型为数据智能分析带来了以下四个方面的改进:
基于腾讯PCG 大数据平台部资产管理平台“Ola”和数据分析平台“灯塔”丰富的元数据和用户行为日志,结合大语言模型的能力,我们构建了 OlaChat 这一智能数据分析平台。OlaChat 能够提供高效和智能的数据分析服务,满足用户问数、人群洞察、NL2SQL 等需求,有效降低了查数、取数、用数的门槛。
接下来将详细介绍 OlaChat 平台落地实践。
三、腾讯 OlaChat 智能 BI 平台落地实践
OlaChat 智能数据分析平台主要目标是通过自然语言交互,为用户提供流畅的数据分析体验。系统的核心模块包括多任务对话系统、任务编排引擎、众多的 AI 工具以及底层的公共服务能力。以下是 OlaChat 的关键功能与技术架构的深入解析。
接下来将具体介绍其中一些能力。
多任务对话系统提供的基础功能为拒绝/澄清,以及引导/推荐。
系统具备的关键能力包括:
在数据分析中,元数据的检索是一个关键步骤,尤其当数据呈现结构化形式时,传统的基于非结构化自然语言的检索方法无法完全适用。腾讯的智能分析平台通过增强元数据检索能力,解决了结构化数据中的多层次、复杂性问题,为用户提供更精准的分析支持。
结构化数据,比如表和指标,每个表有表名、字段,指标下有维度(如年龄、性别等),这些数据有层次性和明确的结构。这种层次结构不同于非结构化文本,不能简单地通过自然语言的检索增强方法来处理。传统的自然语言检索主要基于 embedding(嵌入向量)技术,将文本分块后,通过相似度匹配来检索相关信息。然而,结构化数据并不遵循自然语言的逻辑,导致传统方法难以直接应用。
通用RAG 在解决元数据检索增强任务时存在一定的不适用性,主要因为:
我们有两种方案,分别从两个角度来解决元数据检索增强的问题。
第一种方案是 FlattenedRAG,在已有元数据基础上进行组合,将结构化的元数据变为非结构化的自然语言,当接收到用户问题后,进行检索、排序,找到与知识库中一致的数据。
第二种方案是 StructuredRAG,充分利用好元数据的结构化信息,优先检索出最核心的元素,再围绕这些核心元素进行二次检索,找到所需的数据。
元数据打平 :将数据表、字段、指标等信息组合成类似于问答式的自然语言。例如,指标为“活跃用户数”、维度为“男性”的查询组合可能会被打平为:“腾讯视频男性活跃用户数有多少?”。
基于知识库进行检索 :当用户提出问题后,系统会从打平后的知识库中进行检索,找出与用户问题相似的文本。
排序和匹配 :系统通过预训练的分类模型对检索结果进行排序,最终选择出最相关的答案返回给用户。
这种方法的核心在于将结构化信息转化为非结构化文本,从而使得传统的自然语言检索技术可以直接应用。
核心元素的检索 :当用户提出问题时,系统首先会利用结构化信息的层次性,优先检索出最重要的元素,如指标、维度等。例如,在用户询问“腾讯视频的男性活跃用户有多少”时,系统会首先确定“活跃用户数”这个关键指标。
围绕核心元素的进一步检索 :在找到核心元素后,系统会进行二次检索,匹配用户的问题和核心元素的其他相关信息,比如在上面的例子中会二次检索和“男性”相似的多个维度。
返回结果 :系统根据核心元素的检索结果,再结合进一步的二次搜索,最后经过一次排序之后给出最符合用户问题的答案。
在实际应用中,这两种方案各有其适用场景。例如,当指标和维度的数量相对有限时,打平方法可能更为高效;而在指标和维度组合较多的场景下,结构化方法则能够提供更自由的检索方式。这两种方案的结合,使得系统能够在不同场景下灵活应对用户提出的各种数据分析需求。
在泛数据分析架构中,底层是指标、库表等元数据,以及画像和历史问答集;这些数据进入标注系统后,会经过各种标注处理;之后是各种检索,包括关键词检索、语义检索等;检索后进行知识精简,继而为上层的指标分析、人群圈选等各种应用提供支持。知识精简和知识检索就是由前面介绍的元数据 RAG 实现的。
Text2SQL 真实业务场景下存在着诸多问题:
基于上述问题,我们最终采取了微调大模型+Agent 的方案来实现 Text2SQL。
高质量的数据对于训练高效的模型至关重要。然而,开源数据集大多面向英文场景,即使翻译成中文,结构也较为简单,通常为单表,字段在 10 个以下,而实际业务场景中可能有上百个字段。这使得大型模型在处理这些数据时容易产生误解或无法准确解读业务中的复杂逻辑。此外,开源数据集在操作符的使用上也比较有限,常用的操作符较少,这进一步降低了模型在复杂任务上的表现。
在我们内部,已经建立了一套数据生成的逻辑流程。该流程主要包括以下几个步骤:
数据收集与脱敏 :首先,我们会基于收集到的腾讯内部数据,进行必要的脱敏处理,以确保用户隐私和数据安全。
随机选取数据 :在经过脱敏处理后,我们会从数据集中随机选择一些样本,并将这些样本拼接成类似的提示(prompt),然后输入到大型模型中。
数据增强 :利用这些样本,我们会使用数据增强的方法,让模型基于已有样本生成新的样本,通过这种循环不断丰富数据集。
在数据增强过程中,有两个关键点需要特别关注,即准确性和多样性。
在数据生成过程中,我们将样本划分为不同的难度等级,包括简单(easy)、中等(medium)、困难(hard)和特别困难(extra hard)。我们发现,开源数据集在困难和极度困难的数据生成上分布不均。因此,我们特别重点生成这些困难类型的数据,以弥补开源数据集的不足。
经过这样的数据增强与补充后,我们对模型的表现进行了评估。在真实的业务数据集上,模型的准确率通常较低,例如,GPT-4 的准确率为 32%,而我们自己的模型可以达到 52%。除此之外,我们训练的模型还能实现对复杂问法、复杂 Schema 和复杂计算逻辑的支持,具有较好的稳定性。
我们还发现,单独使用一个模型很难达到理想效果,原因如下:
在我们的系统中,除了依赖于大型模型外,我们还开发了一套智能体流程,旨在辅助大模型生成更高质量的 SQL。这个智能体的流程能够针对大模型在理解力、稳定性和准确率等方面的不足,实施相应的策略,以解决这些问题。
我们认识到,将一张表的全部字段都传递给大型模型以供其理解并不现实。为了提高模型的准确性,我们会首先进行字段的精选,过滤掉冗余字段,留下更相关的字段,从而使得模型在理解时更加集中和高效。
用户的问题表述往往较为随意,为了提升准确性,我们可以通过模型对用户输入的问题进行规范化处理,并加入一些 fewshot 检索,从而提高模型的理解能力和生成准确性。
生成的 SQL 可能并不总是能正确执行,我们设计了一个后续纠错机制,利用大模型对生成的 SQL 进行审核,并进行必要的修改,同时可以进一步提升准确性。
我们将上述思想整合成了一篇论文,探讨了如何通过信息精简、分类处理、针对性生成和自我纠错的过程来提升模型性能。在生成过程中,对不同复杂程度的查询采取不同处理方式,简单的查询与复杂的查询应有不同的生成策略。在生成时设定特定条件,确保生成查询符合执行要求。同时,实施自我纠错机制,让模型对自己生成的查询进行反思与调整。此外,我们还实施了主动学习(active learning)的策略,针对常见问题进行重点提示。通过让模型专注于规范化问题,进一步提高模型的准确性。这一过程将智能体与大型模型相结合,提升整体的准确率。
在进行智能分析时,用户的需求不仅限于 text2SQL,还会有改写、纠错、优化、解读、问答、补齐等多种需求。为了满足用户多元化的需求,我们在系统中构建了多个智能体,旨在辅助用户进行数据智能分析,提升效率。
上图展示了 OlaChat 的整体架构,自下而上包括底层服务、中间公共服务、Agent、统一后端、统一前端,以及所支持的各种应用。不同模块相互配合,实现整个平台的统一体验,提升用户在数据分析过程中的效率与效果。
Q1:取数时使用了多大的模型?
A1:取数模型为 8B,相对较小,适合快速判断用户的查询。
NL2SQL 采用的是 70B 的模型进行微调。
Q2:如何保证归因的准确率?
A2:归因的准确率依赖于归因工具。虽然大模型推理能力强,但要结合外部数据提高准确率。所以我们的做法为,基于归因工具拿到数据后,大模型负责在中间串联,做一些语言上的整理归纳,呈现给用户。
Q3:SQL 纠错和 SQL 解读是否用了大模型?
A3:SQL 纠错和解读是用大模型实现的,但仅用大模型的话准确率较低,因此需引入更多信息来优化。比如可以加入 SQL 中用到的表的元数据,也可以将执行中的报错信息加入进去。所以不能光用大模型,而是要根据具体场景加入更多信息。
Q4:直接生成 SQL 语句是否过于复杂?
A4:直接生成 SQL 语句与基于语义层的简化方法各有优势,前者灵活性高,后者适合对不熟悉 SQL 的用户提供了有效的提效方案。
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/shenghuokepu/34751.html