AI 写 SQL 真的靠谱吗?腾讯游戏在 AI+ 湖仓一体的实践

2024-05-16 00:36

本文主要是介绍AI 写 SQL 真的靠谱吗?腾讯游戏在 AI+ 湖仓一体的实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:腾讯游戏数据技术负责人 刘岩

导读

腾讯游戏是全球领先的游戏开发和运营商,其数据团队拥有十余年、700+ 款大型游戏的数据工作沉淀。复杂的业务环境下,腾讯游戏数据团队每年需要处理超过 3 万个数据提取需求,SQL 编写需要耗费大量时间和精力,如何提升效率成为了一个关键问题。

本文介绍了腾讯游戏数据团队如何通过最新的大语言模型技术,基于StarRocks构建一个高效的湖仓一体 +AI 数据管理新范式,解决游戏业务数据提取需求上痛点的实践经验。通过这种创新方法,AI 生成 SQL 的一次性准确率提升至 89%,数据提取的自助率、资产复用率也均有显著提升,解决了数据工程方面的痛点,也为 AI 赋能数据工作提供了全新的视角和方法。

AI 生成 SQL 在真实业务场景下遇到的挑战

腾讯游戏业务体量庞大且复杂,数据团队每年需要处理超过 3 万个数据提取需求,传统的人工服务模式在交付效率上已经遇到了瓶颈。随着 AI 技术的发展,能否利用大语言模型(LLM)的能力开发一套自助工具,让游戏业务团队能够自助化、快速高效地获取所需的数据,也是我们探索和尝试的主要方向。

我们做了一些调研,目前 LLM 在公共数据集(例如:Spider)下 AI 写 SQL 的准确率已经高达 90 分以上,基本能够达到人类的水平;然而在真实业务场景下,AI 写 SQL 的准确率出现了断崖式下跌,例如,在模拟真实业务场景的 BIRD 数据集下 AI 准确率只能做到 65 分左右,无法满足实际业务的需求。

我们再看一下 LLM 技术的演进,以行业龙头 OpenAI 来看,在 2022 年 11 月底推出基于人类反馈强化学习 (RLHF)的 ChatGPT,特别是在 2023 年 3 月份推出 GPT4.0 提高了复杂任务的推理能力以及多模态能力之后,就已经不在基础模型上做进一步的提升,而是把精力放到工程化应用上,简单来说就是怎么把大模型结合具体场景用起来,聚焦在 Prompt 工程、Agent、工具使用(RAG、函数调用)、更低的成本和更多的 token 等应用领域。

在这里插入图片描述(LLM 技术演进路线图)

总结来说,AI 写 SQL 要实现可以实际应用,我们的技术路线不是训练一个更强大的 LLM 模型,而是要通过工程化来提升 AI 写 SQL 的准确率。简单的说,之所以准确率不高,并不是因为 AI 写 SQL 的能力不行,而是 我们没有给到大模型「完备的信息」 ,由于数据资产不完整、冗余混乱、行业及产品专用知识缺失等问题,导致大模型对业务需求的理解出现歧义,因而无法交付准确的结果。

因此, 如何建设一套更先进的数据资产,给大模型提供更完备的信息,让 AI 更好地理解数据资产,就成为了提升 AI 写 SQL 准确率的一个关键突破口。

在这里插入图片描述

基于 AI+ 湖仓的数据资产体系

腾讯游戏在数据建设上有十几年的经验,业务需求也已经从业务经营分析类的报表和看数,逐步发展到精细化运营(明细数据)、归因分析(新指标和分层)、预测干预(算法实时处理)等深度的需求。我们自己建设的传统数据中台也面临着很大的挑战:

  • 逻辑模型自顶向下规划,物理模型自下而上建设,对于新需求(后验指标)建设滞后,中台一直在追赶需求。

    为了满足新需求(后验指标),不得已建设临时表,后续合并到中台治理难度大,且持续治理的业务收益低。

    数据中台解决了统一的问题,但对于个性化、差异化、明细化的数据挖掘、归因、干预等业务创新支撑较弱。

腾讯游戏数据团队与 StarRocks 合作,将传统的数仓建模转移到了湖仓一体架构上, 打造了基于 AI+湖仓的「新一代 AI 数据资产」, 通过使用语义层替代物理 ADS/DWS层,能够快速的配置新增数据集、指标、维度等,并且通过实时链路接入、透明加速等技术满足性能需求,实现快速响应用户后验需求和分析挖掘的需求。

在这里插入图片描述

(传统数据中台到新一代AI数据资产的升级)

新一代 AI 数据资产的模型架构下,底层的接入部分由离线改变为实时,另外减少离线数仓到 OLAP 的摆渡过程,用户可以直接使用实时的明细数据(而非传统的 T+1 结果数据)做进一步的挖掘和探索分析,快速洞察数据背后的深层次问题

在这里插入图片描述

(基于湖仓一体的技术架构)

语义层的语义资产被分为三种类型:

第一种是「已有看板」的资产,大模型可以直接使用指标来跟用户交互,这部分占大约 70%;第二种是「没有指标,但有特征」的资产,大模型可以通过特征来生成指标满足用户的需求,这部分约占 20%;第三种是「无特征」的、纯新的资产,往往需要用户来补充一些业务信息,再去交由大模型生成特征和指标,这部分约占 10%。

这样一来,AI 大模型技术可以直接交付数据结果,或者通过AI与人的互动最终交付数据需求,实现一个资产自助交付的高效体系。且在这个体系下,游戏项目组内不同团队的数据需求方,都可以通过 AI 来生产和维护同一个特征库、指标库和同一份资产, 让资产能够被 AI 和人理解 ,提升数据使用的效率。

在这里插入图片描述

(AI+湖仓中台的运营)

这套「AI +湖仓中台」体系会产生大量的运算,为了确保系统低成本、高效率运行,我们基于 StarRocks 异步物化视图的查询改写功能和多种刷新机制,建设了一个成本效率优化引擎,将数据治理问题变成技术问题。效率优化引擎围绕热度、粒度、速度三个核心要素开展治理,对于高热度、慢速度的 SQL 按照同粒度合并成优质资产,每一个优质资产对应一个 StarRocks 的异步物化视图,这样 StarRocks 就可以自动判断是否可以复用物化视图中的预计算结果处理查询。如果可以复用,系统会直接从相关的物化视图读取预计算结果,以避免重复计算消耗系统资源和时间;通过在数据湖之上构建异步物化视图来提升查询性能,同时省去了手动修改查询的麻烦。

在这里插入图片描述

新一代 AI 数据资产的应用

资产建设完毕后,接下来就是考虑如何用起来,开发一套 AI 自助化的数据提取工具,解决实际的业务问题。

首先,面对复杂的数据资产概念,我们引入了「本地专有模型」。大语言模型通用的知识在检索和推荐方面都已经比较完善,但针对那些企业通用知识、部门/项目知识、创造性知识, 比如我们所支持的游戏业务就品类众多、概念复杂,一些常规的操作可能就无法满足需求了。「本地专有模型」就可以更好地来解决这些问题,通过知识图谱、语义理解、检索、排序等技术,帮助大模型更好地理解数据资产,真正实现 「数据资产不仅可以被人类理解,也可以被 AI 理解」 的建设目标。

在这里插入图片描述

(专有模型技术架构)

其次,我们使用 Agent 多智能体架构,将一个Job(工作)分解成若干个 Task(任务),这些 Task 一部分由人类完成,一部分由 AI 完成,还有一部分需要人与 AI 协同完成。通过需求 Agent,人类提出的数据需求,AI 会辅助进行需求整理、并改写成 AI能够理解的格式,消除 AI 理解需求的歧义,确保 AI 交付准确的数据结果。

在这里插入图片描述

以新一代 AI 数据资产为基础,通过通用 LLM 模型、本地专有模型、Agent 多智体架构,AI 能力得到了更好的释放,在应用层面,我们可以借助 AI 能力实现包括资产检索、SQ L编写助手、自助分析助手等在内的多种工具,降低数据的使用门槛,让数据离用户越来越近。

在这里插入图片描述

(系统技术架构)

而在腾讯游戏内部,我们已经落地推出了一个问答式的智能AI数据助手「uDataChat」,用户可以通过自然语言跟 AI 交互,让 AI 生成 SQL,自助提取所需的业务数据。

在这里插入图片描述

(uDataChat 在数据智能问答的应用)

这套工具目前已取得诸多显著成效: 数据平均交付时间由人工服务时代的 2h 提升到0.33h,用户自助交付率提升 70%;资产复用率也由 70% 大幅提升至 77%,并具备快速、低成本、批量复制到其他游戏业务上的能力;而大家最关心的交付准确率方面,也已经由刚上线时的 51% 提升至了 89%,这一准确率已经可以满足实际业务使用场景的需求。

未来展望

AI 技术在数据工作上的应用仍有巨大的潜力,腾讯游戏团队也在不断地探索,除了通过 AI 生成 SQL 以提升数据获取效率之外,我们还在进一步尝试将「AI+湖仓一体」的能力与我们的更多工具和系统做集成,与 StarRocks 共同来进一步探索挖掘 AI 的潜力,实现用 AI 来重构数据的各个领域,同时也欢迎各行各业的伙伴来与我们交流这方面的技术经验。

如需更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/33412/8da64

这篇关于AI 写 SQL 真的靠谱吗?腾讯游戏在 AI+ 湖仓一体的实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993366

相关文章

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE