ব্লগে ফিরে যান

淘宝百亿补贴数据分析助手 Agent:让自然语言查询先经过业务语义层

开发工具2026-09-1910 মিনিট পড়ুনAgent数据分析Text-to-SQL多Agent数据血缘Python沙箱GPT88

自然语言转 SQL 最容易被低估的部分,不是 SQL 语法,而是业务语义。用户说“百亿补贴商品销量”“补贴效果”“转化率”时,Agent 必须知道指标口径、时间范围、商品粒度、数据权限和表之间的血缘关系。只把问题翻译成一条能执行的 SQL,并不能证明结果正确。

本文根据大淘宝技术《淘宝百亿补贴数据分析助手 Agent 实战》的公开摘要整理。摘要披露的关键路径是:在自然语言与 SQL 之间增加业务语义层,通过多 Agent 编排、知识检索、执行校验、血缘溯源和 Python 沙箱串联取数、分析与归因。案例查询耗时由 30—120 秒缩短至 3—10 秒,这属于原文项目数据,不应直接当作所有数据 Agent 的性能保证。

一、为什么要在自然语言和 SQL 之间加一层

直接 Text-to-SQL 的链路通常是:

用户问题 → LLM → SQL → 数据库 → 结果

问题在于 LLM 看到的是字段名,而用户表达的是业务概念。中间缺少语义层时,模型可能:

  • 选错时间字段或统计粒度;
  • 把支付金额、下单金额和 GMV 混为一谈;
  • 把实验桶与全量数据混合;
  • 忽略数据延迟、权限和口径版本;
  • 生成可以执行但业务含义错误的 SQL。

更可靠的链路是:

自然语言
  → 意图与指标识别
  → 业务语义层
  → 表、字段、口径和血缘检索
  → SQL 生成
  → 静态校验与执行校验
  → 结果分析与归因

二、业务语义层应该维护什么

语义层不是一张简单的字段别名表,至少应包含:

内容示例
指标定义GMV、支付买家数、补贴金额、ROI
统计粒度商品、店铺、类目、用户、实验桶
时间口径下单日、支付日、自然日、活动周期
过滤规则有效订单、退款剔除、实验流量范围
数据来源事实表、维表、汇总表和更新时间
权限边界可访问字段、脱敏字段、租户范围
版本信息口径生效时间和变更记录

Agent 先把用户问题映射成一个结构化查询意图,再基于这个意图生成 SQL,能够把“业务理解错误”和“SQL 编写错误”分开诊断。

三、多 Agent 如何分工

一个可控的职责拆分可以是:

  1. 意图 Agent:识别指标、维度、时间范围和比较目标。
  2. 语义检索 Agent:检索指标口径、字段说明、样例查询和血缘。
  3. SQL Agent:生成候选 SQL,并说明每个关键字段的选择依据。
  4. 校验 Agent:检查权限、字段、类型、时间范围、Join、成本和空结果。
  5. 分析 Agent:对查询结果做统计、趋势、异常和分组分析。
  6. 归因 Agent:在证据充分时提出可能原因,并区分事实、推断和待验证假设。

多 Agent 不是越多越好。每个 Agent 都会增加延迟、调用成本和状态管理复杂度。适合拆分的是责任边界清晰、可以独立验证的步骤。

四、SQL 执行前后的两类校验

执行前需要做确定性检查:

  • SQL 是否只读;
  • 是否访问越权字段;
  • 是否缺少时间过滤;
  • Join 是否可能产生笛卡尔积;
  • 是否超过扫描量或运行时间限制;
  • 指标字段是否符合当前口径。

执行后需要检查:

  • 是否为空或异常放大;
  • 结果粒度是否符合用户问题;
  • 总量与已知基线是否相差过大;
  • 是否需要进一步用 Python 做统计;
  • 结论是否有可回溯的 SQL、数据版本和时间戳。

五、Python 沙箱的价值与边界

SQL 适合取数和聚合,Python 更适合做相关性、分布、趋势、异常检测和可视化。把 Python 放在隔离沙箱中,可以让 Agent 对查询结果做二次分析,但必须限制:

  • 只能读取当前任务已经授权的数据;
  • 禁止网络访问、文件系统越权和密钥读取;
  • 限制 CPU、内存、执行时长和输出大小;
  • 记录代码、输入摘要、依赖和输出;
  • 结果需要引用原始查询和数据版本。

六、性能提升不能只看总耗时

原文摘要提到查询耗时由 30—120 秒缩短至 3—10 秒。要判断这类优化能否复用,应进一步拆分:语义检索、模型调用、SQL 执行、结果分析和网络传输各自耗时多少。常见优化包括语义缓存、查询模板、并行检索、结果缓存、轻重模型分工和异步分析,但每一项都要用相同数据集和相同口径复测。

七、上线前检查清单

  • 指标、字段、维度和时间口径有唯一事实源。
  • SQL 生成与执行权限分离。
  • 查询前有只读、成本、权限和时间范围校验。
  • 查询结果带数据版本、更新时间和 SQL 记录。
  • Python 分析运行在有资源限制的沙箱中。
  • 归因结论区分事实、推断和待验证假设。
  • 结果质量使用空结果、异常值和基线校验。
  • 延迟、失败率、错误类型和用户修正被持续记录。

来源与边界

原文:大淘宝技术|淘宝百亿补贴数据分析助手 Agent 实战。本文依据奇舞周刊第 597 期中的公开摘要整理,未取得原文全文和原文配图,因此未虚构源码、接口或架构图;项目耗时数据属于来源文章案例。