
大家好,我是人月聊IT。今天继续聊AI人工智能方面的内容。即如何更好的结合DDD,MDA和本体论的思想,对传统ChatBI中的元模型建模进行优化。
最近在构建企业级的ChatBI智能问数平台时,我遇到了一个让人头疼的问题:明明已经把数据库的表结构、字段定义都投喂给了AI,但AI的回答仍然频繁出错,甚至产生严重的幻觉。
比如如下的典型场景:
这让我开始反思:为什么单纯投喂表结构还不够?经过深入分析后发现,类似传统的ChatBI的简单的基于数据库表结构的元模型和提示语设计本身存在天然的缺陷。

我们先看下传统的ChatBI类产品元模型做法,传统的做法是把数据表结构、字段类型、表关系等静态信息提供给AI:
表名: purchase_order
字段: po_id, supplier_id, promised_date, po_status
关系: purchase_order → goods_receipt (一对多)
这就像给AI一本字典,但没有教它如何造句。AI知道有个字段叫promised_date,但不知道:
简单来说就是这些静态的数据结构并不能很好的体现数据本身的动态的来龙去脉。AI只能看到静态的数据表,数据字段含义,但是无法真正理解数据背后的业务语义。

借鉴领域驱动设计(DDD)和本体论的思想,我提出了一个新的元模型架构,核心理念是:
不仅告诉AI数据"是什么",还要告诉AI数据"从哪来""到哪去""为什么"。

基于前面的思路,一个好的元模型语义定义,既需要包括静态的数据模型定义,又需要包括动态的行为和规则定义。因此在这里我设计了一个七层元模型体系,覆盖数据的完整生命周期:
第一层:领域术语词典 (消除歧义)
↓
第二层:静态数据模型 (数据存储)
↓
第三层:过程模型 (数据如何产生)
↓
第四层:指标推理模型 (数据如何使用)
↓
第五层:呈现约束模型 (数据如何展示)
↓
第六层:上下文感知 (理解用户意图)
↓
第七层:元模型治理 (持续优化)
下面以供应链采购订单履约准时性这个场景来举例说明,上面谈到的七层语义模型究竟该如何设计?
目的:解决最常见的"同词不同义"和"同义不同词"问题。
在采购领域,"准时"这个词就有多种理解:
我的做法:为每个核心术语建立"身份证"
术语: 履约准时率
业务定义:在承诺交付日期(含)之前完成实际收货的订单占比
同义词:[准时交付率,OTD,On-TimeDeliveryRate]
易混淆概念:
-不等于"发货准时率"(那是供应商视角)
-不等于"到货准时率"(那可能不包含质检)
判定标准:所有批次收货日期≤承诺交付日期
使用场景:[供应商绩效评估,采购效率分析,供应链风险预警]
关键点:
给AI的价值:当用户问"上个月准时率多少"时,AI可以明确回答"您问的是到货准时率,统计标准是..."
这一层是传统ChatBI已有的部分,但需要增强业务规则,也就是增加字段背后隐藏业务含义和规则的说明。
实体: purchase_order (采购订单)
关键字段:
- promised_date: 承诺交付日期
业务规则:
- "必须在供应商确认订单后才有值"
- "可以晚于需求日期,但需要采购员审批"
- "若订单拆分送货,每个送货单有独立承诺日期"
与传统模型的区别:
promised_date DATE (只知道类型)promised_date DATE + 3条业务规则 (知道含义和约束)给AI的价值:AI知道这个字段"可以改",且"改动需要审批",在解释数据异常时能给出合理推测。

核心思想:数据不是凭空产生的,而是业务流程的产物。简单来说就是对静态的数据结构增加动态的行为特征,将我们的业务流程和业务活动转变为一种显性化的语义定义。
大家参考下下面的定义就会发现,这个实际和当前我们在SDD规范驱动编程中编写结构化的Spec规范的思路完全一致。
比如将采购订单履约拆解为7个关键活动:
流程: 采购订单履约全流程
触发条件: 采购需求产生 + 存在有效框架协议
活动1: 创建采购订单
执行者: 采购员
输入: 采购需求、框架协议
输出: purchase_order (状态=draft)
业务规则:
- R001: 合同必须在有效期内
- R002: 供应商不能在黑名单
- R003: 需求日期 ≥ 当前日期 + 标准交付周期
活动2: 供应商确认订单
执行者: 供应商
输入: 订单草稿
输出: promised_date (承诺日期)
业务规则:
- R004: 承诺日期必须晚于当前
- R005: 若承诺日期超需求日期3天,需主管审批
活动3: 供应商发货
活动4: 仓库收货
活动5: 质量检验
业务规则:
- R010: 收货后24小时内必须完成质检
- R011: 质检不合格→创建退货单→重新发货
活动6: 退货处理 (若质检不合格)
活动7: 订单完成确认
触发条件: 所有物料收货完成 + 质检合格
业务规则:
- R013: 准时性判定 = MAX(收货日期) ≤ 承诺日期
关键设计:
给AI的价值:
因此当有了这些详细流程和活动的行为定义后,AI在回答问题的适合就不是简单的猜,,而是基于业务流程的可解释推理。

对应静态数据结构的动态定义实际包括两个方面,简单来说就是既要知道数据是如何来的?其前面一个步骤的通过业务流程驱动了数据的产生;其次又需要知道数据是如何用的,即基于我们已有的数据如何去构建上层的指标推理。
因此传统ChatBI告诉AI"准时率=准时订单数/总订单数",但这还是远远不够的。
进一步基于指标的增强设计:
指标: 采购订单履约准时率(M001)
业务定义:
在承诺交付日期(含)之前完成所有收货的订单占比,
反映供应商的交付能力
计算口径:
统计范围:po_statusIN('completed','closed')
统计周期:按订单创建日期(po_date)
排除规则:已取消订单、金额<1000元的小额订单
计算公式:
分子:准时订单数(MAX(收货日期)≤承诺日期)
分母:总订单数
完整SQL逻辑:[附完整可执行的SQL]
数据血缘:
来源流程:P001-采购订单履约全流程
来源表:purchase_order+goods_receipt
关键字段:promised_date,receipt_date
典型分析场景:
场景1:供应商绩效评估
问题模式:"XX供应商上月的准时率是多少?"
答案结构:数值+同比环比+排名+异常说明
场景2:延期原因分析
问题模式:"为什么上个月准时率下降了?"
答案结构:趋势图+根因分解(质检不合格X%,供应商延误Y%)
场景3:风险预警
问题模式:"准时率低于80%的供应商有哪些?"
答案结构:预警清单+风险等级+改进建议
关键点:
给AI的价值:
对于这一个层次定义的目标很简单,就是统一回答风格,提升用户体验。比如企业已有的标准规范,参考模板,展现风格等,我们都可以提前进行约束和定义。让AI输出符合企业组织要求的最终呈现结果。
可以看到这个实际和Claude Skills技能包里面的案例,模板,最佳实践部分的定义思路完全是一致的。
设计要素:
1. 可视化规范
图表类型: 趋势图
适用指标:准时率、延期天数
配置:
-横轴:时间周期
-纵轴:准时率(%)
-基准线:行业平均85%(虚线)
-预警线:75%(红色)
-颜色:准时=绿色,预警=黄色,异常=红色
2. 报告模板
模板: 月度供应商履约分析报告
章节:
1. 执行摘要 (本月准时率、环比变化、预警供应商数量)
2. 准时率趋势分析 (近6个月趋势图 + 关键事件标注)
3. 供应商绩效排名 (TOP10 + BOTTOM5)
4. 延期原因分析 (根因分解:质检X%, 物流Y%, 生产Z%)
5. 改进建议 (针对每个问题供应商的具体措施)
3. 问答模板
这是最关键的部分,定义AI如何回答不同类型的问题:
问题类型1: "{{时间}}的{{指标}}是多少?"
答案模板:
{{时间}}的{{指标}}为**{{数值}}{{单位}}**
📊数据详情:
-统计订单总数:{{N}}
-准时订单数:{{M}}
📈趋势对比:
-环比上期:{{+/-X%}}
-同比去年:{{+/-Y%}}
💡数据说明:
该数据统计范围为{{...}},判定标准为{{...}},
数据来源于{{流程P001}},最后更新时间{{...}}
---
问题类型2:"为什么{{供应商}}{{时间}}延期了?"
答案模板:
🔍延期原因分析-{{供应商}}在{{时间}}:
📉数据表现:
-延期订单:{{N}}单(占比{{X%}})
-平均延期:{{M}}天
🔍原因分解:
1.质检不合格退货:{{占比X%}}
主要问题:包装破损({{Y单}}),规格不符({{Z单}})
2.供应商生产延误:{{占比%}}
3.物流延误:{{占比%}}
📋典型案例:
订单PO001:承诺12-15,实际12-22,延期7天
原因:首次送货质检不合格,退货重送
💡数据追溯:
purchase_order→goods_receipt→quality_inspection→return_record
给AI的价值:标准化的回答结构,用户体验一致且专业。
第六个层次是上下文感知的设计,即让AI理解用户的角色、时机、意图。这个也是我经常谈到的,任何对数据,指标的解读都不能脱离上下文,脱离当时的空间,时间和环境。
即使是同样一个数据结果,在不同的上下文下,往往都可能产生不同的结果,而这正是我们经验的积累,也是单纯的AI期初所最欠缺的东西。
设计维度:
1. 组织上下文
采购部:
关注指标:准时率、延期天数
预警阈值:<85%
报告频率:每周一上午
质量部:
关注指标:质检合格率、退货率
关注场景:质检不合格导致的延期
2. 时间上下文
月末(25-31日):
用户行为:查询本月数据、生成月报
AI默认:统计周期=本月
自动触发:月度分析报告
周一上午:
用户行为:查看上周数据
AI默认:统计周期=上周
3. 用户画像
采购员:
专业度:业务专家
回答风格:业务语言,少技术术语
详细度:中等,关注结论和行动建议
偏好格式:图表+简要文字
数据分析师:
专业度:技术专家
回答风格:可以使用SQL、统计术语
详细度:详细,可输出计算逻辑
偏好格式:数据表+方法说明
采购经理:
专业度:管理层
回答风格:高层次总结
详细度:精简,关注战略洞察
偏好格式:执行摘要+关键数字
4. 对话记忆
场景:
用户: "上个月供应商A的准时率是多少?"
AI: "78% (低于预警线)"
用户: "他的订单量呢?"
AI: (自动关联"他"=供应商A, 时间=上个月)
给AI的价值:同样的问题,不同角色、不同时机给出差异化的答案。
最后一个层次是元模型治理,简单来说就是要建立持续优化机制。让整个AI模型和AI应用能够自我进化,越来越聪明。
关键机制:
1. 版本管理
版本: v1.0.0
更新日志:
- 2025-01-15: 初始版本,定义8个核心术语,4个指标
- 2025-02-01: 新增"首次送货准时率"指标
- 2025-03-01: 优化质检不合格的判定规则
2. 责任划分
术语词典:
拥有者:数据治理团队
评审者:业务部门负责人
更新频率:季度评审
业务流程:
拥有者:业务流程部门
评审者:IT部门
更新频率:流程变更时实时更新
3. 质量监控
监控指标:
-AI回答准确率>90%(用户反馈+人工抽检)
-元模型覆盖率>80%(问题可匹配度)
改进闭环:
触发:AI回答错误
行动:分析是哪层元模型缺失
触发:新业务场景
行动:扩展术语词典和流程模型
在实际项目中应用这套元模型后,效果显著:
维度 | 传统方案 | 优化后 |
|---|---|---|
AI回答准确率 | ~60% | ~92% |
用户满意度 | 2.8/5.0 | 4.5/5.0 |
可解释性 | 无法追溯 | 完整血缘 |
覆盖场景 | 简单查询 | 复杂分析+根因追溯 |
用户问题: "为什么供应商A上个月准时率这么低?"
传统ChatBI回答: "供应商A上月准时率68%,可能是因为物流原因。" (无法解释,只能猜)
优化后回答:
🔍 根因分析 - 供应商A在2024年12月:
📉 数据表现:
- 总订单: 23单
- 延期订单: 11单 (47.8%)
- 平均延期: 6.2天
🔍 延期原因分解:
1. 质检不合格退货重送: 72.7% (8单)
主要问题: 包装破损5单, 规格不符3单
2. 供应商生产延误: 18.2% (2单)
3. 物流延误: 9.1% (1单)
📋 典型延期订单:
- PO202412001: 承诺12-15, 实际12-22, 延期7天
追溯路径: 12-15首次送货 → 质检不合格(包装破损18%)
→ 12-16退货 → 12-22重新送货
💡 改进建议:
- 已要求供应商A升级包装标准
- 下次订单增加包装质量检查条款
- 建议交付周期+2天以降低风险
📋 数据来源:
基于采购订单履约全流程(P001)的数据追溯
purchase_order → delivery_record → goods_receipt
→ quality_inspection → return_record
差异:

不要一次性建模太细,建议分三步走:
验证目标:核心场景准确率>85%
优化目标:覆盖80%用户问题

用户问题
→ 术语识别(从术语词典匹配)
→ 指标识别(从指标库匹配)
→ 场景匹配(从典型场景匹配)
→ 流程追溯(从过程模型追溯)
→ 生成答案(按呈现模板输出)
不要把所有元模型都塞给AI,而是:
传统ChatBI只给了AI"数据字典",而我们要给AI"业务百科全书"。传统ChatBI只给AI静态数据模型,而我们需要结合DDD和本体论构建一个静态数据+动态行为+规则的完整语义的数字孪生模型。
这套七层元模型的核心价值:
最重要的是:这不仅仅是技术优化,更是企业知识资产的数字化沉淀。当业务规则、流程逻辑、指标定义都以结构化方式保存后,它的价值不仅在于"让AI更准确",更在于:
这才是智能问数系统的终极意义。也是我们在通过AI辅助进一步发挥AI价值的关键点所在。今天分享就到这里,希望对大家有所启发。
注:特别鸣谢华南CIO协会夏总提供背景问题和素材。