Research Paper · May 2026

Data Context Layer:验证业务上下文注入对 Text-to-SQL 的因果效应

Max & 安吉拉斯(Hermes Agent)

Abstract

企业级 Text-to-SQL 的核心挑战不是"模型不会写 SQL",而是模型不知道数据的业务含义。我们通过 5 个 Context Level(A→B→C→D→H)、26 条查询、DeepSeek V4 Flash 的受控实验,测量了业务上下文注入的边际收益。核心发现:精准的业务规则注入使准确率从 30.8% 飙升至 65.4%(+34.6pp),结构化 Schema Graph 再推至 76.9%(+46.1pp 总提升)。同时证明:手工构建的图结构上下文已达到当前模型的能力边界——推理增强(Level H)未能超越它。

30.8%
Level A 基线
仅表结构
65.4%
Level C 规则注入
+34.6pp vs 基线
76.9%
Level D/H 最优
+46.1pp vs 基线
5
实验层级
A/B/C/D/H

1. 研究动机

当你对 AI Agent 说"上个季度收入增长了多少",它面对的真正挑战不是写 SQL——而是理解:

这些部落知识(Tribal Knowledge)从未被写进数据仓库,只存在于业务团队的集体记忆里。我们的实验目标是量化:把这些上下文喂给模型,到底能提升多少 SQL 准确率?以及,怎么喂最有效?

H₁(核心假设):向 Agent 注入精准业务上下文后,SQL 正确率显著高于仅提供表结构的基线。

2. 实验设计

五个 Context Level

每个 Level 在上一级基础上递增上下文量,形成严格的因果链:

A:Schema Only

5 张表的 DDL

~1,000 chars

B:+ Business Defs

列含义 & 取值说明

+1,100 chars

C:+ Filtered NL Rules

查询相关的业务规则

按 depends_on 筛选注入

D:Schema Graph

图结构的列→规则映射

视觉化表关联

H:D + Inferred

从规则推导的隐性知识

推理增强

数据集 & 规则

基于 dbt jaffle_shop 生成合成数据(200 客户、1,000 订单、5 张表)。Faker + seed=42 保证可复现。数据中刻意构造了真实世界的脏数据(channel NULL 值、部分退款记录缺失等),确保每条规则都有对应的数据场景。

Rule-3: Net Revenue
Net = SUM(success) − SUM(refunded)
需 JOIN raw_payments(不是直接用 raw_orders.amount)
Rule-4: Fiscal Quarter
Q1 = Feb–Apr, Q2 = May–Jul
非自然季——90% 的查询涉及
Rule-5: Churn vs Dormant
Dormant = 1 季度无订单
Churned = 连续 2 季度零订单
Rule-6: Channel NULL
2025-03 前 ~5% channel 为 NULL
渠道查询需 IS NOT NULL
Rule-7: Refund Independent
退款独立查询,不需 JOIN 找原始记录
某些退款缺少原始支付记录
Rule-8: MAU Definition
MAU = DISTINCT user_id
WHERE status IN ('completed','shipped')
Rule-9: ARPU
ARPU = Net Revenue / 活跃用户数
分母排除 cancelled 订单
Rule-11: Return Rate
退货率 = COUNT(returned) / COUNT(all)
用 raw_orders.status,非 payments

26 条测试查询

分类数量示例
rule_dependent16"2026 Q1 净收入 vs 2025 Q1 增长?" — 需要 Rule-3 + Rule-4
control7"库存低于 5 件的产品有哪些?" — 纯 SQL,不需规则
ambiguous3"客单价(AOV)是多少?" — 可用不同公式,测规则是否引导正确路径

评测方法

硬指标(Hard Metric):模型生成的 SQL 执行结果与 Ground Truth 逐行逐列精确比较。我们实现了多层容差匹配:

所有评测规则均为客观、可复现的算法,不依赖人工判断,消除了假阴性(false negative)对结论的干扰。

3. 结果

主结果表

Level方法准确率Δ 前级Δ 基线结论
A Schema Only 30.8% 裸跑基线
B + Business Definitions 42.3% +11.5pp +11.5pp 列含义有帮助但有限
C + Filtered NL Rules 65.4% +23.1pp +34.6pp 🔥 规则注入是最大跳跃
D Schema Graph + Rules 76.9% +11.5pp +46.1pp 🏆 图结构是最优形态
H D + Inferred Knowledge 76.9% 0 +46.1pp = D:推理增强未超越手工结构

可视化:边际增益

Level A
30.8%
Level B
42.3%
Level C
65.4%
Level D
76.9%
Level H
76.9%

按难度分类

难度Level ALevel BLevel CLevel DLevel H
Easy (8)37.5%62.5%75.0%75.0%75.0%
Medium (13)23.1%30.8%53.8%76.9%76.9%
Hard (5)40.0%60.0%80.0%80.0%80.0%

最显著改进在 medium 难度:23.1% → 76.9%(+53.8pp)——这些查询最需要业务规则来消除歧义。

D vs H:逐题对比

状态查询说明
Both ✅18 题D 和 H 均正确
H✅ D❌Q1, Q9推理增强修复了 2 道题
H❌ D✅Q2, Q18但推理也引入了 2 道新错误
Both ❌Q12, Q16, Q213 道顽固错误,超出当前方法能力

D 和 H 净效果完全相同——推理增强的收益(+2)被引入的噪音(-2)完全抵消。结论:手工构建的结构化上下文已达到当前模型的能力天花板。

4. 关键发现

Finding 1:业务上下文是 Text-to-SQL 的第一性要素。
从 A(裸 Schema,30.8%)到 C(注入规则,65.4%),准确率翻了一倍多。仅仅让模型"知道收入是 Net Revenue"、 "知道财季从 2 月开始",就能解决一半以上的错误。模型不缺 SQL 能力——缺的是"数据是什么意思"。
Finding 2:上下文的结构比数量更重要。
Level C 和 Level D 给模型的是同样的规则内容,区别只在于排列方式:C 是扁平列表,D 是图结构的列→规则映射。这 11.5pp 的差距证明:同样信息,结构化呈现使模型能更准确地定位和应用规则。这对 Agent 架构设计有直接启示——MCP context 的组织方式可能比 context 的内容更重要。
Finding 3:手工结构化已达天花板,推理增强不是银弹。
Level H 在 D 的基础上注入了从规则推导出的深层知识(列权威性、时间锚定、常见陷阱等),但最终准确率与 D 完全相同。推理增强修复了 2 道题,但也引入了 2 道新错误——净收益为零。自动推理的"噪音成本"恰好抵消了其"洞察收益"。

5. 方法论说明

为什么是 5 个 Level?

我们刻意设计了 A→B→C→D→H 的因果链,每个 Level 只增加一种新元素:

假阴性消除

我们投入了大量精力确保评测体系不会"冤枉"模型:

模型方差控制

DeepSeek V4 Flash 存在显著方差——同一 prompt 两次运行可能得到不同 SQL。我们通过以下方式控制:

6. 局限与展望

已知局限

对 Agent 架构的启示

这项实验的结果直接关联到 a16z 最近提出的 "Your Data Agents Need Context" 论点。我们的量化证据表明:Context Layer 的设计——不仅是"有什么上下文",更是"上下文怎么组织"——是决定 Agent 表现的第一性因素。

如果你在构建数据 Agent 或 Context Layer,欢迎交流。