How Hamlet uses Databricks Lakebase Postgres to test changes against production data
TL;DR · AI 摘要
Hamlet通过Databricks Lakebase Postgres为每个代码变更创建独立生产数据分支,AI代理自动测试确保安全,探索向量搜索等新功能。
核心要点
- 每个Pull Request获得独立的生产数据分支用于测试
- AI编码代理在合并前自动运行流水线验证
- Lakebase Search将支持向量与文本搜索功能
结构提纲
按章节快速跳转。
- §引言
Hamlet通过Databricks Lakebase Postgres实现安全的生产数据测试流程
- ·核心机制
为每个Pull Request创建独立数据分支,AI代理自动验证变更
- ›技术探索
正在测试Lakebase Search的向量搜索能力及对象存储方案
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Hamlet测试实践
- 核心机制
- 数据分支隔离
- AI代理验证
- 技术探索
- Lakebase Search
- 对象存储方案
金句 / Highlights
值得收藏与分享的关键句。
每个Pull Request获得独立的生产数据分支,避免直接操作生产环境
AI编码代理在合并前自动运行流水线并验证结果
Lakebase Search将支持向量搜索和文本搜索,提升数据检索能力
Hamlet如何使用Databricks Lakebase Postgres在生产数据上测试变更 | Databricks博客
跳至主要内容
公司
2026年10月20日
Hamlet如何使用Databricks Lakebase Postgres在生产数据上测试变更
与Hamlet首席执行官Sunil Rajaraman及工程师Erich Douglass和Jeff Hui的对话
作者:Sara Steffen
摘要
- Hamlet为每个拉取请求分配独立的Lakebase Postgres生产数据分支,使工程师能够在不接触生产环境的情况下,使用引发错误的数据测试变更。
- AI编码代理在人工批准合并前,会在每个分支上运行流水线并检查工作成果。
- Hamlet正在探索Lakebase Search在Postgres中实现向量和文本搜索,以及对象存储分支和长期智能任务的执行环境。
Hamlet是一个使地方政府决策过程可访问且可搜索的AI驱动平台,该平台使用Databricks Lakebase Postgres为每个拉取请求分配独立的生产数据分支。工程师和AI编码代理能够在不接触生产环境的情况下使用真实数据测试变更,所有合并仍需人工审批。
我与首席执行官Sunil Rajaraman、首席开发师Erich Douglass和高级AI工程师Jeff Hui进行了交流。
Hamlet是什么?
Hamlet是一个AI驱动的技术平台,使地方政府决策过程变得可访问且可搜索。通过索引和转录美国各地数千个市议会、规划委员会和分区委员会会议记录,Hamlet使房地产开发商、记者、研究人员和市民能够即时搜索会议记录,跟踪地方政策发展,并为特定主题、地址或企业设置实时警报。
为什么地方政府数据难以标准化?
Sara Steffen:Hamlet从美国每个州超过7200个治理机构索引会议记录。这些数据景观是什么样的?为什么如此难以理解?
Sunil Rajaraman:美国有19000个城市政府、3000个县政府和约80000个特殊行政区。随便挑选两个政府网站,它们的外观都不会相似。这就是地方政府的原罪。少数几家CMS提供商决定让每个网站都与众不同,结果形成了一个完全分裂的政府互联网。Hamlet将所有数据整合并标准化。
公共智能平台与转录工具有何不同?
Sara:Hamlet将自身描述为公共智能平台。这与转录工具有何不同?这种区分为何重要?
Sunil:许多政府技术公司都在进行市政数据套利。它们为1998年代的网站编写脆弱的爬虫程序,并在表面添加现代涂层。单独的爬取和存储数据本身价值有限。你必须讲述一个基于事实的故事,这意味着要了解谁在发言以及他们对某个议题的态度。如果你是开发商,你希望知道市议员是否会批准你的住房项目,原因是什么,以及城市有哪些历史可能使其犹豫不决。
看看审批流程。大量风险投资进入审批数据领域,但过去十年审批时间线反而变得更糟。许多公司只是在症状上建立纪念碑。我们希望解决根本问题,即理解人。我们试图回答的问题是城市是如何根本运作的。
为什么杂乱的公共数据如此难以处理?
Sara Steffen:地方政府数据为什么如此难以处理?
Sunil Rajaraman:随便选两个网站,它们看起来都不一样。Hamlet将这些数据整合起来并进行标准化处理。
Erich Douglass:你无法只对接一个供应商。七到八家供应商覆盖了约75%的市场。之后是大量定制化设置的长尾市场。有时办事员会上传议程的PDF文件,有时他们扫描纸质副本并上传。你经常会遇到一些非常奇怪的文件。
顾客需要从会议数据中获取什么?
Sara:顾客需要从这些数据中获取什么?
Sunil:我们的客户包括房地产开发商、数据中心开发商和零售商等私营企业。他们几乎都在尝试加快项目审批或寻找新机会。没有Hamlet的话,有人需要花数小时观看会议,等待自己的项目被提及,并观察官员的肢体语言。我们能识别谁发言了,带你跳转到时间戳,并展示相关证据。
Erich:他们还希望了解先例。类似项目之前是否被批准或拒绝过?为什么?委员会要求了哪些修改?如果我们能展示真实情况,这将带来巨大价值。
Hamlet如何确保AI回答与数据源一致?
Sara:你们如何帮助客户信任找到的洞察?
Jeff Hui:我们在几乎所有流程环节都使用它。早期Hamlet通过人工完成这项工作,但这种方式无法扩展到数千个地点。对于很多政府机构来说,视频是主要的真相来源。将其转化为我们可用的结构化数据是最关键的步骤。平均会议时长约为3个半小时。没有人想看完整个视频。AI能引导人们关注值得花时间的部分,而视频始终在那里作为依据。我们可以精确展示说了什么,而很多AI系统在这方面存在困难。
上下文带来差异
Sara:你们如何在数千次会议中准确识别发言人?
Jeff:上下文带来最大差异。在发言人识别方面,我们知道是哪个委员会或小组在开会,以及当时有哪些成员。这有助于识别姓名,即使对听录音的人来说,准确识别姓名也很难。你不能只给模型一个视频并期望最好的结果。你必须收集所有有助于模型做出正确判断的信息。这是一个持续的挑战。
验证AI的解读
Sara:你们如何验证AI对官员发言的解读?
Sunil:准确的转录是首要条件。对于情感分析,我们使用多个AI模型来确认评论是否涉及特定主题,比如数据中心。然后他们会查看上下文来判断是支持还是反对。
在询问之前,你还需要定义什么是支持和反对。以警务为例,支持意味着什么?我们在这些问题上投入了大量精力。现在有多个模型在发布任何情感数据之前都会审查所有数据,并且要求高度置信度。
Hamlet如何使用Lakebase Postgres?
Lakebase是Hamlet使用的托管Postgres数据库,它为每个拉取请求分配独立的生产数据分支。工程师可以在不接触生产环境的情况下,用导致错误的数据测试更改,同时AI编码代理运行管道并在人工批准合并前检查工作。团队表示,之前的测试数据设置每周每名工程师需要花费数小时。
Hamlet 如何利用 Lakebase 数据分支?
Sara:为什么选择 Lakebase?这对团队带来了哪些变化?
Erich:我们之前在 AWS RDS 上使用的是标准配置,一个生产实例和一个预发布实例。我们的很多工作都需要针对非常具体的数据调整数据流水线。每次拉取请求时,我们都要花费 15 到 30 分钟将预发布环境调整到合适状态后才能运行验证。我们是一个小团队,速度对我们来说比几乎所有事情都重要。
数据分支功能说服了我们。现在每个拉取请求都会获得一个独立的生产数据分支,并连接到对应的预览环境。当预览环境部署时,它已经准备就绪。我们可以直接使用生产数据进行测试,甚至可以对其进行写入操作而不会影响生产环境。
自动扩展也带来了帮助。在 RDS 上,升级到更大实例可能需要几个小时的迁移。现在我们只需移动滑块,就能立即获得两倍大小的实例。
Jeff:15 到 30 分钟是理想情况,只有在恰好复制了完全正确的数据时才能实现。每个工程师每周可能需要花费数小时来维护测试数据的最新状态,包括本地克隆生产环境的部分数据来排查问题。现在当我们遇到 bug 时,我们能直接获取导致问题的精确数据,并使用相同的数据验证修复方案。
AI 编码代理如何在 Lakebase 分支上进行测试?
Sara:Lakebase 如何改变你们 AI 编码代理的工作方式?
Jeff:分支使我们的工作流程与 AI 编码代理的适配度大幅提升。每个拉取请求都与生产环境隔离。我们为 Claude 或 Codex 等代理提供其分支的访问权限,让它们自行运行检查。代理会完整运行数据流水线,并检查变更是否达到预期效果。每个拉取请求都会先经过代理的初步验证。当人工审核时,我们已经对它的有效性有较高信心。虽然仍需要人工批准合并,但越来越多的后续流程实现了自动化,而 Lakebase 是实现这一目标的重要因素。
Hamlet 接下来在探索什么?
Sara:你们接下来在 Lakebase 上会探索哪些新功能?
Erich:目前我们的大部分数据存储在关系型数据库中,而搜索功能运行在独立的向量数据库上。这两个系统经常出现不同步的情况。测试搜索功能又回到了旧有的预发布环境问题。我最近在尝试 Lakebase Search,它能在 Postgres 中整合向量搜索和文本搜索,将所有功能集中在一个地方确实非常方便。
Sara:除了搜索功能,你们接下来还想简化哪些方面?
Erich:分支功能效果如此显著,我们非常希望能在对象存储中的大文件上实现类似功能。目前每个开发者都需要在共享的生产存储桶旁边维护自己的测试存储桶,而跨存储桶管理状态非常困难。
Jeff:我们也在探索如何运行更长时间的代理任务。我们数据采集的一部分需要 AI 驱动浏览器在政府网站上查找内容。有些任务只需几分钟,有些则需要 30 到 40 分钟,而我们当前的 AWS Lambda 设置有 15 分钟的时间限制。
Lakebase 如何加速从证据到洞察的转化?
Hamlet 的工作始于原始会议录音,使客户能够追溯 AI 洞察背后的官方发言。Lakebase 支持实现这一体验的工程流程:生产数据分支让开发者和编码代理能够在不接触生产环境的情况下测试变更,同时仍由人工审批最终合并。对于一个需要跨数千个治理机构协作的小型团队来说,这意味着更少的时间用于准备测试数据,更多的时间用于改进产品。
常见问题解答
如何为每个拉取请求自动创建并删除 Lakebase 分支?
在持续集成(CI)流水线中添加两个步骤:当拉取请求(PR)打开时从生产环境创建分支,当 PR 合并或关闭时删除该分支。可以使用 Databricks CLI 编写脚本实现这两个步骤,并通过 GitHub Actions 等工具运行。创建分支时设置一个过期时间(生存时间,TTL),即使清理步骤从未执行,分支也会自动删除。完整的示例请参见基于分支的开发工作流程教程。
PostgreSQL 中的数据库分支是如何工作的?
Lakebase 分支是一个独立的 PostgreSQL 环境,它以父分支的模式和数据为基础,通过写时复制(copy-on-write)与父分支共享存储。只有分支上所做的更改会单独写入,因此创建分支与数据库大小无关。标准 PostgreSQL 通过复制现有数据库来创建新数据库,这会复制数据。Lakebase 数据库分支避免了这种复制,子分支的更改不会影响父分支。
如何向开发团队推广数据库分支?
从每个拉取请求对应一个分支开始(这是 Hamlet 采用的模式),然后扩展到整个工作流程。每种模式都用隔离环境替代共享的预发布数据库。
- 每个拉取请求一个分支:CI 在 PR 打开时创建分支,在 PR 关闭时删除分支。
- 每个开发人员一个分支:每位工程师获得一个包含生产数据的隔离环境,可以从中父分支重置以获取最新的模式和数据。
- 每次测试运行一个分支:每次 CI 运行都从一个全新且隔离的数据库开始,没有任何残留状态。
Lakebase 分支的成本是多少?
成本取决于计算和存储。每个分支拥有独立的计算资源,空闲时会自动缩容至零,因此您只需为实际使用的计算时间付费。对于存储,临时分支仅对发生更改的数据收费,而无过期设置的永久分支则按完整数据量收费。对短期分支设置过期时间。有关过期选项的详细信息,请参见分支过期文档。
AI 编码代理能否在 Lakebase 分支上进行测试而不会影响生产环境?
可以。每个分支都与生产环境隔离,因此代理可以在分支上执行迁移、运行测试并在完成时删除分支。仍需人工审批合并操作,模式更改通过代码中的迁移操作传递到父分支,而不是通过合并分支实现。
要了解更多关于 Lakebase 的信息,请访问 Lakebase Postgres 产品页面。
相关标签:
客户
订阅最新博客文章
订阅我们的博客,将最新文章发送到您的邮箱。
注册
查看所有博客
slice-start id="_gatsby-scripts-1"
slice-end id="_gatsby-scripts-1"