从 SQL 桥梁到智能体基础设施:Hex 的 DuckDB 实践
2026-11-05
10 分钟阅读
Caitlin Colgrove 和 Sam Harkness 与 Geertjan Wielenga 和 Tim Cox 的对话
摘要: Hex 在 2021 年首次使用 DuckDB,让 SQL 能够在其 notebook 中查询 Python DataFrame。随后,它围绕 DuckDB 和 Arrow 重建了计算引擎,将 Python 从数据路径中移除,而该引擎现在运行在 Hex 的智能体数据平台之下。本文分三个阶段讲述这个故事。
2024 年,Hex 围绕 DuckDB 和 Apache Arrow 重建了其计算引擎,将 Python 从数据路径中移除,并将项目运行时间缩短了大约 5 到 10 倍。该引擎现在运行在 Hex 的智能体数据平台之下,在那里 AI 智能体越来越多地决定进行什么分析。
DuckDB 彻底改变了我们的产品。没有 DuckDB,我们不可能构建出我们所构建的东西。
—— Caitlin Colgrove,Hex 联合创始人兼 CTO
Hex 简介
Hex 是一个智能体数据平台,用于自助分析、数据应用和仪表盘,以及管理智能体所需的语义模型和上下文。它与公司已经运行的任何数据仓库配合使用,因此它需要自己的引擎来处理数据拉入后发生的一切。那个引擎就是 DuckDB。
DuckDB 在 Hex 的角色分三个阶段成长:SQL 与 Python 之间的桥梁;一个将 Python 从数据路径中移除的引擎的核心;以及一个产品之下的基础设施,在该产品中智能体做越来越多的分析。
第一阶段:桥接 SQL 与 Python
Hex 在 2021 年首次集成 DuckDB,是为了解决一个具体问题:让 SQL 查询能够建立在前一个查询之上。当时,Hex 是一个数据 notebook。在较早的数据工具中,分析师通常只有一个查询,因此他们将自己的逻辑扭曲成一条可能长达数百或数千行的单一语句。
“调试起来真的很难,”Colgrove 回忆道。Notebook 之所以流行,是因为它们让你一步一步地工作。但要将分析分解为一系列 SQL 查询,每一步都必须操作前一步的结果。
这引出了一个尴尬的问题。第一个查询针对数据仓库运行后,其结果存在于 Hex 内部的内存中,而不是仓库中。“实际上并不明显你该如何对它运行另一个查询,”她说。团队考察了几个选项,包括直接在 pandas 中操作。
然后他们发现了 DuckDB,它可以接收一个 pandas DataFrame 并像数据库表一样查询它。“我们几天内就把它搭起来了,”Colgrove 说。“它完全在本地运行。它只是一个库,所以对我们来说使用起来极其容易。”
由此产生的功能,Hex 以 Dataframe SQL 之名发布,成为 Hex 的突破性时刻之一。“看起来很简单,”Colgrove 说,“但数据工作者能够将他们的逻辑分阶段组织成一个 DAG,而不是全都放在这些庞大的单体中,所带来的生活质量提升是巨大的。”此后多年,它一直是 Hex 引导新用户了解的“顿悟”时刻之一。
在这个第一阶段,DuckDB 是一座桥梁。Hex notebook 运行在 Python 内核上,中间结果存在于 pandas DataFrame 中,而 DuckDB 让 SQL 能够访问那个 Python 内存,就像它是一个数据库一样。
第二阶段:将 Python 从数据路径中移除
这个角色已经超出了最初的桥梁。早期的 Hex 需要一个活跃的 Python 进程才能运行,而当前的架构不需要。平台内的数据现在主要以 Apache Arrow 的形式移动,DuckDB 做转换工作。Python 仍然为需要它的用户保留,但它不再是每份数据都必须经过的强制层。
Hex 在 2024 年 9 月公开记录了这一转变。在一篇关于其新计算引擎的博客文章中,工程师 Dylan Scott 解释说,pandas DataFrame 曾作为每个单元格之间的通用交换格式。SQL、图表、透视表、地图和电子表格都在 Python 内核的内存中物化一个 DataFrame,即使没有 Python 触及数据。在某些项目中,这种加载和 DataFrame 创建占了总运行时间的 90% 以上。
Hex 用基于 DuckDB 的架构替换了它。单元格现在将其结果作为 Arrow 表写入 Amazon S3 中的缓存,并传递一个称为 LazyDF 的轻量级替身。DuckDB 在 Hex 的后端数据服务中查询底层数据,只有最终结果到达用户。只有当 Python 单元格实际请求时,数据才被拉入 Python。Hex 称这是它有史以来做的最根本的性能改变。
收益很大。Hex 报告项目运行时间下降了大约 5 到 10 倍,取决于项目复杂度和数据大小,最大的收益出现在主要由 SQL 和无代码单元格构建的项目中。
| 性能测试项目 | 12 秒 | 1 秒 |
| 重要内部项目 | 15–20 秒 | 3–5 秒 |
| 关键客户工作负载 | 超过 2 分钟 | 不到 30 秒 |
这次重写不仅仅关乎速度,它还减少了内存压力,让项目有更多自由处理更大的数据集。为了实现这一点,Hex 将其所有无代码单元格的后端从 Python 转换为 SQL。它们的操作现在用 HexQL 编写,这是一种内部语言,Hex 在运行时将其翻译为 DuckDB SQL 或其他 SQL 方言,因此工作也可以下推到客户仓库。Hex 表示,此举使其摆脱了 pandas 格式和 Python 运行时本身的限制。
为什么 Hex 没有构建自己的数据库
Colgrove 称之为“中等数据”规模。用户很少将整个仓库拉入 Hex;他们拉取其中一段,然后切片切块。“DuckDB 运行得难以置信地快。它非常高效,”她说。它为 Hex 用户构建的数据应用背后的过滤和交互性提供动力。用户仍然可以以 CSV 等格式导出结果。
这种安排也让 Hex 能够专注于它本身是什么。大约一年前,当团队构建其内部系统时,Colgrove 转向一位工程师,问他们是否在无意中构建一个数据库。“我们不是数据库公司。我们不想成为数据库公司,”她说。“那不是我们的专长。”相反,所有 Hex 侧的转换都运行在 DuckDB 上。“很难夸大它对产品能否工作有多关键。”
第三阶段:智能体决定工作
Hex 为人类构建的架构结果正是 AI 智能体所需要的。Hex notebook 本质上是一个数据转换图,DuckDB 执行这些步骤。这让它在 AI 之前就很强大。“事实证明,就像人类喜欢一点一点地构建东西并建立在前面的东西之上一样,智能体也是这样工作的,”Colgrove 说。
这改变了谁驱动分析。在早期的 Hex 中,一个人决定每一步并手工构建每个单元格。越来越多地,智能体决定运行哪些查询以及链接哪些转换,而 DuckDB 执行它们。
Hex 是首批发布完整数据智能体的公司之一,该智能体做真正的分析,而不仅仅是文本到 SQL。Colgrove 将速度归功于那个基底:智能体可以复制人类分析师所做的工作,在真实的数据后端上一步一步地构建分析。该后端让 Hex 能够缓存结果并在不同地方运行工作,在浏览器中或在服务器上。
她认为,结果是经典 BI 工具(如 Tableau)的能力,由智能体构建。Hex 仪表盘现在定义为代码,因此智能体可以操作它们,而人们仍然可以使用点击式编辑。下面坐着上下文层:语义模型、markdown 文件和可观测性,保持智能体输出可信。
智能体流量尚未给该引擎带来压力,但 Hex 预计在大约六个月内会。数据智能体落后于编码智能体,数据团队对自助分析的推广也很谨慎。这种情况现在正在改变:不是一百个人直接打开 Hex,一家公司可能有 10,000 名员工通过 MCP 上的 AI 助手访问它。每一个这样的查询都落在 DuckDB 上。
Hex 接下来走向何方
注意
以下两个方向都不是已发布的功能;两者都是 Hex 正在探索的领域。
Hex 正在密切关注 DuckDB 的两项发展。第一是 lakehouse。“如果你眯着眼看,Iceberg 加 DuckDB 看起来很像一个数据仓库,”Colgrove 说。早期的实验遇到了粗糙的边缘,特别是在目录方面,但许多 Hex 客户正是想要这种设置。Hex 已经有一个内置的 DuckDB 连接器,并且已经在内部运行 DuckDB,因此它可以为客户提供基于 Iceberg 的替代方案,以替代昂贵的数据仓库。
第二是客户端执行,这是 Hex 长期以来一直想要的。由于平台不再依赖 Python 进程,更多分析原则上可以直接用 DuckDB 运行,更接近用户。它仍然需要的是一个客户端-服务器协议来支持这一点。
Hex 还完全运行在 AWS 上,因此它欢迎 DuckDB Labs 加入 AWS。“我们与 AWS 的关系非常好,”Colgrove 说,“他们给你额外支持,感觉真的很匹配。”
一个成为基础的库
Hex 的 DuckDB 故事从一个两天的原型发展到 AI 分析产品之下的基础设施。它最初是一座让 SQL 读取 Python 结果的桥梁。它成为架构的一部分,使 Hex 摆脱了 Python 作为强制数据层,而 Hex 没有成为数据库公司。现在它执行智能体越来越多地为自己选择的工作。
当被问及如何衡量 DuckDB 的影响时,Colgrove 难以将其单独分离出来。“它是我们构建在其上的如此核心的技术,”她说。“你想衡量什么?我们的整个业务?”
来源
- 对 Hex 的 Caitlin Colgrove 和 Sam Harkness 的采访,由 DuckLabs 进行(录制的通话记录)
- Dylan Scott,“Lazier and faster: under the hood of our new compute engine,”Hex 博客,2024 年 9 月 26 日



