更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群企业通过数智化转型实现降本增效,已经成为行业共识。而随着AIGC时代到来,企业的创新能力和决策效率带来大幅度提升,对数智化转型也带来积极影响。 在数智化领域,火山引擎已在走在前列。基于字节跳动10年数据驱动理念,火山引擎推出“数据飞轮”理念,强调“以数据消费促数据生产,以数据消费助业务发展”,通过“数据消费”这一出发点,让数据融入业务,转动企业“业务应用层”和“数据资产层”的两个飞轮。 要使数据真正融入业务之中,就要摆脱“数据主要给研发使用”的误区,而是让公司各个角色、各个层级的人都能看懂数据、使用数据,如果数据使用门槛一直很高,那么企业难以构建起“数据飞轮”。 从企业数据消费的链路来看,数据资产的检索、管理可以看作是消费的第一环。找到正确的数据资产,继而才能实现数据的消费。数据的查找和使用本身强依赖业务专业知识的输入。过去传统技术方案下,数据资产检索需要大量人力保障、检索链路割裂,严重影响了数据查找和消费效率。 而火山引擎数智平台(VeDI)发布的DataLeap-找数助手,将AIGC引入数据研发治理领域,帮助用户,通过自然语言的方式快速找到所需的数据和知识,实现数据的查找和消费,大大降低数据消费门槛,让分析师也可以通过对话式、拟人化方法完成资产查询。除此之外,火山引擎数智平台(VeDI)发布的DataLeap-开发助手,则可以帮助用户通过自然语言撰写SQL代码,自动实现代码补全、问题调试,提高研发效率。 本篇文章将从技术角度,具体拆解DataLeap-找数助手、开发助手的实现方式,详AIGC如何为企业数智化转型赋能。
找数助手:AIGC在DataLeap数据资产方向的实践
现状与问题
数据资产建设的核心目的,是促进数据消费。如前所述,找数助手主要用于解决数据消费领域的各种问题。在海量数据的场景下,“如何高效、准确地找到数据”成为一个非常耗时的工作,这也是大数据研发工程师在现阶段面临的一个重要挑战。 这个数据不仅限于结构化的表格或经过处理的数据,还依赖于业务知识。在进行数据开发时,我们是将其绑定在特定的业务知识领域,有目的、有需求地进行。因此,如何找到与业务知识相关的背景数据,为下一步数据的使用和研发做好铺垫,正是找数助手能够解决的问题。 我们通常会定义结构化数据和非结构化数据。结构化数据在研发中应用广泛,但许多数据并不适合用结构化方式存储。这些非结构化数据和知识在数据研发链路或数用数据中是缺失的,或者不在整体的闭环系统中。然而,这部分数据具有很大的价值,需要我们加以利用。LLM在找数场景下的应用
LLM(大模型)这项技术具有参数量大、理解能力强、能进行对话式交互等特点,在找数场景中,大模型可以发挥重要作用。- 理解
- 推断
- 生成
找数助手的架构与细分介绍
整体架构
找数助手整体架构 我们整合现有搜索技术,并借助大模型进行强化,搭建了找数助手的整体框架。找数助手拥有一套完整、且对于传统对话式机器人而言相对成熟的对话框架。 在问题分析和理解这一关键步骤上,找数助手通过识别问题意图、提取关键词,以及合并前、后轮对话内容的上下文信息,以确保用户提出的每个问题都得到有效处理。在问题分析后,则主要借助搜索技术,进行表、元数据或文档方面的检索。 在找数场景中,它会根据不同的意图执行不同的检索流程。例如,业务知识类通常沉淀在公司的业务文档白皮书中,我们可以通过文档搜索技术找到候选集。又如,查找表、数据集等可以通过元数据检索进行垂类搜索。找到候选集后,模型会通过这些候选集来理解问题。首先,需要确定哪些候选集与问题相关,然后对其进行进一步的语义筛选和排序。接下来,通过找到相对集中的表或文档,进行进一步的总结。 这是大模型的优势所在,简单来说,就是让它进行阅读理解。例如,给模型一个表或文档,再告诉它用户的问题,让模型总结出哪些信息可以回答用户的问题。问题理解
- 核心关键词提取
- 多轮对话问题合并
意图判断
在意图部分,需要根据不同场景进行定义。我们结合字节跳动内部的真实找数场景,将意图分为两级:第一级是查找数据,如查找表或数据集;第二级是使用数据,如了解具体指标的定义、枚举值的定义、口径的定义、表的区别,或进行其他方面的咨询。 再下一步是偏向业务的咨询类,涉及数据领域的通用知识。最后是面向研发的问题排查类意图。整体来说,有这么几种意图。使用大模型的通用模型可能无法很好地区分这些意图,我们通常会采用 prompt 工程和精调的方式,以提高准确率。元数据生成
接下来,我们要处理候选集合。我们的目标是寻找表格或业务知识,关键在于其源数据是否丰富,业务描述能否解答问题。 举个简单例子,假如一个普通人拿到很多表格,别人问哪些表格能解决某个问题,他需要查看这些表格的元数据、模式(schema)和描述。如果他能回答这个问题,就说明元数据质量不错。然而,在很多公司,元数据积累并不注重质量,因此我们可以用语言模型提高效率,促使大家尽量丰富元数据。 在元数据整个链路中,低质量元数据资产识别、元数据分发、元数据质量三个环节基本可以通过现有工程手段完成。在元数据完善环节,我们可以借助语言模型提高效率。语言模型能读取表格,进一步推断出模式(schema)信息或描述信息的样子。之后,我们可以人工确认,用这种方式推动大家进一步丰富源数据信息。业务知识沉淀与检索
在企业和公司中,会有很多文档类的知识积累,如何更好地利用这些知识是一个非常重要的问题。在找数场景中,我们可以基于之前的文档切块,进行向量切分和语义匹配。在使用找数功能时,用户与机器或人之间的对话过程非常重要,模型可以通过阅读对话,将知识进一步沉淀为文档或知识类的内容。 在这方面,模型非常擅长,它可以理解你的问题,并给出非常精准的候选结果。答案总结
最后,模型通过对检索结果的阅读和与查询的理解关联,给出答案。举例而言,用户可能会问:有没有与好物直播间经营状况相关的表格?我们的数据库或表中可能有很多与之相关的表格。模型在检索后进行召回,然后对召回结果进行更直接或更精细的描述,以确定该表是否能回答用户的问题。 例如,有一张直播间流量明细表,模型在读取其元数据后可能会判断该表提供了一些直播间的流量信息,包括观看人数、互动等。假如用户想了解经营状况,那么通过该表进行挖掘可能会有所帮助。 再比如,有一些商品表,其中包含了一些商品信息,这些信息也可能与经营状况有关。用户可以通过商品维度来解决问题,该表可能也会有所帮助。因此,在检索结果后进行答案总结是非常关键的,这可以大大提高效率。综上所述,找数的关键在于如何利用模型来理解问题、总结已有语料,并为用户提供更有效的信息。开发助手:AIGC在DataLeap数据研发方向的实践
现状与问题
公司里与数据相关的人群可以分为三类:- 专业的数据开发人员:这类人群具备较强的数据开发能力,能够轻松处理复杂的数据清洗逻辑,具备专业的数据建模理论。
- 具备一定数据开发技能的用户:这类人群的本职工作可能不是数据开发,但也掌握了一些数据开发技能,能够编写 SQL 语句并进行简单的数据分析。
- 日常工作中需要使用数据但不具备数据开发技能的用户:这类人群的数量较多,他们需要学习简单的 SQL 语句来处理数据。
推动数据平民化
推动数据平民化是我们对 AIGC 技术的理解。那么我们该如何衡量这件事的价值呢?假设我们要将其打造成一个产品,又该如何评估这个产品的价值呢? 假设我们有一个数据开发的旧范式(如编写 SQL)和一个新范式(如编写自然语言)。那么产品价值简单来说,就是"原范式成本-新范式的成本-习惯改变成本"。由于我们之前习惯了编写 SQL,有一个 IDE 可以直接编写,因此需要考虑习惯转变的成本。在有了大模型之后,我们需要将其视为助手,并与之交互,实际上是一个相当大的习惯改变。 从上述角度来看,如果最大化产品价值,原范式成本是不变的,那么我们只能将AIGC范式成本与习惯改变成本尽量降低。这主要涉及几个关键问题:- 为了降低新范式的开发成本,前提在于开发的可靠性。即自然语言编程是可靠的,大模型写代码是可靠的。
- 在该前提下,我们仍然要考虑到,能否将编写自然语言的成本降到最低?
- 如何在大家习惯改变不大的情况下,让他们更好使用这套产品?
开发助手的架构与细分介绍
结合上述思考,我们设计了整个产品架构,分为三层:场景层、工程层、模型层,本文将重点讨论前两层。 开发助手产品架构场景层
- 数据开发场景类型
- Coding Copilot
- 知识问答
- 场景设计
- Text2SQL
- 补全
工程层
- 工程层整体架构
- Prompt Engineering
- 模型对接框架
- Prompt Engineering
- Prompt模板
- 表结构填充
- 多轮对话
- 字段裁剪
- 准确率
- 体验
- 桌面级IDE体验
- 关键链路的延迟优化
- 通过 A/B 实验优化模型策略
技术架构
以下将介绍开发助手的整体技术架构。 开发助手技术架构 用户在 Web UI 上的操作包括两部分:用户直接向助手提供输入,如使用自然语言描述需求;同时,系统提供当前上下文信息,如用户正在开发的任务、已编写的代码、光标位置等。这些上下文信息构成原始输入,发送到前面的“输入处理器”(input handler)。 “输入处理器”执行过滤和缓存检查等操作,最终输出原始的prompt。原始的prompt进入下一个阶段,即系统接收到原始prompt后所执行的操作。其中一个重要的操作是,从多个外部系统中获取更多相关信息,以丰富prompt。 用户输入可能只是一句话,但我们丰富后可能变成 100 句。系统中有多种来源可以提供相关信息,如存储的历史记录、元数据系统,以及在线数据存储中存储的更多相关元信息。添加这些信息后,我们得到一个优化的prompt,认为它具有较高的质量,然后将其输入模型,以期获得良好的输出。 模型的输出在大多数情况下可以直接使用,但在某些情况下,需要进行更多的后处理。由于推理可能不够准确,因此需要进行一些工程上的或基于规则的裁剪,或者进一步丰富,以使结果更易于接受或具有更高的质量。最终,我们将得到的结果返回给最终产品或用户,由用户决定采纳或拒绝。未来工作
未来工作将结合找数助手来进行规划,主要分为三个方向:- 数据生产与消费全流程建设
- 效果优化
- 对话理解:准确识别用户意图,提取相关关键词。
- 召回准确率:注重语义、相似性及排序策略等。
- 大模型总结能力:擅长总结的同时,避免出现 Badcase 等。