企业级语义层的五层能力模型:从指标语义到动作语义的工程实践——亿问 Data Agent 的架构选择
指标语义层撑不住 Data Agent——本文从工程视角拆解企业级语义层的五层能力模型(指标→对象→事件→规则→动作),解析 NL2LF2SQL 架构如何通过 SemanticDB 将业务意图与 SQL 生成解耦,从机制上杜绝幻觉。
亿问 Data Agent 是一款面向企业经营分析场景的私有化数据分析 Agent,通过自研的NL2LF2SQL引擎(Alisa)杜绝幻觉,帮助业务分析师高效产出可信结论,让管理层随时获得经营洞察并支撑决策。
过去很多企业做 AI 数据应用,讨论的重点还停留在模型、Prompt、NL2SQL、报表生成、BI 对话框。现在大家开始认真讨论:企业业务世界到底应该怎样被建模,AI 才能真正理解、分析、解释,甚至进入经营动作。
但我们也想坦率讲一个判断:
如果我们把语义层只定义成指标、维度和统计分析对象,这个定义不是错,而是太窄。
它更像是 BI 时代、指标分析时代的语义层定义。
它能够解释很多问数、看板、自助分析场景,但不足以解释 Data Agent 时代真正需要的语义基础。
问题不在于要不要用"本体论"这个词,也不在于谁的概念更大。
真正的问题是:
我们的答案是:不是。
一、指标语义层有价值,但它不是语义层的全部
先说清楚,我并不认为指标语义层过时了。
恰恰相反,指标语义层非常重要。
没有统一指标口径,没有维度定义,没有时间粒度,没有汇总规则,没有权限边界,企业的数据分析一定会混乱。
比如:
- GMV 到底含不含退款?
- 活跃用户按登录算,还是按有效行为算?
- 同比环比的时间窗口怎么取?
- 不同区域、不同业务线能看到的数据边界是什么?
这些问题不解决,任何 ChatBI、NL2SQL、自动报表都站不住。
所以,指标语义层不是低级东西。它是企业数据治理和自助分析的基础工程。
但是,指标语义层解决的主要是:
- 这个数怎么算;
- 这个维度怎么切;
- 这个口径是否一致;
- 这个角色能不能看。
它天然更接近统计分析对象,而不是完整业务世界。
企业经营不是由一堆指标和维度构成的。指标是业务世界的投影,不是业务世界本身。
企业经营是由客户、门店、商品、订单、合同、线索、商机、库存、渠道、活动、组织、人员、流程、状态变化、业务事件、规则约束共同构成的。
如果语义层只停留在指标和维度层面,AI 确实可以更准确地回答"某个指标是多少"。
但当用户继续问:
- 为什么下降?
- 哪些客户导致下降?
- 这个异常和哪次活动有关?
- 接下来应该看哪里?
- 这件事该推给谁处理?
系统很快就会发现,仅靠指标定义不够了。
因为归因、解释和行动,依赖的不是单个指标,而是业务对象之间的关系、事件发生的顺序、状态变化的路径,以及规则约束下的可执行动作。
这就是今天讨论语义层时必须扩展的地方。
二、用 BI 时代的尺子,量不出 Data Agent 的语义层
过去 BI 系统的核心用户是人。
系统提供报表、看板、字段、指标、维度,人负责理解上下文,负责把数字和业务联系起来,负责判断这个波动是不是异常,负责决定下一步看什么。
也就是说,传统 BI 时代有一个隐含前提:
-
人知道"这个门店本月销售下降"可能和装修、天气、促销、缺货、竞品开店、人员变动有关。
-
人知道"新客转化率下降"要去看投放渠道、线索质量、销售跟进、首单优惠、价格策略。
-
人知道"库存周转变慢"不只是库存指标问题,还可能涉及采购节奏、动销结构、供应商交期、区域调拨和滞销品处理。
在 BI 时代,系统只要把数据组织好,人可以把分析链条接上。
但 Data Agent 的核心变化在于:
AI 开始承担一部分原本由人完成的语义补齐和分析推理。
这时候,语义层就不能再只是给人看的指标字典,也不能只是给 SQL 生成器看的字段注释。
它要成为 Agent 理解业务世界的基础设施。
它需要告诉 Agent:
- 客户是什么,客户有哪些状态;
- 订单是什么,订单和客户、商品、渠道、门店是什么关系;
- 一次促销活动会影响哪些指标,影响路径是什么;
- 库存不足会通过什么业务事件传导到销售下降;
- 销售下降可能由哪些对象和事件共同造成;
- 哪些分析动作可以做,哪些动作不能做;
- 某个角色能看哪些数据,不能看哪些数据;
- 某个结论来自哪些数据、哪些规则、哪些计算路径。
这已经不是传统意义上的"指标语义层"能完整覆盖的范围。
所以,真正的分歧不在于语义层和本体论谁高级,而在于我们到底把语义层理解为一个静态的统计分析口径层,还是理解为企业业务世界进入 AI 系统的建模层。
前者服务的是更好的 BI。
后者服务的是可落地的 Data Agent。
三、实体建模不等于本体化建模
有一种说法看起来很完整:
"语义层可以通过实体建模和维度建模定义实体、属性和关联关系,再形成指标和维度,最终完成经营决策的数字化映射。"
这句话的问题在于,它把"实体"放进来了,但最后又把实体收束回了指标和维度。
实体在这里更像是统计分析中的主语,而不是业务运行中的对象。
比如"客户"。
作为维度时,客户用于切分收入、订单、复购、客单价。它回答的是:按客户类型、客户等级、客户区域看,指标有什么差异。
作为业务对象时,客户有生命周期,有触点,有状态,有行为事件,有关系网络,有风险信号,有可触达动作。它回答的是:这个客户为什么流失、下一步该如何挽回、谁负责跟进、跟进动作是否有效。
这两个层次完全不同。
"商品"也一样。
作为维度,商品用于分析销售额、毛利、库存、动销率。
作为业务对象,商品有上新、定价、促销、缺货、补货、滞销、替代关系、组合关系、供应商关系、区域适配性。
它不是一个切片字段,而是经营动作围绕的对象。
"门店"也是如此。
作为维度,门店用于看区域业绩和门店排名。
作为业务对象,门店有地理位置、客流结构、人员配置、库存状态、活动执行、周边竞争、经营周期和异常事件。
同样叫"实体",在指标语义层里,它常常是统计切片;在本体化语义层里,它是业务世界里的对象。
所以,仅仅说"语义层定义实体、属性和关联关系"还不够。
关键要看这些实体、属性和关系最终是被压扁成指标维度体系,还是被保留为 Agent 可理解、可推理、可追踪、可行动的业务世界模型。
如果最后所有东西都回到指标和维度,那它仍然是指标语义层。
如果实体、事件、状态、关系、规则、权限、动作共同构成 Agent 的业务理解基础,那它才进入了本体化语义层的讨论范围。
四、Data Agent 要的是业务世界模型,不是更厚的指标字典
为什么这个差别重要?
因为企业 AI 数据应用最容易失败的地方,不是 SQL 语法错,而是业务意义错。
- SQL 可以跑通,但回答的不是用户真正想问的问题。
- 指标可以算出来,但口径不符合当前业务场景。
- 报表可以生成,但解释链条经不起追问。
- 模型可以给建议,但不知道哪些动作在企业内部真的可执行。
这就是企业数据 AI 常见的"信任缺陷"。
这需要的语义能力,至少包括五个层次。
第一,指标语义。
也就是指标定义、维度口径、时间规则、聚合逻辑、筛选条件。这是问数的基础。
第二,对象语义。
也就是客户、商品、订单、门店、合同、线索、员工、渠道等业务对象,以及它们的属性、层级和关系。这是理解业务主语的基础。
第三,事件语义。
也就是下单、退款、访问、转化、流失、补货、调价、促销、拜访、审批、交付等业务事件,以及事件发生的时间、顺序、对象参与关系和状态变化。这是解释变化的基础。
第四,规则语义。
也就是业务定义、归因规则、异常判断、权限约束、组织边界、质量规则、审计要求。这是稳定输出和可信治理的基础。
第五,动作语义。
也就是系统可以触发什么流程、生成什么报告、调用什么 API、通知什么角色、打开什么页面、进入什么任务流。这是从分析走向行动的基础。
如果语义层只覆盖第一层,最多再覆盖一部分第二层,它当然能支撑很多 ChatBI 场景。
但它很难支撑完整 Data Agent。
因为 Data Agent 不是"指标问答机",而是要在业务世界里工作。
五、NL2SQL 的瓶颈,本质上也是语义层太薄
很多人讨论 NL2SQL 时,会把问题归因于大模型不够强、Prompt 不够好、样本不够多。
这些当然会影响效果。
但在真实企业环境里,更根本的问题是:自然语言和物理数据库之间缺少稳定的业务语义中间层。
用户问:
这句话里面包含很多隐含语义:
- "最近"是多近?
- "华东"按哪个组织口径?
- "大客户"按收入、等级、合同额还是客户分层?
- "复购"按订单、付款、履约还是有效交易?
- "下滑"与哪个基准比?
- "原因"要分析哪些可能路径?
- 是看客户结构,还是商品结构,还是渠道,还是销售跟进,还是库存和活动?
如果让模型直接从这句话跳到 SQL,它要同时完成意图理解、对象识别、指标匹配、时间归一、权限判断、表关系推断、SQL 生成、数据库方言适配。
任何一步错了,最后都可能得到一个"能运行但不可信"的答案。
所以更稳的路径,不是让模型直接猜 SQL,而是让模型先表达业务意图。
也就是:
自然语言 -> Alisa(自研语义模型引擎)-> LogicForm -> SQL / API / URL / 其他执行路径
自然语言进入系统后,先进行意图识别,明确用户到底在问什么对象、什么指标、什么时间、什么约束、什么分析动作。
然后由稳定的语义基础设施把自然语言拆解为 LogicForm,再由 LogicForm 翻译成 SQL、API、URL 或其他执行路径。
这就是 NL2LF2SQL 的意义。
NL2LF2SQL 的工程设计要点
LogicForm 不是一个中间 JSON 格式那么简单。它结合于语义理解引擎和语义数据库,把"业务意图表达"和"物理执行生成"分开。
模型负责理解问题,但不直接赌博式生成最终 SQL。
语义基础设施负责把已经结构化的意图映射到稳定的数据、规则、权限和执行路径上。
具体来说,LogicForm 的基础算子集合是固定的——查询、筛选、聚合、归因、对比、排序这些分析动作是通用的。但具体的语义槽位(对象、指标、时间、约束等)是由每个企业的 SemanticDB 语义模型动态定义的。可以理解为语法是通用的,词汇表是每家企业自己的。这样既保证了引擎的通用性,又能适配不同企业的业务差异。
这背后需要的,也不是薄薄的一层指标字典。从语义意图识别到生成 LogicForm 整个流程背后,是更完整的自研语义数据库 SemanticDB:
有对象;
有事件;
有关系;
有规则;
有权限;
有执行路径。
否则精准的语义理解和 LogicForm 生成也会变成一个概念空壳。
六、不要把"本体化语义层"理解成概念包装
有些人一听到"本体化语义层",会觉得这是把简单事情复杂化,是概念包装。
这种警惕是有必要的。
市场上确实存在很多把旧能力换个名字重新包装的情况。任何新概念都应该被追问:
到底多解决了什么问题?
有没有真实产品形态?
有没有可验证的工程路径?
能不能降低企业落地成本?
但不能因为有人滥用概念,就把概念本身的边界压窄。
"本体化语义层"真正要表达的,不是说企业必须立刻上一套庞大的本体系统,也不是说所有企业都要复制某些大型平台的复杂架构。
也就是说,语义层不再只是回答"这个数怎么算",还要回答:
这个数属于哪个业务对象?
这个对象处在什么状态?
这个状态是由哪些事件造成的?
这些事件之间有什么关系?
这个变化是否异常?
异常背后的可解释路径是什么?
系统接下来能做什么,不能做什么?
结论和动作如何被追溯、审计和复用?
如果一个系统能够围绕这些问题建立稳定模型,那么它即使不使用"本体"这个词,也已经在走本体化语义层的路线。
反过来,如果一个系统只是在指标和维度之上加一些描述、样例问法和 Prompt 规则,那么即使它用了再大的概念,也还没有真正进入这条路线。
所以,讨论不应该停留在"谁用了什么词"。
应该回到工程和产品问题:
这个语义系统到底能不能让 Agent 更稳定地理解业务、解释原因、追踪证据、生成报告、连接动作。
七、语义层不是越大越好,而是要和业务任务匹配
当然,本体化语义层也不应该被讲成一种一上来就必须全企业铺开的重工程。
这是另一个误区。
如果一个企业只是希望统一几个核心指标,让销售、运营、财务能在同一套口径下问数,那么指标语义层就足够重要,也足够有价值。
没有必要一开始就把所有业务对象、流程和动作都建成完整模型。
但如果目标是让 AI 进入经营分析会,承担持续分析、归因解释、异常预警、报告生成和任务推进,那么语义层就必须往更深处走。
这不是概念偏好,而是任务要求。
不同任务需要不同语义厚度:
- 看板,需要稳定指标和维度;
- ChatBI,需要指标口径、字段语义、查询约束和权限控制;
- 归因分析,需要对象关系、事件链路、时间窗口和分析路径;
- 经营报告,需要主题结构、证据引用、指标解释和结论追溯;
- 行动建议,需要业务规则、组织角色、流程接口和动作边界。
Data Agent 如果只停在前两层,就会变成一个更会聊天的 BI 入口。
它可以回答一些问题,但很难成为经营分析助手。
真正的路线应该是渐进式的:
这不是为了追求概念完整性,而是为了让 AI 的输出经得起业务追问。
八、语义层在 Agent 时代会成为运行时基础设施
过去语义层更像是数据消费层的一部分。
它夹在数据库和 BI 工具之间,帮助人用业务语言理解数据表、字段、指标、维度。
但在 Agent 时代,语义层的位置会发生变化。
它不只是给前端展示用,也不只是给 SQL 生成用,而会成为 Agent 运行时的一部分。
Agent 每次理解问题、拆解任务、选择工具、生成查询、解释结果、判断异常、调用动作,都要依赖语义层提供约束。
-
没有语义层,Agent 只能靠模型参数和 Prompt 猜。
-
有了指标语义层,Agent 可以更准确地查数。
-
有了本体化语义层,Agent 才有机会理解业务世界。
Prompt 可以组织流程,不能替代事实建模。大模型可以生成表达,不能替代企业对业务对象、关系、规则、权限和动作的稳定定义。
这也是为什么今天很多数据平台、BI 产品、AI 数据应用都在重新讨论 semantic layer、semantic model、business graph、knowledge store、metrics layer、governed semantics。
大家方向不同,术语不同,产品形态不同,但共同趋势很清楚:
如果语义层只被理解为"指标和维度的统计分析对象",它就无法承担 Agent 运行时基础设施的角色。
九、真正值得争论的不是名词,而是可验证能力
我觉得这场讨论最应该避免的是两种姿态。
一种是用大词压人,好像只要说了本体、语义、Agent,就天然更先进。
另一种是用旧定义守门,好像语义层只能停留在指标和维度,凡是往对象、事件、状态、动作扩展,都是噱头。
这两种都不够诚实。
更好的讨论方式是回到可验证能力。
一个面向 Data Agent 的语义系统,至少应该能接受这些问题的检验:
- 同一个业务问题,换几种自然语言问法,结果是否一致?
- 指标口径变化后,相关问答、报告、归因是否能稳定继承?
- 一个经营异常能否追溯到对象、事件、时间窗口和计算路径?
- 系统是否知道哪些角色能看哪些数据,哪些结论可以引用,哪些动作不能执行?
- Agent 是否能先表达业务意图,再由语义基础设施稳定翻译成 SQL、API 或流程动作?
从这个角度看,争论"它到底叫不叫本体"其实没那么重要。
真正重要的是:
它有没有把企业业务世界建模到 Agent 能用的程度。
如果没有,那就是更好的指标语义层。
如果有,那就是更接近本体化语义层。
名字可以商量,能力不能含糊。
十、最终判断
语义层不是一个固定在 BI 时代的狭义概念。
它是一类把企业数据、业务语言、分析逻辑和执行约束连接起来的基础设施。
在 BI 时代,它主要表现为指标语义层,帮助人更一致地看数。
在 Data Agent 时代,它必须扩展为更强的业务语义系统,帮助 AI 更稳定地理解、分析、解释和行动。
所以,把语义层定义为实体、属性、关联关系,再形成指标和维度等统计分析对象,这个说法可以成立,但只能覆盖语义层的一种形态。
它适合解释指标治理和分析消费,却不足以解释 Data Agent 所需要的业务世界建模。
企业真正要避免的,不是用了"本体化语义层"这个词,而是误以为把指标和维度管理好,AI 就自然能理解经营。
这中间差着一整套对象、事件、状态、关系、规则、权限和动作的语义建模。
也差着从 NL2SQL 到 NL2LF2SQL 的技术路线转变。
更直白地说:
这才是语义层讨论真正应该往前走的地方。
常见问题
企业已有指标体系和数仓,上本体化语义层需要推翻重建吗?
不需要。本体化语义层是在现有数据资产之上叠加一层业务语义定义,不动底层表结构和已有指标体系。已有指标治理越完善,接入速度越快。亿问 Data Agent 的 SemanticDB 支持语义模型热更新,新增对象、事件、规则定义不需要停机重建。
NL2LF2SQL 中的 LogicForm 是固定 schema 还是动态生成的?不同企业业务差异大,这层怎么做到通用?
LogicForm 的基础算子集合是固定的——查询、筛选、聚合、归因、对比、排序这些分析动作是通用的。但具体的语义槽位(对象、指标、时间、约束等)由每个企业的 SemanticDB 语义模型动态定义。可以理解为语法是通用的,词汇表是每家企业自己的,既保证引擎通用性,又适配不同企业的业务差异。
五层语义能力是否需要一次性全部建完?建模周期怎么控制?
不需要一步建满。实际项目中,第一阶段通常只建指标语义和核心业务对象,先让问数和基础分析跑通。事件语义和规则语义跟着客户的实际分析场景逐步补充——比如客户开始用归因分析了,再把相关的事件链路建进去。核心是节奏问题而不是工程量问题。
本体化语义层和知识图谱是什么关系?
本体化语义层关注的是企业业务世界的结构化建模——对象、事件、状态、关系、规则、权限、动作,目的是让 Agent 在运行时能稳定理解业务、约束输出。知识图谱是一种可能的底层实现手段,但本体化语义层不等于知识图谱,它还包括执行路径、权限边界、动作定义等知识图谱通常不覆盖的部分。亿问的 SemanticDB 是专门为 Data Agent 运行时设计的语义基础设施,不是通用知识图谱。
亿问 Data Agent 的五层语义能力目前实际落地到什么程度?
目前在指标语义、对象语义、事件语义、规则语义四层已有完整落地能力。动作语义在部分客户场景中已跑通,例如异常触发后自动生成分析报告并推送给对应角色。具体到不同行业(零售、制造等)的场景拆解,后续会有专题文章展开。
浙公网安备 33010602011771号