语义包管理与应用

更新时间:
复制 MD 格式

语义包用于应对 AI Query 在没有业务上下文时仅能依赖表结构猜测语义的问题。通过将真实历史 SQL 中沉淀的术语、指标、关联、验证查询等业务知识编目为语义包,AI Query 能够基于统一口径回答业务问题,生成的 SQL 准确率显著提升。

功能概述

语义包(Semantic Pack)是一组描述数据资产业务含义的结构化文件。客户端从 MaxCompute 历史 SQL 中挖掘业务事实,经 LLM 增强后生成术语、实体、指标、关联等定义,编译为运行时索引供 AI Query 在生成 SQL 时参考。

每个语义包隶属于一个语义域(domain)。语义域是语义包的逻辑隔离单元,对应一个独立的文件目录,包含该领域的全部语义资产。可以为不同业务线或数据主题创建不同的域。

semantic-pack-guide-zh

适用场景

  • 提升 AI 问数准确率:在对话中绑定语义包后,AI 在规划 SQL 时能看到术语定义、指标口径、表间关联等知识,减少字段误用和口径偏差。

  • 沉淀团队分析经验:把反复出现的维度命名、指标计算公式、常用 JOIN 条件固化下来,新成员无需重新探索。

  • 验证 SQL 正确性:验证查询是经过人工确认的标准 SQL,AI 生成结果时可参照已有模式,降低幻觉。

功能索引

功能类别

功能项

创建与构建

从历史 SQL 挖掘构建、手动创建空域、dbt 导入、增量添加表

组件编辑

术语、实体、指标、关联、验证查询、分析剧本的增删改

编译与发布

编译为运行时索引、自动/手动编译、编译报告

可视化

语义关系图谱(实体/指标/术语/关联的拓扑视图)

AI Query 应用

绑定语义包到会话、AI 自动引用语义知识生成 SQL

AI 辅助构建

在 AI Query 对话中让 AI 创建/编辑/绑定语义包

前提条件

  • 已创建并成功连接一个 MaxCompute 数据源,且已选定项目。

  • 若使用「从历史 SQL 挖掘构建」功能,该项目需有一定量的历史查询记录(建议至少 7 天)。

快速入门

以下步骤从历史 SQL 构建一个语义包,并在 AI Query 中使用。

  1. 在侧边栏语义包分区,单击 +(新语义包)。

  2. 填写包名和描述,选择 1~3 张种子表,选择挖掘窗口(7 天或 14 天),单击开始构建

  3. 等待挖掘完成(耗时取决于历史 SQL 量),客户端右侧栏展示构建进度。挖掘结束后弹出确认步骤:核对相关表和候选关联,单击确认并继续

  4. 草稿生成完成后,选择是否启动 LLM 增强(补充描述与同义词),单击开始增强

  5. 增强完成后进入审核,确认内容无误后单击发布。语义包自动编译进入运行时索引。

  6. 在 AI Query 对话中提问,AI 会自动绑定已发布的语义包并参考其中的术语与指标口径生成 SQL。

语义包的组成

一个语义包包含以下组件:

组件

文件

作用

包元数据

pack.json

域名称、描述、关键词、默认表、默认指标与维度

术语

terms.json

业务术语的中英文同义词与描述,帮助 AI 理解用户自然语言中的业务词汇

实体

entities.json

数据实体(对应表),定义主键、描述、字段含义与接口

指标

metrics.json

业务指标的计算表达式、聚合方式、相关维度与同义词

关联

joins.json

表与表之间的 JOIN 条件与连接类型

验证查询

verified-queries.json

经人工确认的标准 SQL,供 AI 参照模式

分析剧本

playbooks.json

常见分析场景的步骤描述、所需表与首选指标

构建语义包

从历史 SQL 挖掘构建(推荐)

适用于项目已积累一定量历史查询的场景。构建过程分 5 个阶段:

准备 → 挖掘 → 草稿 → 增强 → 审核发布

  1. 准备:填写包名、域 ID(留空自动生成)、描述,选择种子表与挖掘窗口天数(2 / 7 / 14 天)。

  2. 挖掘:从 MaxCompute 历史 SQL 中扫描与种子表相关的查询,提取 JOIN 候选、指标候选和共现统计。挖掘完成后进入等待确认状态,用户核对相关表清单和候选关联。

  3. 草稿:基于确认后的表元数据与采样数据,生成术语、实体、指标、关联、验证查询等 8 类语义资产。

  4. 增强:LLM 在保留挖掘证据的前提下,补充描述、同义词、业务说明。用户可选择增强范围(全部或指定组件)。

  5. 审核发布:用户审核全部内容,确认后发布到运行时索引。

每个阶段执行完毕后,构建任务进入等待状态,需要用户确认后才继续下一阶段。构建进度在右侧栏的构建视图中实时显示。

说明

构建是后台任务,可以切换到其他页面继续工作,回来后进度不丢失。

手动创建空域

在 AI Query 对话中告诉 AI「创建一个名为 xxx 的空语义包」,AI 会调用后端 API 创建一个空的语义域,随后可在编辑界面逐项添加术语、实体、指标等组件。适合已有明确语义定义、无需从历史 SQL 挖掘的场景。

从 dbt 工程导入

在 dbt 面板中单击导入语义包,可将 dbt 工程中的 semantic models 和 metrics 转换为语义包。详情参见dbt 与 MaxCompute 生态集成

增量添加表

对已有语义包,可通过添加表操作追加新表。客户端读取该表的元数据和采样数据,为其生成实体定义、字段描述和关联候选。

编辑语义包

在侧边栏单击已有语义包打开编辑标签页。标签页内有两个子视图:

包管理器

以列表形式展示各组件(术语、实体、指标、关联、验证查询、分析剧本),支持:

  • 添加条目:为任意组件添加新条目,填写对应字段。

  • 编辑条目:修改已有条目的名称、描述、表达式、同义词等。

  • 删除条目:删除不再需要的条目。

  • 单组件增强:对指定组件调用 LLM 补充描述与同义词,不影响其他组件。

修改后需重新编译才能让 AI Query 使用最新内容。

语义关系图谱

以可视化方式展示包内各元素的关系:实体、指标、术语之间的引用与关联拓扑。便于从全局视角理解语义包的覆盖范围与结构完整性。

编译与发布

编译将语义包的各组件文件合并为一份运行时索引(index.json),供 AI Query 加载使用。

触发编译

  • 保存时自动编译:在编辑标签页中保存修改时自动触发该域的编译。

  • 发布时编译:构建任务的审核发布阶段自动触发。

  • 删除后重编译:删除某个域后,客户端异步重编译剩余域。

  • AI 调用编译:在 AI Query 中说「编译 xxx 域」,AI 会调用编译动作。

编译结果

编译成功后,运行时索引即刻生效,下一轮 AI Query 对话即可使用。若编译发现问题(如字段引用不存在的表),会生成验证报告供用户排查。

侧边栏的语义包列表会区分两个分区:

  • 已发布:编译通过、可正常使用的语义包。

  • 异常/未编译:尚未编译或编译失败的语义包,需要处理后才能被 AI Query 引用。

在 AI Query 中使用语义包

显式绑定

AI Query 不会自动加载所有已编译的语义包。需要在对话中告诉 AI「使用 xxx 语义包」或「绑定 xxx 域」,AI 会调用绑定动作将指定域加入当前会话的语义上下文。绑定是会话级概念,仅影响当前对话。

绑定后,同一会话内的后续提问都会参考该语义包,无需每轮重复绑定。

AI 如何使用语义包

绑定后,AI 在每轮规划与执行时获得以下增强:

  • 表结构预注入:语义包中定义的实体对应的表结构预加载到上下文,AI 无需额外查询元数据。

  • 术语理解:用户说「客单价」,AI 通过术语同义词映射到对应的计算表达式。

  • 指标口径:AI 生成聚合 SQL 时参考指标定义中的 expression 和 aggregationType,保证口径一致。

  • 关联路径:多表查询时,AI 参考 joins 定义选择正确的 JOIN 条件,减少笛卡尔积风险。

  • 验证查询参照:生成的 SQL 结构可参照验证查询中的已知模式,降低错误率。

用 AI 构建与管理语义包

在 AI Query 对话中,可以直接用自然语言让 AI 操作语义包。AI 支持以下动作:

  • 查看:「列出所有语义包」「查看 sales 域的指标」。

  • 绑定:「使用 ecommerce 语义包回答接下来的问题」。

  • 构建:「为 sales_order 表创建一个新的语义包」——AI 会发起构建任务,右侧栏出现构建进度视图。

  • 编辑:「给 sales 域添加一个指标:日均订单量 = COUNT(order_id) / DATEDIFF(...)」。

  • 编译:「编译 sales 域」。

构建任务的每个决策点(确认表清单、是否增强、审核发布)都会暂停等待用户确认,AI 无法自行跳过。

删除语义包

在侧边栏语义包列表中选择目标域,单击删除。确认对话框中单击确认删除后,域目录被移除,客户端异步重编译剩余域的运行时索引。

重要

删除操作不可撤销。若 AI Query 对话中正在使用该域,删除后当前会话的语义增强会立即失效。