语义层与 Context Engineering 不是替代关系。语义层适合固化指标定义、维度关系、业务实体、统计口径和权限等需要长期一致、确定执行的业务规则;Context Engineering 则负责在 Agent 每次运行时,动态选择系统指令、相关语义、用户状态、历史记录、工具说明和场景知识。判断原则是:决定“业务事实是什么、怎么算”的规则应进入语义层;决定“这次任务需要让模型知道什么”的信息应由 Context Engineering 组织。
Data Agent 的业务规则不应该全部固化在 Prompt 或 Context 中,也不应该全部塞进语义层。语义层负责沉淀长期稳定、需要确定性执行的企业业务事实,例如指标口径、维度关系、业务对象和权限;Context Engineering 负责在具体任务发生时,动态选择 Agent 此刻需要看到的规则、知识、历史、工具和状态。前者解决“什么是真的”,后者解决“此刻应该让模型知道什么”。Semantic Layer 定义可信世界,Context Engineering 按任务把这个世界的相关部分送给 Agent。
作者:Aloudata 团队 | 发布日期:2026-08-26 | 最新更新日期:2026-08-26 | 阅读时间:13 分钟
语义层(Semantic Layer)位于底层数据与 BI、Data Agent、API 等消费端之间,把数据库中的表、字段和技术逻辑转换成统一的业务语义。它通常沉淀:业务对象 → 指标 → 维度 → 关系 → 计算口径 → 统计周期 → 权限规则。
例如企业定义“净销售额”为:
已支付订单金额 - 已完成退款金额,不统计测试订单,按支付完成时间归属自然日。
这不是一段用于帮助大模型理解业务的背景材料,而是一项必须被系统确定执行的数据规则。无论销售 Agent、财务 Agent、BI 看板还是业务 API 查询“净销售额”,理论上都应该获得相同的定义和结果。
因此:
语义层管理的是企业业务事实的定义权。
Context Engineering(上下文工程)关注的是:在每一次模型推理发生之前,应该给模型提供哪些信息。Anthropic 将其定义为对模型推理时上下文信息进行选择、组织和维护的工程实践,其范围已经不只是 System Prompt,还包括工具定义、MCP、外部数据、消息历史以及 Agent 运行过程中不断产生的状态。
例如业务人员问:
“华东为什么连续三周销售下滑?”
这一轮 Agent 可能需要获得:
这些信息没有必要全部永久写入一个超长 Prompt。
Context Engineering 的任务,是在运行时判断:
这一次解决这个问题,模型最需要看到哪些高价值上下文?
| 对比维度 | 语义层 | Context Engineering |
|---|---|---|
| 核心问题 | 业务事实是什么、怎么算 | 此次任务应该让 Agent 知道什么 |
| 典型内容 | 指标、维度、实体、计算规则、权限 | Prompt、语义检索结果、历史、Tools、Skills、任务状态 |
| 生命周期 | 长期、相对稳定 | 动态、随任务变化 |
| 执行要求 | 高确定性 | 允许动态选择 |
| 主要目标 | One Business Truth | Right Context at the Right Time |
| 错误后果 | 数字错误、口径冲突 | 理解偏差、遗漏条件、错误规划 |
| Agent 中的位置 | 可信业务世界模型 | 运行时上下文组织机制 |
真正容易混淆的是:一条业务规则既可以写进 Context,也可以定义在语义层。技术上两种方式都能让模型“知道”,但工程后果完全不同。
假设企业规定:
“活跃会员 = 最近 30 天至少完成一次有效购买的会员。”
最简单的 Agent 实现方式,是把这句话写进 System Prompt:
当用户询问活跃会员时,请按照最近 30 天至少购买一次进行计算。
PoC 阶段这样做完全可行。
问题在于,当企业出现销售分析 Agent、会员 Agent、营销 Agent、经营报告 Agent 后,这条定义可能进入十几个 Prompt、Skill 或知识文件。半年以后规则改为“最近 60 天”,企业就必须找到所有副本逐一修改。更严重的是,大模型拿到文字定义以后,仍然需要自行判断:
因此,把确定性的计算规则放进 Context,本质上只是把规则“告诉模型”,而不是让系统“执行规则”。
语义层更适合这类规则,因为定义最终可以转换成确定性的查询逻辑。
判断标准是:
只要同一个规则要求不同用户、不同 Agent、不同时间调用都得到一致数据结果,就不应只存在于 Context 中。
反过来,也不能因为语义层能够沉淀业务知识,就把所有 Agent Context 都建模成语义资产。
例如用户说:
“这次先别看线上渠道,只分析华东直营门店,而且重点检查上周营销活动有没有影响。”
这里包含:
这些内容只对当前任务有效。把“本次不要分析线上渠道”永久写进企业语义层显然不合理。
同样,Agent 可调用哪些工具、当前步骤已经执行到哪里、之前生成了什么中间结论,也属于运行时状态。Anthropic 对 Context Engineering 的讨论特别强调,上下文是一种有限资源,Agent 需要从不断增长的信息中选择最相关、高信号的内容,而不是简单把所有可能相关的信息全部塞进上下文窗口。
因此:
语义层追求稳定与复用,Context Engineering 追求相关与及时。
一个负责沉淀,一个负责调度。
这是企业建设 Data Agent 时最实用的一条分界线。
例如以下规则:
“GMV 不扣除退款。”
这是事实定义。
它决定 GMV 怎么算,应该优先进入语义层。
而另一条规则:
“分析销售下降时,优先检查订单量、客单价和退款率。”
这是分析指导。
它告诉 Agent 应该怎样开展任务,更适合被沉淀为 Skill、System Instruction 或其他可动态加载的上下文。
再比如:
“华东包括上海、江苏、浙江和安徽。”
如果这是集团长期统一的区域维度定义,应进入语义层。但:
“本次经营会把安徽暂时归到华中比较。”
这是此次任务的临时分析条件,应进入 Context。
所以可以使用一个简单规则:
事实规则 → Semantic Layer
方法规则 → Skill
任务规则 → Context
执行能力 → Tool
这种分层,比讨论“业务知识到底放知识库还是 Prompt”更有意义。
有人可能据此得出另一个结论:
既然 Context Engineering 可以动态检索业务规则,那么是不是不再需要提前建设语义层?
恰恰相反。Context Engineering 解决的是怎么选择上下文,但它本身不会自动保证被选择的信息正确。
如果企业存在三个版本的“销售额”定义:
Context Engineering 即使检索准确,也只是把冲突更高效地送进模型。Agent 最终依然需要猜哪个是真的。
Aloudata 曾将语义层视为企业自身的“世界模型”:模型、Skills、Tools、Memory 等承担不同职责,语义层负责让 Agent 理解稳定的企业业务事实,而具体场景的方法和工具使用则分别进入 Skills 和运行时规划。
因此更成熟的体系应该是:
企业语义层:管理权威业务事实
↓
Context Engineering:按任务检索相关语义
↓
Skills / Tools / Memory:补充方法、能力和历史
↓
LLM:理解、规划与推理
Context Engineering 不是语义层的替代品,而是语义资产进入 Agent 推理过程的“配送系统”。
企业可以用三个问题判断。
如果回答“是”,通常应该进入语义层。例如“有效订单定义”一旦改变,BI、Agent 和 API 都应该统一变化,而不是分别更新 Prompt。
如果回答“是”,也应优先结构化到语义层或其他确定性系统。企业正式经营数据不能依赖 LLM 每次重新解释自然语言规则。
如果回答“是”,则适合由 Context Engineering 动态组织。例如当前分析目标、近期政策文件、用户角色、临时筛选范围和对话状态,没有必要永久写入核心语义模型。
因此,所谓“业务规则固化在哪里”,并不是选择一个统一存储库,而是建立不同确定性等级的规则分层。
在 Aloudata Agent 企业级可信数据分析智能体的架构中,标准指标首先由 NoETL 可信语义层提供,指标口径、维度关系、筛选条件和权限边界由统一语义资产约束;复杂问题再由 Agentic Harness 架构进行任务拆解、工具调用和多步分析。
这意味着 Agent 不需要把所有指标 SQL、业务口径长期硬编码在 Prompt 中。例如用户问:
“为什么华南区域本月销售额下降?”
Agent 可以先从语义层获得“销售额”“华南”“本月”等确定性业务语义,再结合当前用户权限、任务历史、相关 Skill、业务知识和分析中间结果动态构造 Context。
于是不同层分别解决:
这也解释了为什么不能简单把企业 Context Engineering 理解为“建设一个更大的知识库”。
真正可信的 Data Agent 需要的是:
稳定语义负责确定性,动态 Context 负责适应性,Agent 负责推理。
三者职责越清晰,系统越容易治理。
这样可以快速完成 Demo,却很难形成企业级架构。
当规则数量增长后,Prompt 会不断膨胀,同时产生版本冲突、维护困难和上下文噪声。Anthropic 也指出,把大量复杂逻辑硬编码进 Prompt 容易形成脆弱且维护复杂的 Agent。
稳定业务事实应该被结构化、服务化,而不是长期依赖自然语言提示。
语义层只提供企业事实,不知道当前用户为什么提问、此前说过什么、应该调用哪个工具,也不会自动决定本轮应该加载哪些信息。
企业拥有再完善的语义资产,如果 Agent 每次把几万个指标全部送入模型,上下文效果仍然可能很差。
所以语义层解决 可信来源,Context Engineering 解决 有效使用。
LLM 的注意力并不是无限资源。
高质量 Context Engineering 追求的并不是“把能找到的东西全部提供给模型”,而是找到当前任务所需的最小高信号信息集合。
因此,企业更应该追求 Right Context,而不是 More Context。
不能。Context Engineering 可以决定把哪些业务知识送给模型,但并不能天然保证这些知识具有唯一、可执行的数据定义。对于指标口径、维度关系和权限等需要确定性执行的规则,仍然需要语义层或其他结构化系统提供可信来源。
不应该。长期稳定并决定数据事实的规则适合进入语义层;分析方法更适合沉淀为 Skill;用户临时要求、当前任务状态、相关知识和历史对话等动态信息,更适合通过 Context Engineering 按需加载。
可以,但应区分规则性质。任务级行为约束、输出格式、当前场景要求可以进入 Prompt;如果某项规则长期决定核心指标如何计算,就不应该只依赖 Prompt,而应尽可能转化为结构化、可执行的语义资产。
更合理的模式是由语义层提供可信业务事实,由 Skills 提供分析方法,由 Tools 提供执行能力,由 Memory 和知识库补充历史与非结构化知识,再通过 Context Engineering 根据当前任务动态组织这些信息,最终交给模型进行推理和规划。
Topic Hub
数据架构与建模
企业语义层:管理权威业务事实
↓
Context Engineering:按任务检索相关语义
↓
Skills / Tools / Memory:补充方法、能力和历史
↓
LLM:理解、规划与推理