AAAI 2026 · Text-to-SQL · Schema Linking

AutoLink:让智能问询自己找字段

这篇论文把 schema linking 从“一次性把全库 schema 塞给 LLM”改造成“agent 逐步探索、检索、验证、扩展字段”的过程。对 skill + MCP 连接数据库的智能问询系统,参考价值非常直接。

论文:AutoLink 场景:大规模数据库 Text-to-SQL 核心:schema exploration + vector search + verification 代码:github.com/wzy416/AutoLink
One sentence

AutoLink 的关键不是写 SQL,而是先把“该用哪些字段”找全。

在真实业务库里,表和列可能非常多。把所有 schema 都交给 LLM 会带来两个问题:上下文太长,以及无关字段太多。AutoLink 的做法是:先给模型少量候选字段和全表名,再让模型像数据库工程师一样,通过检索、探查、试跑 SQL 来逐步补齐必要 schema。

97.4%
Bird-Dev strict schema linking recall

论文报告 AutoLink 在 Bird-Dev 上达到 97.4% SRR,同时 SQL 执行准确率为 68.71%。

91.2%
Spider 2.0-Lite strict recall

Spider 2.0-Lite 更接近企业级数据库,平均列数超过 800,AutoLink 在这里的优势尤其明显。

21.2K
Spider 2.0-Lite schema linking avg tokens

相比部分 full-schema 方法动辄 160K+ tokens,AutoLink 通过迭代扩展显著降低上下文成本。

Motivation

传统 schema linking 在大库里容易卡在三个地方。

上下文限制

数据库级方法常把完整 schema 和问题一起塞进 LLM。小库可行,大库会触发上下文窗口、费用和噪声问题。

逐字段打分太贵

element-level 方法会对每个 table/column 打分,复杂度接近 \(O(|S|)\)。schema 越大,延迟和成本越难控。

召回和噪声冲突

为了不漏字段,检索器通常返回很多候选;候选越多,SQL 生成阶段又越容易被无关字段干扰。

$$S_{linked} \subset S_{full}$$

AutoLink 的目标不是压到最少字段,而是在 token 可控的前提下,尽量保证 \(S_{linked}\) 包含回答问题所需的所有 gold schema elements。

Method

它把字段识别变成了一个 agent 的多轮决策问题。

AutoLink 不要求 agent 看到完整列清单。它只暴露两个外部环境:真实数据库环境 \(E_{DB}\) 和 schema vector store 环境 \(E_{VS}\)。模型每轮输出 reasoning trace 和 actions,环境执行后返回 observation,直到模型认为 schema 足够完整。

1

初始检索

用原始问题从向量库取 top-n 字段,形成初始 \(S_{linked}^{(0)}\)。

2

表名上下文

给 agent 全部表名,但不给全部字段,降低上下文噪声。

3

语义检索

当发现缺字段时,用更具体的自然语言查询调用 vector store。

4

SQL 探查

通过小 SQL 查元数据、样例值、外键或字段名模式。

5

验证停止

尝试 draft SQL,如果能执行且 schema 充分,就结束。

AutoLink framework overview
论文 Figure 1:AutoLink 的整体流程,核心是 agent 在 Database Env 与 Vector Store Env 之间循环交互。
Action space

五个动作,刚好可以映射成 MCP tools。

动作 是否有环境反馈 论文里的作用 在你的项目里可以怎么落地
@explore_schema 执行探索型 SQL,查字段、元数据、样例值、主外键,不直接回答问题。 MCP tool:只允许白名单 SQL,如 information_schema、PRAGMA、LIMIT sample。
@retrieve_schema 用自然语言概念从 schema vector store 检索缺失字段。 MCP tool:输入 query、top_k、exclude_columns,返回 table/column/type/comment/sample。
@verify_schema 尝试执行一条 draft SQL,判断当前 schema 是否足够。 MCP tool:dry-run 或 LIMIT 5 执行,返回错误、空结果、列不存在、类型问题。
@add_schema 把新发现的字段显式加入 \(S_{linked}\)。 内部状态更新:维护 confirmed fields、candidate fields、reason。
@stop_action schema 足够完整或达到最大轮数时终止。 终止条件:字段覆盖、SQL 可执行、预算上限、风险检查通过。
$$S_{linked} \leftarrow S_{linked} \cup S_{added}$$

这一步很适合做成结构化状态,而不是让模型在上下文里“隐式记住”。

{
  "question": "列出 2024 年销售额最高的客户及所属区域",
  "linked_schema": [
    {"table": "orders", "column": "order_date", "reason": "时间过滤"},
    {"table": "orders", "column": "amount", "reason": "销售额指标"},
    {"table": "customers", "column": "customer_name", "reason": "输出字段"},
    {"table": "regions", "column": "region_name", "reason": "维度字段"}
  ],
  "next_action": {
    "tool": "verify_schema",
    "args": {"draft_sql": "SELECT ... LIMIT 5"}
  }
}
Experiments

实验重点:大 schema 下,AutoLink 召回掉得更慢。

论文在 Bird-Dev 和 Spider 2.0-Lite 上评估。Bird-Dev 平均每库约 80 列;Spider 2.0-Lite 来自更真实的企业级场景,平均超过 800 列,包含 BigQuery、Snowflake、SQLite 多方言。

方法 Bird SRR Bird Avg Columns Bird Avg Tokens Spider SRR all Spider Avg Columns Spider Avg Tokens
DE-SL (BGE-Large)35.535.7-43.6153.8-
CE-SL (BGE-reranker)72.435.7-57.6153.8-
MCS-SQL85.77.529.8K58.945.1168.9K
SQL-to-Schema92.513.519.4K64.049.0171.9K
RSL-SQL93.313.014.8K52.025.829.2K
LinkAlign---36.421.166.7K
AutoLink97.435.88.0K91.2159.421.2K

SQL 执行准确率

Spider 2.0-Lite 上,AutoLink + DeepSeek-R1 达到 34.92% EX,接近 ReFoRCE + GPT-o3 的 37.84%,但平均 token 约 38.0K,明显少于 ReFoRCE 的 81.1K。

消融实验

去掉 @retrieve_schema 的影响最大;去掉 @explore_schema 和 @verify_schema 也会降低 SRR。这说明它的优势来自“检索 + 探索 + 验证”的组合,而不是单个提示词技巧。

Schema linking result table from paper
论文 Table 1:Schema linking 对比结果。上方 HTML 表格已摘取关键列,图片保留原表上下文。
Execution accuracy and ablation result tables from paper
论文 Table 2/3/4:SQL 执行准确率与 action ablation。
Scalability and hyperparameter analysis figures from paper
论文 Figure 2/3:不同数据库规模与不同 initial top-n 下的 SRR、token 和 EX 变化。
For your project

把 AutoLink 改造成 skill + MCP 系统,可以用三层状态。

Query Understanding

把用户问题拆成指标、维度、过滤、时间、排序、输出格式。这里不直接写 SQL,而是形成候选查询意图。

Schema Grounding

调用 schema 检索、数据库探查、join path 检查,把自然语言概念落到 table.column。

Execution Planning

确认字段足够后,再生成 SQL 或 MCP 查询行为,并通过 dry-run / LIMIT query 做最后验证。

recommended MCP tools:
- retrieve_schema(query, top_k, exclude_columns)
- explore_schema(sql_probe)
- inspect_table(table_name)
- sample_column(table, column, limit)
- verify_query(draft_sql, mode="dry_run|limit")
- commit_schema(table_columns, reasons)
对工程落地来说,AutoLink 最值得借鉴的是“让模型决定下一步查什么”,但真实系统里必须给 MCP tool 加权限、SQL 白名单、超时、行数限制和审计日志。否则探索型 agent 很容易把数据库问得太宽。
Reviewer-style critique

这篇论文强在工程形态,但还有几个要留心的边界。

优点

问题定义贴近真实数据库:不是追求“字段越少越好”,而是追求高 strict recall 与可控 token。action space 清晰,天然适合 tool calling / MCP。

风险

它依赖 schema 向量库质量、字段描述和样例值。企业库如果字段名缩写严重、注释缺失、权限受限,retrieval 和 exploration 都会变难。

实验局限

SQL generation 不是本文核心,后处理使用了 self-consistency、syntactic correction 和 voting。你落地时要单独评估 SQL 生成器和 schema linker 的贡献。

可扩展点

可以把 \(S_{linked}\) 扩展成 typed IR:字段、指标、维度、过滤、join path、权限标签、置信度、验证记录。这样更适合智能问询产品。

本页面基于: Wang et al., “AutoLink: Autonomous Schema Exploration and Expansion for Scalable Schema Linking in Text-to-SQL at Scale,” AAAI 2026.

本地 PDF:AutoLink_AAAI2026.pdf · 官方下载页:AAAI OpenReview/OJS 页面 · 代码仓库:github.com/wzy416/AutoLink

说明:MathJax 公式渲染依赖 CDN;离线打开时正文和图片正常显示,公式可能退化为原始 LaTeX。