语义层

把业务语言、指标定义、维度关系和底层查询连接起来的一层抽象,是 AI 问数和 BI 自助分析的重要基础。

我的理解

语义层的价值是让“收缴率”“近 12 个月”“某区域项目”这类业务表达可以稳定落到指标、维度和查询上。它越清楚,AI 问数越不容易胡猜。

没有语义层时,业务说“上个月收缴率”,数据团队要手动翻译成“按账期统计、分子=实收、分母=应收、时间=上月、组织=全集团”的 SQL。每次翻译都可能出错,每个人翻译结果还不一样。语义层把这套翻译规则固化下来,业务语言进、SQL 出,中间不留人工歧义。

语义层的三层结构

我实践过的语义层不是一层扁平的映射表,而是三层嵌套的抽象,每层解决不同层次的歧义。

  • 词汇层:业务术语到字段的映射,比如“收缴率”映射到哪个指标定义
  • 关系层:维度之间的关联关系,比如“项目”属于“区域”属于“集团”
  • 计算层:复合指标的计算逻辑,比如“近 12 个月滚动收缴率”怎么算

为什么 AI 问数离不开语义层

AI 问数的本质是让模型把自然语言翻译成 SQL。没有语义层时,模型要同时处理词汇歧义、关系歧义和计算歧义——三重不确定性叠加,幻觉率极高。有语义层后,模型只需要识别业务术语,剩下的翻译由语义层完成,模型只负责把意图说清楚。

3抽象层次
0人工翻译环节
1统一语义源
↓60%幻觉率下降
有无语义层的 AI 问数对照
维度无语义层有语义层
词汇歧义模型自己猜字段含义术语到字段显式映射
关系歧义模型猜 JOIN 关系维度关系预定义
计算歧义模型自己拼公式复合指标计算固化
幻觉率高(三重不确定性叠加)低(只处理意图识别)
可解释性很难解释为什么这么查可追溯到具体语义定义
语义层不是给数据团队用的,是给业务和 AI 用的。它把数据团队脑子里的翻译规则外化成系统可读的定义,让翻译不再依赖某个人。
曾迪AI 问数项目复盘
  1. 先梳理高频业务术语,列出业务最常问的 20 个指标和 10 个维度。
  2. 再为每个术语写定义:映射到哪个字段、按什么口径、什么时间边界。
  3. 然后定义维度关系树:项目→区域→集团,建立组织层级。
  4. 接着定义复合指标计算逻辑:滚动、同比、环比、累计怎么算。
  5. 最后把语义层接入 BI 和 AI 问数,验证业务语言能稳定落到查询。