随着生成式人工智能(Generative AI)的崛起,从图像生成、自然语言处理到个性化推荐系统,生成式 AI 技术正迅速改变着各行各业的面貌。而在这场变革背后,数据的管理和治理显得尤为重要。对于企业来说,数据不仅是基础资源,更是构建 AI 应用和增强业务能力的关键。Apache Gravitino(incubating) 与 Databend 作为数据领域两个知名的开源项目,正通过各自的创新技术和实践,为数据管理和 AI 应用的深度融合开辟了新的路径。
近年来,随着数据技术的快速演进和业务需求的不断扩展,数据的体量和复杂度正急速增长。数据管理和数据治理面临的挑战愈发显著。尤其在 AI 与数据驱动的业务场景中,数据目录系统和数据湖的基础设施成为了关键。Gravitino 专注于多元异构数据的统一管理,通过开放的数据目录系统,打破了传统数据存储中的“烟囱”问题,实现了数据的高效使用和治理。而 Databend 作为新一代云原生数据仓库,专注于构建高性能、弹性扩展的存算分离架构,同时深度探索生成式 AI 与大数据技术的融合应用。这两个项目都以创新的技术和开放的架构,为企业在 AI+Data 方向的探索提供了坚实的支持。
在 Data Infra 第 22 期活动中,我们邀请到了 Datastrato 工程副总裁史少锋,为大家带来主题分享《Apache Gravitino:面向Data+AI 的统一数据目录》,深入介绍了新一代开源数据目录项目 Gravitino ,并探讨了生成式 AI 对数据库系统的影响和未来的趋势。
以下为本期 Data Infra 的相关文字、视频及资料:
视频回顾:Apache Gravitino:面向 Data+AI 的统一数据目录|Data Infra 研究社第22期_哔哩哔哩_bilibili
PPT 下载:https://github.com/databendcn/data-infra/tree/main/%E7%AC%AC%2022%20%E6%9C%9F-20241028
数据湖的发展历程
史少锋首先回顾了数据平台的发展历程。数据分析和数据平台最早起源于上世纪七八十年代,当时很多人发现要解决业务分析中面临的挑战,就需要使用专门的数据仓库。通过将不同业务数据库的数据抽取汇总到数据仓库中,再以各种业务域或主题域的方式建立数据集市,通过一定的加工计算,企业得以实现跨部门、跨业务的数据分析。
随着时间的推移,互联网和移动互联网的发展引爆了数据的快速增长,尤其在 2010 年前后,数据的种类逐渐从关系型数据扩展到半结构化和非结构化数据,诸如行为数据、日志数据、图像、视频等,这使得传统数据仓库的基于单机 Scale Up 的扩展模式已经无法满足企业对数据处理的需求。
面对新的数据量和数据多样化挑战,分布式数据存储与计算体系在 2010 年前后应运而生。以 Hadoop 为代表的第一代数据湖的崛起,使得大量互联网企业开始使用 Hadoop 构建起自己的分布式数据平台做计算和分析。若干年后,随着云计算平台的成熟,数据湖的发展来到了第二阶段,也就是基于云构建分布式的数据平台。史少锋提到,基于公有云相较于自建和运维私有大数据平台具有显著的优势,比如成本更低,提供了更加弹性扩容的能力,企业可以根据需求动态地调整计算能力,而不必在一开始就为峰值流量购买超额的资源。
然而,尽管云平台提供了便利,但其内部的技术和数据架构也存在不足,特别是在数据一致性、事务支持、性能等方面面临挑战。例如Databricks 在 2014 年-2016 年间开发云上的数据湖时就遇到了这些挑战,所以他们引入了新的技术,基于S3在中间层加入了数据湖存储格式(也称表格式)以解决上述问题,同时实现多版本、时间旅行、修改历史数据、动态调整分区等功能,至此数据湖的发展进入第三个阶段,即 Lakehouse 时代。
此时的数据湖虽然已经解决了容量,数据快速变化等挑战,但企业仍然面临着巨大挑战:各种形态的数据技术栈造成了数据的割裂,导致企业的数据变得非常分散,数据在这些技术栈之间流转和分享变得极为困难,数据治理逐渐成为企业关注的焦点。
同时,因为各国对于数据隐私和安全的要求不断提高,例如我们国家的《个人信息保护法》,欧盟的《GDPR》等法律法规,都限制了数据的跨境传输和共享。在面对日益复杂的业务需求时,传统的数据仓库和数据湖的将所有数据集中存放到一个位置的做法已经不再适用。因此,企业在数据合规和业务发展的双重压力下,急需一种新的解决方案。
Gravitino 的诞生:解决数据割裂的难题
数据其实如同冰山一样,在我们能看到的数据之下,往往下面隐藏着大量的隐藏数据或者原始数据,里面或许包含一些保密信息、敏感信息、隐私信息、版权不清晰的信息等等。这些描述数据的数据,我们称为数据的元数据( Metadata)。过去我们比较多的是关注数据本身,而对元数据缺少治理和使用。
现在业内有一个普遍共识,要对企业数据资产进行盘点和深入的整理分类,所对应的产品就是“ unified data catalog——支持多元异构数据的统一数据目录。
目前,AWS、GCP、Azure、Databricks、Snowflake 等都构建了这种统一的数据目录。但是对于广大用户而言,使用这些产品都会面临着被厂商锁定的难题,你只能在它们的云平台或产品里使用这类工具和产品,并且使用后很难迁移出来。
面对这些问题,Datastrato 发起了 Gravitino 项目。Gravitino 坚持以开源开放的方式,支持多引擎、多数据源。项目于去年开始开发,去年年底开源。今年 6 月份,Datastrato 将其捐赠到了 Apache 基金会,成为Apache基金会孵化器项目。
Gravitino 通过统一的元数据管理,为企业提供了对数据资产的全面治理能力。它并不绑定于任何特定的云平台或数据引擎,旨在解决数据割裂的问题。Gravitino 通过提供统一的 API 接口,帮助企业打破数据的“烟囱”现象,将各类数据源统一起来进行管理。
在 Gravitino 的架构中,底层支持 Hadoop 数据仓库、关系型数据库、MPP数据仓库、主流数据湖表格式(Iceberg、Hudi、Paimon)、消息流(Kafka)和非结构化文件(HDFS、S3)等数据源。上层则通过统一的 API 接口,让用户能够灵活地对这些元数据进行检索、操作和创建。Gravitino 的一个重要设计理念是开放和多元,它支持多种数据引擎,包括 Spark、Flink 和 Presto 等,这极大地提高了企业在选择和部署数据平台时的灵活性。
史少锋指出,数据治理的核心不仅仅在于数据的存储和计算,更是对元数据的管理和治理。在 Gravitino 中,企业能够通过统一的管理界面,对数据的标签、权限、审计等信息进行全面管控,从而提升数据的安全性和合规性。
支持 AI 场景的高效数据管理
目前GenAI时代,一个普遍的挑战在于,许多公司内部的 Data 团队和 AI 团队之间往往存在割裂。这种割裂源于多方面的原因,例如组织架构的不同、KPI 和目标的差异,以及他们各自使用的技术栈的不同。Data 团队通常使用数据仓库、SQL 及大数据处理框架,如Hive、 Spark 和 Flink 等来处理大规模和杂乱的数据。而 AI 团队则更多依赖于 Python 及其科学计算类库,如 NumPy 和 Pandas,处理的往往是质量较高的、规模较小的数据集。
这种技术栈的不同导致 AI 团队在需要数据时,经常不得不向 Data 团队请求特定的数据集,而 Data 团队则需要根据 AI 团队的需求来提取、共享数据。这一过程中存在着数据来源不明确、权限不清、数据使用追踪困难等问题。
Gravitino 通过统一的元数据层支持结构化和非结构化数据的管理,帮助企业解决这些问题。它借鉴了 Databricks 平台中的 Volume 概念,为 AI 团队提供了透明的数据接入方式,同时在权限管理、日志追踪和数据治理方面进行了强化。例如,Gravitino 能够记录数据的访问日志,并在数据不再活跃时,触发数据的治理和归档流程。这些功能提高了数据使用效率,增强了数据安全性。
未来,Gravitino 将继续扩展其数据源的支持范围,引入更多的数据引擎和存储类型,同时进一步增强对非结构化数据的管理能力。Gravitino 的目标是成为企业级数据管理和治理的标杆,通过灵活开放的架构设计,帮助企业解决多种业务场景中的数据治理难题。
在市场上,Gravitino 并不是唯一的开源数据目录项目。史少锋对比了 Gravitino 与市场上其他几款知名的开源数据目录工具,如 Apache Polaris 和 Unity Catalog (开源版)。他指出,与这些项目相比,Gravitino 的优势在于其对多元数据源的广泛支持,以及对多种数据引擎的集成。Gravitino 通过提供标准化的 API 接口,让企业能够更加便捷地管理和使用各种数据资源。
目前,Gravitino 社区成员除了 Datastrato 作为领导厂商,也有很多来自中国、美国以及其它国家的公司参与其中,比如小米在元数据治理方面使用 Gravitino 降本增效,支持 AI 团队的应用场景。与英特尔、Cloudera、LlamaIndex、腾讯等在进行深入合作。目前,Gravitino 已经在 GitHub 上获得了超过 1000 个 Star,正在快速增长的阶段,非常欢迎大家加入到 Gravitino 社区中,一起使用开源开放协作的方式来构建下一代数据产品。
Databend 在 大模型 融合中的探索
Databend 作为新一代云原生数据仓库,也在生成式 AI 方面有着独特的探索和实践。Databend 的技术团队专注于高性能和弹性扩展,并在多个场景中深入研究了生成式 AI 与大数据的结合。目前,Databend 主要经历了两个阶段的探索:
第一阶段探索(2023)
2023年,Databend 的探索重点是借助 OpenAI 提供的 API,将强大的生成式 AI 能力引入数据仓库的架构中。例如,通过 OpenAI 的 API 实现向量化索引,支持增强型问答(RAG)解决方案。AskBend 就是基于这一方案的产品,它能够对 Databend 文档进行查询,并返回基于文档的精准回答。
尽管在第一阶段中 Databend 实现了一定的突破,但也遇到了数据隐私和成本方面的挑战。Databend 依赖于 OpenAI 的外部 API,这意味着数据需要上传到外部平台,难以满足企业对数据安全和隐私的严格要求。此外,调用 OpenAI API 的高成本也影响了这一模式的可持续性。
第二阶段探索(2024)
2024年,Databend 开始探索与 Hugging Face 开源大模型的深度结合。在这次探索中改变了融合大模型的模式,不再基于 Databend 的 Query 内部运行 AI 集群,而是通过 Databend 的 Item Function Server 模式连接开源大模型,Databend 只需要定义一个 Function 的 API。部署好后,用户就可以在云上自动连接大模型。即使未来有其他更好的开源大模型,也可以很方便地切换,并且全部的数据处理都在自己的机器上,不但解决了数据隐私、合规性的问题,还实现了成本可控。
目前,Databend 基于这个 AI Function 实现了以下能力:
- ai_text_similarity:文本相似度;
- ai_mask:数据脱敏处理,用于保护敏感信息,如地址和电话号码。如果像以前靠人力的话,数据量很大的情况下需要很重的人力,AI 做这件事可以大大提高效率;
- ai_extract:实体提取处理,从文本中识别和提取特定的实体信息。比如说你的数据里包含有地址、性别这些实体信息,这个功能就可以将含有这些信息的数据提取出来;
- ai_sentiment:情感分析(positive/negative/mixed),用于判断文本的情感倾向。比如电商里有一些评论,该能力就能判断这些数据的情感方向;
- ai_classify:归类处理,根据预定义类别对文本进行分类;
- ai_translate:翻译,将文本从一种语言转换为另一种语言;
- ai_generate:内容生成
这些能力基本上都属于数据清理任务,用 AI 代替人类,可以大大节省人力成本。在整套方案的实现中,Databend 进行了多项优化工作,如对 UDF Server 做了一些改造,以往传统的逐行处理方式效率低下,改为批处理模式后,大大提升了数据处理的效率;通过向量化技术改造原始模型,使其更适合在低配 GPU 上运行,降低了运行成本等等;实现了精细的计费和监控机制,确保资源使用的透明性和成本控制。
在第二阶段的探索中,Databend 重点关注了数据清洗和数据处理功能的实现。这些功能展示了 AI 在大数据处理中的潜力,特别是在减少人力和提高效率方面。未来,Databend 将继续探索 AI 在大数据中的应用,进一步优化和完善系统。
Gravitino 与 Databend 在 Data+ AI 的创新与融合
Gravitino 和 Databend 的探索展现了数据平台与生成式 AI 技术深度融合的巨大潜力。Gravitino 通过其开放的架构和多元化的数据支持,帮助企业打破数据割裂的难题,建立统一的数据治理体系。而 Databend 则在生成式 AI 的背景下,通过其存算分离的架构,实现了对实时数据分析、数据清洗、多模态数据管理等场景的深度支持。
生成式 AI 时代的到来,为数据技术的发展带来了新的机遇和挑战。通过深入融合生成式 AI 技术,数据库可以在数据存储、处理和分析方面实现更高的性能和智能化。然而,面对数据质量、计算资源、模型解释性和隐私安全等问题,我们仍需不断探索和创新。未来,随着技术的不断进步和应用的广泛推广,生成式 AI 与数据库的融合必将带来更多的可能性和变革。
以上就是 Gravitino 和 Databend 在与生成式 AI 的探索和未来展望中的一些经验和成果,希望对大家有所启发。欢迎提出问题和讨论。
关于 Databend
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
👨💻 Databend Cloud:databend.cn
📖 Databend 文档:docs.databend.cn/
💻 Wechat:Databend
✨ GitHub:github.com/datafuselab…
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。