云计算·大数据 频道

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 能力实现包括资产检索、SQL 编写助手、自助分析助手等在内的多种工具,降低数据的使用门槛,让数据离用户越来越近。

  (系统技术架构)

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

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

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

  未来展望

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

0
相关文章