用语义配置提升知识库问数准确性¶
MOI 的语义层位于数据库 Schema 与自然语言问答之间,是一层可治理、可复用的业务抽象。它不改变原始表结构,而是把技术字段、业务名称、指标公式、企业内部编码和查询约束组织成可执行的语义契约,并在生成 SQL 时提供给规划和执行过程使用。通用模型可能认识 NETWR、VBELN、GBSTA 等常见 SAP 字段,但仅凭 Schema 仍无法确定企业内部的考核口径、地区编码,或知识库允许查询的币种范围。
本教程的销售订单表包含三个仅靠 Schema 无法还原的内部口径:考核销售额按已完成订单 NETWR 的 90% 计算;VKORG = 1000/2000/3000 分别代表华北、华东和华南;销售分析只能使用人民币订单,USD 记录不得与 CNY 直接相加。接下来先记录未配置语义的结果,再通过指标、业务规则和强制约束分别补齐这三部分信息。少配置任何一类,最终结果都会出现计算错误、地区归属错误或数据范围不合规。
你将完成什么¶
将销售订单 CSV 导入 Catalog 并加入知识库;
配置指标、业务规则和强制约束;
使用同一个销售分析问题,对比配置前后的订单统计、地区名称和币种范围。
开始前准备¶
准备一个 MOI 账号并进入目标工作区;
下载示例文件 semantic-sales-data.csv。
操作步骤¶
1. 导入销售订单 CSV¶
在左侧导航进入 数据 > 导入任务,点击 新建导入任务。
选择 结构化 和 本地上传,上传
semantic-sales-data.csv。选择 新建表,目标位置填写:
tutorial_data / semantic_demo / sales_orders
确认第一行是列名,并检查
ERDAT为DATE,KWMENG为INT,NETWR为DECIMAL(15,2);其余字段保持默认设置。SAP 中NETWR通常对应货币字段CURR(15,2)。
点击 创建并开始导入,等待任务状态变为 已完成。
2. 创建知识库并添加数据表¶
进入 资源中心 > 知识库,点击 创建知识库。
输入名称
sales_semantic_knowledge,用途填写“用于按企业管理口径查询销售考核数据”。打开知识库详情,点击 添加数据,选择
tutorial_data / semantic_demo / sales_orders。
等待数据源处理完成后,打开 高级配置 > 语义配置。
3. 先不配置语义,记录对照结果¶
在语义配置中暂不新建条目,先进入知识库 对话,发送:
统计 2026 年第一季度华东、华南和华北三个业务地区的考核销售额、有效订单数和平均考核订单金额,并按考核销售额从高到低排序。结果中显示业务地区名称。
记录回答和生成的 SQL:
未配置语义时,系统只能根据字段名和常见 SAP 知识猜测口径。请重点检查以下三处:
考核指标:Schema 没有记录 90% 的考核系数,也没有说明“有效订单”只统计
GBSTA = 'C',系统容易直接汇总NETWR;业务地区:Schema 没有记录本企业采用
1000 = 华北、2000 = 华东、3000 = 华南的非顺序映射,系统可能按照代码顺序错误猜测地区;币种范围:表中同时存在 CNY 和 USD。直接汇总
NETWR会把不同币种相加,得到没有业务意义的销售净值。
这些问题都不是字段类型能够解决的,因此该结果只能作为配置前的对照,不能作为业务结论。
4. 配置指标、业务规则和强制约束¶
返回 高级配置 > 语义配置。点击相应分类右侧的 新建,每次保存一条语义配置。除特别说明外,关联表都选择 sales_orders。
指标¶
点击 指标 > 新建指标,按照前端表单依次创建下面三个基础指标。每创建一项,都先填写基本信息,再完成 基础指标计算,最后点击 创建。
配置项 |
考核销售额 |
有效订单数 |
平均考核订单金额 |
|---|---|---|---|
指标标识 |
|
|
|
名称 |
考核销售额 |
有效订单数 |
平均考核订单金额 |
指标说明 |
已完成订单按 |
统计已完成销售订单的数量 |
已完成订单 |
同义词 |
绩效销售额、管理口径销售额 |
完成订单数、有效单量 |
平均考核客单价、考核订单均额 |
指标类型 |
基础指标 |
基础指标 |
基础指标 |
来源表 |
|
|
|
聚合函数 |
|
|
|
聚合字段 |
|
|
|
乘数 |
|
|
|
固定筛选条件 |
字段 |
字段 |
字段 |
样例表中每行对应一笔订单,VBELN 不重复,因此前端提供的 count 可以直接作为订单数。三个指标都通过固定筛选条件仅统计 GBSTA = 'C' 的已完成订单。90% 是本企业预留 10% 渠道返利后的管理考核系数,并不存在于数据库 Schema 中,因此不配置指标时无法得到正确的考核金额。
按照表格完成另外两个指标后,返回指标列表,确认页面中显示 assessed_sales、valid_order_count 和 average_assessed_order_value 三项指标。
业务规则¶
点击 业务规则 > 新建业务规则,按下表填写并创建:
配置项 |
配置值 |
|---|---|
业务规则标识 |
|
关联表 |
|
规则内容 |
本企业销售组织与业务地区的对应关系为: |
业务规则补充 Schema 中没有记录的企业内部编码含义。本例故意采用不能按代码大小猜测的地区映射;未配置该规则时,即使系统输出了中文地区名称,也可能把地区归属判断错误。
强制约束¶
点击 高级配置 > 强制约束 > 新建强制约束,按下表填写并创建:
配置项 |
配置值 |
|---|---|
强制约束标识 |
|
关联表 |
|
约束条件 |
字段 |
样例表中包含 USD 订单;该约束会在 sales_orders 参与查询时自动加入,避免将 USD 与 CNY 的 NETWR 直接相加。它规定的是知识库可查询的数据范围,与指标的计算公式、业务规则的地区映射互不重复。
保存后执行语义配置的 校验,确认每条配置都通过。
5. 验证指标、业务规则和强制约束¶
回到知识库 对话,再次发送步骤 3 的问题。
核对回答,并展开思考过程查看 SQL。配置后应能看到:
使用
assessed_sales、valid_order_count和average_assessed_order_value的定义;考核销售额使用
sum(NETWR)并设置乘数0.9,有效订单数使用count(VBELN),平均考核订单金额使用avg(NETWR)并设置乘数0.9;查询包含
GBSTA = 'C';查询按照
VKORG分组,并将1000、2000、3000分别显示为华北、华东、华南;强制约束自动加入
WAERK = 'CNY';按考核销售额降序得到华北、华东、华南,考核销售额分别为 14,940、6,336 和 1,080 元;对应有效订单数为 4、2 和 1,平均考核订单金额为 3,735、3,168 和 1,080 元。
其中,指标解决 90% 考核系数、已完成状态筛选和聚合方式;业务规则提供销售组织到业务地区的内部映射;强制约束排除 USD 数据并限定人民币范围。删除或漏配其中任何一项,都无法得到上述完整结果。
缺少的配置 |
可观察到的错误 |
|---|---|
指标 |
系统可能直接汇总 |
业务规则 |
系统可能把 |
强制约束 |
USD 订单会进入汇总;即使使用 90% 考核系数,华北考核销售额也会从正确的 14,940 变成 15,840 |
如果结果仍不符合预期,先检查语义条目的来源表、标识符、指标字段和筛选条件,再重新校验并提问。
教程完成¶
您已经用一份 CSV 完成了从数据导入、知识库建模到问答对比的完整流程。这个例子说明:SAP Schema 只能提供技术结构,完整业务信息需要通过指标、业务规则和强制约束补充,才能让自然语言问数得到可解释、可复核的结果。