在数据驱动决策至关重要的世界里,企业正争相寻找从海量数据集中提取可操作洞察的最有效方法。作为实时物流和运输领域的全球领导者,Uber 最近分享了其内部文本到 SQL 平台——QueryGPT(如果你还没看过这篇文章,请在此处查看)——正在彻底改变其团队与数据交互的方式。通过让员工能够简单地使用自然语言提问并获得相应的 SQL 查询,Uber 将查询编写时间缩短了 70%。考虑到他们每月运行大约 120 万次查询,这意味着每月惊人地节省了 140,000 小时。
然而,这种显著的效率并非只适用于拥有庞大工程资源的科技巨头。随着像Wren AI 这样的开源解决方案的出现,文本到 SQL 的优势可以得到普及。Wren AI Cloud 旨在赋予各种规模的企业利用生成式 AI 支持的自然语言查询来无缝访问其数据的能力。在本文中,我们将从技术角度剖析 Uber 的 QueryGPT,并重点介绍 Wren AI Cloud 如何复制(在某些情况下简化)这些复杂功能。目标是帮助你了解如何在自己的业务中实现文本到 SQL——无论你的规模如何。
Uber 的数据平台是一个庞然大物:它每月处理数万亿行、PB 级数据和数百万次查询。传统的 SQL 编写既耗时又要求用户具备强大的查询构建技能、理解底层数据模型,并且知道在哪里找到正确的表和列。QueryGPT 通过使用大型语言模型 (LLM) 并巧妙地集成到 Uber 现有数据生态系统中,消除了这些障碍。
Uber 设计 QueryGPT 的关键技术组件,在 QueryGPT 文章 中分享
工作区 (Workspaces) 是与特定业务领域(例如出行 (Mobility)、广告 (Ads)、核心服务 (Core Services) 等)对齐的 SQL 样本和表模式的精选集合。通过创建面向域的相关表和查询模板集群,QueryGPT 缩小了可能的数据源范围,这显著提高了模型生成 SQL 时的准确性。
工作原理:当用户与 QueryGPT 交互时,系统首先会识别哪些业务领域(例如,针对行程和司机的出行 (Mobility))与查询相关。在该工作区内,QueryGPT 将参考一组更小、更集中的表和 SQL 模式,而不是扫描 Uber 的整个数据库生态系统。
优势:
用户输入自然语言问题后,QueryGPT 会使用意图代理 (Intent Agent) 来解释用户意图并确定最合适的工作区。这一步骤对于确保系统将查询定向到正确的领域,进而定向到正确的表子集至关重要。
一旦 QueryGPT 知道需要关注哪些业务领域,表格代理 (Table Agent) 会提出与用户请求最相关的具体表格列表。这一步骤在像 Uber 这样的大型组织中至关重要,因为一个领域可能包含数十甚至数百个具有重叠或互补数据的表格。
即使确定了正确的表格,大型企业模式也可能包含数百列,如果某列有可能出现在查询中,就必须将其描述给语言模型。如此详尽的细节在生成过程中可能会达到或超出令牌限制,尤其是在使用像 GPT-4 Turbo 这样具有高令牌容量的模型时。
这四个组件——工作区 (Workspaces)、意图代理 (Intent Agent)、表格代理 (Table Agent) 和列剪枝代理 (Column Prune Agent)——共同协调 Uber 流畅高效的文本到 SQL 生成过程。通过将解决方案细分为特定领域的工作区 (Workspaces),通过意图代理 (Intent Agent) 过滤查询,通过表格代理 (Table Agent) 验证表格选择,并在生成最终查询之前剪枝不必要的列,QueryGPT 确保了高准确性、成本节约和快速周转。这种方法使用户能够通过简单的自然语言问题与 Uber 复杂的数据生态系统进行交互——提高了整个公司的数据可访问性和运营效率。
前沿技术带来的业务成果。
毫无疑问,Uber 的 QueryGPT 令人印象深刻,但它是为拥有大量工程资源的庞大组织量身定制的。成长型初创企业、中型企业,甚至独立数据从业者如何利用类似的技术呢?这正是 Wren AI 发挥作用的地方。
Wren AI 是一个开源的 SQL AI Agent,旨在普及文本到 SQL 技术。通过提供一个集成了 Uber QueryGPT 许多相同功能的云平台,Wren AI 旨在拉平竞争环境。
下面概述了 Uber QueryGPT 的设计如何与 Wren AI 的功能对齐和映射,说明了工作区隔离、意图检测、表格选择和列剪枝等相似原则是如何在两个系统中实现的。这些相似之处表明了双方都致力于提供一个流畅、安全且用户友好的文本到 SQL 体验。
在 QueryGPT 中,工作区 (Workspaces) 是针对特定领域(例如出行或核心服务)的 SQL 样本和表格模式的精选集合。通过将重点缩小到特定的业务领域,QueryGPT 可以更准确地生成 SQL 查询,并确保数据分析师只与上下文相关的表格交互。
你可以在 Wren AI Cloud 文档中阅读更多关于创建组织和项目的信息。
正如 QueryGPT 的工作区 (Workspaces) 一样,Wren AI 的项目 (projects) 允许你对特定数据模型进行分组和隔离,以便只有授权用户才能访问它们。在单个组织 (organization) 内,你可以为不同的职能或业务领域设置多个项目 (projects)——类似于 QueryGPT 设置单独的工作区 (Workspaces)。Wren AI 中的访问控制确保只有合适的人员可以查看和管理敏感数据,这与 QueryGPT 中看到的域范围隔离的原则是一致的。
当用户输入问题时,QueryGPT 的意图代理 (Intent Agent) 会识别问题属于哪个业务领域——出行 (Mobility)、广告 (Ads) 等——并将查询路由到相应的工作区 (workspace)。这一步骤极大地缩小了相关表格和模式的搜索范围,提高了准确性和速度。
Wren AI 的意图检测方法在询问文档中有所描述。当你提出“我有多少个表格?”或“给我解释一下客户表格”这样的问题时,Wren AI 会自动识别你是请求数据检索、模式探索,还是你的问题超出了范围(例如,随意的问候)。
在 QueryGPT 中,一旦识别出正确的领域,表格代理 (Table Agent) 会提出构建 SQL 查询所需的具体表格。用户可以确认这些建议,或对其进行编辑以确保与他们的实际数据专业知识保持一致。
在 Wren AI 中,这一步骤对应于表格检索 (table retrieval) 阶段,我们使用语义搜索来选择与用户问题最相关的前 10 个表格。在生成查询之前,我们会查看每个表格的名称及其元数据(例如描述或标签)来确定最佳匹配。
企业环境中的大型数据模式每个表格可以有数百列,将这些数据输入到 LLM 时可能会达到令牌限制。列剪枝代理 (Column Prune Agent) 过滤掉不必要的列,避免模型过载,从而降低延迟和成本。
Wren AI 的列剪枝代理 (Column Prune Agent) 功能相同:当你连接大量表格和列时,Wren AI 会剪枝掉与查询或用户当前需求不相关的列。这使得系统在大规模运行时保持快速、高效和经济。
除了强大的文本到 SQL 功能外,Wren AI 还提供一系列额外功能,使数据分析对所有技术背景的团队来说更加便捷、互动和易于访问。
Wren AI 自动生成富有洞察力的图表,以可视化你的数据并发现有意义的模式——无需额外步骤。
了解更多:https://docs.wrenai.cn/oss/guide/home/chart
Wren AI 中的样板 (Boilerplates) 是预定义模板,旨在简化你的数据分析旅程,从开始到结束。
了解更多:https://docs.wrenai.cn/oss/guide/boilerplates/overview
这种解析会引导用户了解 AI 如何选择某些表格和列,最终生成最终的 SQL 查询。
了解更多:https://docs.wrenai.cn/cloud/guide/home/answer#result-steps
Wren AI 使在熟悉的电子表格工具中共享和处理查询结果变得容易。
了解更多:
通过整合文本到图表、数据样板和深度电子表格集成,Wren AI 不仅仅是文本到 SQL,还提供了一个全面、用户友好的数据分析生态系统。无论你需要快速可视化、用于常见数据问题的现成模板,还是无缝导出到你偏好的电子表格工具,Wren AI 都能满足你的需求。
Uber 的 QueryGPT 和 Wren AI 都采用了模块化设计,通过利用关键步骤——工作区或项目细分、意图检测、表格选择和列剪枝——来解决文本到 SQL 的挑战。这种结构化方法确保了准确、高效和可扩展的 SQL 生成,同时保持严格的数据治理和安全性。
如果你正在寻找一个强大、开源的文本到 SQL 解决方案,能将这些创新带入你的组织,那么 Wren AI 提供了转变你团队与数据交互方式所需的一切。凭借项目和组织管理、意图检测、分步 SQL 解析和列剪枝功能,Wren AI 确保数据易于访问、准确且安全——无论你是数据分析师、工程师还是业务负责人。
👉 在 GitHub 上探索 Wren AI 的开源项目:https://github.com/Canner/WrenAI
👉 了解更多并立即试用 Wren AI:https://wrenai.cn/
开始简化你的数据工作流程,赋能你的团队更快获得洞察——无需手动编写 SQL。
今天就用 AI 为你的数据赋能?!