没本体时,AI 是“对着表猜字段”;有 MetaERP 库存本体时,AI 是“在本体图上做受控推理”。
一、具体问答示例(同场景串起来)
沿用前面「5G基带芯片 MAT-IC-001 / 深圳中央仓 / 批次 L20260601」。
示例 1:问“可用量”,不再算错口径
用户问:
“深圳仓这颗芯片现在能卖多少?”
没本体的老做法
直接查onhand_qty,可能把冻结、预留、待检都算进去,答“800pcs”,销售超卖。
本体驱动回答过程
- 意图解析:识别“能卖”=
AvailableToSell - 本体定位公理:
AvailableToSell = onHand - reservedQty - frozenQty - qcHoldQty 且 StockStatus=冻结 → 不参与ATS - 沿关系图取数:
OnHandQty → hasStatus → 合格OnHandQty → changesQty → 领用事务(已扣200)ReservedQty → 销售订单锁300 - 输出:
当前可用 500pcs(在手800,预留300,无冻结/待检),批次 L20260601,标准成本100元/片,可参与销售出库。
✅ 附带引用:用了哪条公理、哪个实例、哪个时间点快照。
示例 2:问“为什么成本是105不是100”
用户问:
“这批芯片出库成本怎么是105?不是标准价100吗?”
本体推理链(反向血缘)
销售出库事务 → costedBy → CostLayer(批次L20260601) → 关联入库事务 → generatedBy → 采购订单(PO单价105) → 标准成本100 + PPV 5 → 生成暂估凭证(借库存100k+PPV5k,贷应付暂估105k)AI 回答:
本批按移动加权实际层核算,PO进价105,标准价100,差额走PPV。按本体规则,销售出库取成本层而非回查标准价,所以结转105。可展开凭证 202606xx。
👉 这是传统 SQL JOIN 很难一句话答出来的“业务因果”。
示例 3:问规则类问题(防幻觉核心)
用户问:
“冻结库存能不能先发货后解冻?”
本体约束命中
axiom: StockStatus=冻结 ⊑ ¬允许生成销售出库事务 axiom: 出库事务前置条件(status ∈ {合格, 可用})AI 回答:
不能。本体公理 BR-INV-017 规定冻结状态禁止生成任何出库事务,系统会前置拦截,不走人工后审。如需发货,须先走“解冻审批”事件,状态变合格后再发。
⚠️ 这里不是模型“觉得不能”,是规则引擎硬约束,可审计。
示例 4:跨域追问
用户问:
“项目P001用的这颗芯片,财务账上算谁的资产?”
本体推导:
OnHandQty(芯片, 项目P001, OwnerType=自有项目库存)→ 计集团存货- 对比同物料
OwnerType=供应商寄售实例 → 不计自有资产
AI 直接区分两种视图,并给出对应 GL 科目。
示例 5:异常诊断类
用户问:
“深圳仓最近哪些批次账实差异超阈值?”
AI 动作:
- 调本体
InventoryTxn+CycleCount差异事件 - 套公理
|账存-实存|/账存 > 0.5% → 标红 - 沿血缘回链到入库/转移/领用事务
- 输出清单 + 可能原因(批次混放/序列号漏扫)+ 对应凭证
二、AI问答的运行机制(简化版)
用户自然语言 ↓ 意图识别(盘古类LLM) ↓ 映射成本体类/关系/公理(语义注册表) ↓ 生成查询计划(优先调本体API,其次白名单只读查询) ↓ 规则引擎校验 + 实时实例取数 ↓ 按公理链生成可解释答案(带引用路径)写操作(如改状态、建预留)不走自由对话,必须走固定页面/审批流,避免 AI 越权。
三、前置条件(缺一个就会退化为“高级搜索引擎”)
1️⃣ 本体层前置(语义底座)
项 | 要求 | 库存域举例 |
|---|---|---|
类定义 | 形式化 Class |
|
关系 | 对象属性显式声明 |
|
数据属性 | 单位/精度/枚举 | uom=片,精度0,状态枚举 |
公理规则 | 可机器执行 | ATS公式、冻结不可出、成本层取值规则 |
同义词映射 | 业务黑话对齐 | “能卖的”→AvailableToSell,“账面库存”→OnHand |
❗ 数据字典 ≠ 本体。字段类型说明不算,业务规则可推理才算。
2️⃣ 实例数据绑定(活数据)
- 本体类已绑定到 MetaERP 运行实例(不是空模型)
- 库存事务事件实时写入本体图(入库/领用/转移/盘点)
- 支持时间点快照(问答可指定“截至2026-06-30 24:00”)
3️⃣ 三体解耦已落地
- 实物量(INV)、价值(Cost)、凭证(GL)分别有本体域
- 跨域关系已建好(
costedBy/postsTo) - 否则 AI 会把“数量”和“金额”混着答
4️⃣ 规则引擎可调用
- 公理不是注释,是注册到推理引擎的可执行规则
- 支持规则版本管理(如新收入准则切换)
- AI 回答必须能挂规则ID,如
BR-INV-017 v2.3
5️⃣ 权限与脱敏本体化
- 数据权限绑到本体类:如“门店仓看板”不可看成本层
- 问“成本多少”时,按提问人角色自动隐去或脱敏
- 避免 AI 越权吐出全集团存货成本
6️⃣ 语义注册表 + 工具目录
- 运行时注册表:类、属性、关系、API、规则全注册
- AI 编排层知道“查ATS调哪个API、查凭证调哪个服务”
- 工具调用白名单化,禁止裸拼 SQL
7️⃣ 主数据治理到位
- 物料编码唯一,无重复 SKU
- 单位换算显式声明(箱/片/卷)
- 批次/序列号主数据完整
- 否则“芯片”会映射到多个实例,AI 答案发散
8️⃣ 可解释与审计闭环
- 每次回答附带:对象ID + 公理ID + 数据快照时间 + 规则版本
- 支持“展开推理路径”按钮
- 满足财务/内控审计要求
四、对照表:有没有本体的差距
用户问题 | 无本体LLM | MetaERP库存本体 |
|---|---|---|
能卖多少 | 查onhand瞎减 | 按ATS公理推导+留路径 |
成本为啥105 | 编故事说溢价 | 回链PO+PPV+成本层 |
冻结能发吗 | 大概率说“可以备注” | 命中公理直接拦截说明 |
项目库存归谁 | 混淆寄售/自有 | 按OwnerType维度区分 |
账实差异 | 跑SQL比对 | 套差异公理+血缘回溯 |
五、落地最小可行包(建议顺序)
- 先建
OnHandQty / InventoryTxn / StockStatus / CostLayer四类+关系 - 落 3 条核心公理:ATS公式、冻结禁出、出库取成本层
- 绑定深圳仓一个物料做试点实例
- 接盘古做意图映射 + 规则引用输出
- 跑通“问可用量/问成本来源/问规则”三类问题
- 再扩到多组织、多币种、多账簿
一句话总结:
库存本体给 AI 的是“业务真理源”,不是“表结构说明书”。前置条件本质是“类+关系+公理+实例+权限+规则引擎”六件事都机器可读。