来源:https://motherduck.com/blog/context-belongs-in-the-warehouse/
上下文理应归属于数据仓库
2026/07/29 - 5 分钟阅读
作者:Hamilton Ulmer, Till Döhmen, Jacob Matson, Garrett O'Brien
今天我们推出 Guides,这是 MotherDuck 为 AI 智能体(AI agent)提供的上下文层。Guides 能提升智能体驱动数据工作的召回率和准确性,这些工作包括:构建数据管道、执行转换、提供可视化,以及任何与数据仓库交互的操作。
在 DABStep 智能体分析基准测试中,面对一系列复杂的商业问题,Guides 将智能体的查询错误减少了约 99%(从 302 个降至 1 个),并且与让智能体自行发现上下文相比,成本降低了约 55%。
Guides 现已面向所有 MotherDuck 用户开放;请参阅文档开始使用,或继续阅读以了解更多信息。
信息: 观看 Guides 实际演示
欢迎于太平洋时间 8 月 13 日上午 9 点参加我们的 Guides 现场演示。在此处注册。
分析智能体仍然是热心的实习生
任何使用过智能体探索数据的人都知道,智能体已经尽了最大努力;它会详尽地查找模式(schema),自己推断连接关系,并孜孜不倦地推动一个听起来果断、呈现良好、但常常是完全错误且危险的答案。AI 模型在"达成"目标(即使错了)与更深思熟虑地为你提供正确答案之间挣扎着进行权衡。数据仓库越复杂,情况就越糟糕。
我们在 MotherDuck 分析自身业务时肯定也感受到了这一点,我们的客户在他们自己的业务中也有同感。他们几乎尝试了所有能想到的方法来引导智能体走向正确的方向,从团队级别的技能(skill)、自定义 MCP 服务器,到重载 DuckDB 的 COMMENT ON 功能,等等。每个人都讨厌这种状况。
无论查询或任务是什么,决策路径都必须经过查询数据仓库,那么为什么不同样将上下文也放在仓库中,使其可以通过 SQL 查询呢?
跨越上下文鸿沟
Guides 应运而生:它们是带有标题和描述的 Markdown 文件,很像智能体技能(agent skill)。我们坚信,仓库(而非 BI 工具或单点解决方案)才是存储关于业务的所有上下文(包括结构化和非结构化的)的恰当位置。Guides 存在于你的仓库中,像任何其他对象一样进行版本控制和查询。
- 精准的搜索与检索。Guides 可以编程方式引用你的目录(catalog)、Dives、Flights,甚至其他 Guides,因此任何查找查询都能自动找到正确的 Guide。主题(Topic)进一步改善了智能体在数十或数百个 Guides 中的搜索。
- 自动分发。Guide 的所有权分为两个层级:组织级和用户级。组织级更新会自动传播,确保指标定义保持一致。用户范围的 Guides 允许个人为探索、风格一致性或其他个人偏好培育私有版本。
- 基于 SQL 的管理。Guides 可以通过任何 MotherDuck 客户端完全使用 SQL 进行调用和管理,这简化了版本控制和 CI。
Guides 将上下文输入到智能体查询、Flights 和 Dives 中
那么 Guide 里包含什么呢?几乎包含智能体需要知道的、让你能信任它处理你数据的一切信息:指标定义和连接关系、目前只存在于你团队头脑中或 Slack 线程里的陷阱和注意事项,以及针对 Dives(我们智能体原生的可视化工具)的风格指引,和针对 Flights(我们用于构建数据管道的托管 Python 运行时)的约定。
例如,这个 Guide 包含关于如何计算费用的上下文,并涉及表中一组重复交易的处理:
markdown
---
id: fees-formula
domain: fees
summary: 费用计算公式以及计算费用平均值时按费用 ID 去重的规则。
---
**费用计算公式(每匹配规则,每笔交易):**
fee = fixed_amount + (rate / 10000.0) * eur_amount
`rate` 以基点(basis point)为单位,因此除以 10000。`fixed_amount` 和 `eur_amount` 以欧元为单位。
- **总计**(例如"商户支付的总费用"):对每个(交易 × 规则)匹配对,累加 `fee_amount`。一笔匹配 3 条规则的交易会产生 3 笔费用。
- **跨费用规则计算平均值**(例如"卡方案对一笔 V 欧元的交易平均收取的费用"):单个费用 `ID` 始终具有相同的 `fixed_amount` 和 `rate`,因此**首先按费用 `ID` 去重**,然后对不同的规则计算平均值。不要对重复的行进行平均。
- 对于抽象的"对于一笔 V 欧元的交易价值"问题,不存在真实的交易,因此将字面值 V 代入公式:`fixed_amount + rate / 10000.0 * V`。
请参阅 `sql-avg-fee` 和 `sql-total-fees-merchant` 查看可用的模板。
Guides 跟随你的数据,而非你的智能体工具链。无论你在 Claude、Codex 还是任何其他工具链之间切换,智能体只需要能访问 MotherDuck MCP 服务器,即可开始使用 Guides。
基准测试改进
我们在 DABStep(一个多步骤数据分析问题的公开基准测试)上对 Guides 进行了测试。为智能体提供 Guides 作为上下文,将其查询错误减少了约 99%(从 302 个降至 1 个),并将每次运行的成本降低了 55%。
有了 Guides,一个小型、快速的模型(Gemini 3 Flash)在 419 个保留问题中正确回答了 418 个,准确率约为 99.8%,每个问题成本约为两美分。其设置很简单:一个紧凑的技能教会智能体知识存储在哪里,再加上一个上下文层 Guides,仅在每个问题需要时才加载。
除了准确性的明显提升外,成本差异也令人瞩目。每次运行成本降低 55%,意味着同样的预算大约可以购买两倍的 Token:用于更长的任务、更多的反馈轮次。使用 Guides 添加上下文带来的改进,远远大于简单地接入最新的前沿模型,更不用说使用更小、更快模型所节省的延迟预算了。
DABStep 基准测试中的 Guides:在简单、困难及全部问题集上,使用和不使用 Guides 的准确率对比
你可以在此处了解更多关于基准测试的信息并进行复现。
Guides 入门
与我们其他的智能体原生工具(Flights、Dives)一样,Guides 将 MotherDuck MCP 服务器设计为创建、更新和管理的一流接口。你可以使用 Claude、Codex 和 Cursor 等 MCP 客户端与 Guides 交互;MCP 服务器将默认使用它们。
通过 Guides 提升智能体性能的最快方法是引导启动(bootstrap):将你业务中的上下文提炼成一组基础的 Guides。此资源提供了一个框架,用于将初始上下文体系塑造成有用的 Guides。只需连接你启用 MCP 的智能体,并将其指向文档页面即可开始。
你也可以通过内置的 SQL 函数(例如 MD_CREATE_GUIDE())管理 Guides。这可以通过 git 实现源码控制,如我们在此示例中所述。在 GitHub 仓库中管理上下文,然后在 CI 中使用 SQL 函数执行更改。
祝你使用Guides愉快!