AI 里的“本体”到底是什么?——从对象、规则、动作到 AI 执行,一篇讲清楚
最近在 AI、Agent、知识图谱、企业智能助手这些场景里,经常能看到一个词:
本体(Ontology)。
我一开始也很难理解。
尤其容易卡在这些问题上:
- 本体到底是什么?
- 本体和数据库有什么区别?
- 本体里的“动作”有什么用?
- 数据库本来就能增删改查,为什么还要定义动作?
- 本体里的“规则”是谁检查?
- 是不是规则都通过了,AI 才能执行动作?
- RAG 也能查数据,为什么还要本体?
- AI 自己没有长期记忆,它到底怎么拿到本体?
这篇文章就用一个简单的动物园 AI 助手例子,把这些问题完整串起来。
一、先给“本体”下一个容易理解的定义
如果只用一句话解释:
本体,就是把一个业务世界里的“对象、属性、关系、规则和动作”统一定义清楚,让系统和 AI 知道这个业务世界是什么样、怎么关联、有什么限制、允许做什么。
可以先记住:
本体
=
对象
+
属性
+
关系
+
规则
+
动作
用动物园举例:
对象:
动物、馆舍、饲养员、食物
属性:
动物名称、年龄、性别
馆舍名称、位置、容量
关系:
动物 → 居住在 → 馆舍
动物 → 由 → 饲养员照顾
动物 → 食用 → 食物
规则:
一个动物同一时间只能有一个当前馆舍
目标馆舍必须有可用容量
只有有权限的人员才能调整动物馆舍
动作:
更换馆舍
更换饲养员
调整饲料
通知饲养员
这就构成了一套非常简单的“动物园本体”。
二、对象、属性、关系、规则、动作分别是什么?
1. 对象:业务里有什么东西
例如:
动物
馆舍
饲养员
食物
它们都是业务里的“名词”。
2. 属性:这个对象有哪些信息
例如“动物”:
名称
年龄
性别
出生日期
“馆舍”:
馆舍名称
位置
最大容量
当前容量
所以:
属性就是描述对象本身的信息。
3. 关系:对象和对象怎么关联
例如:
动物 --居住在--> 馆舍
动物 --由--> 饲养员照顾
动物 --食用--> 食物
真实数据可能是:
团团 --居住在--> 熊猫馆A
团团 --由--> 张师傅照顾
团团 --食用--> 竹子
4. 规则:什么情况允许,什么情况不允许
例如:
一个动物同一时间只能有一个当前馆舍
目标馆舍必须有剩余容量
大熊猫只能进入允许饲养大熊猫的馆舍
只有动物管理员有权限执行更换馆舍
所以:
规则就是业务限制和判断条件。
5. 动作:系统允许对业务对象做什么
例如:
更换馆舍
更换饲养员
调整饲料
通知饲养员
删除动物档案
所以:
动作就是业务层面的“可执行能力”。
三、本体和真实数据不是一回事
这一点非常重要。
本体定义:
动物 --居住在--> 馆舍
这是在描述一种业务关系。
真实数据:
团团 --居住在--> 熊猫馆A
这是具体事实。
同样:
本体定义:
动物可以执行“更换馆舍”
真实操作:
把团团从熊猫馆A调整到熊猫馆B
也是两回事。
所以可以简单记:
本体
=
定义“世界应该怎么组织”
数据库
=
保存“现实世界现在是什么状态”
四、本体为什么不能直接被数据库替代?
假设数据库里有:
animal.house_id = 1001
程序员知道:
1001
是一个馆舍 ID。
但是 AI 只看到:
animal
house_id
house
它并不一定知道业务含义。
本体可以把技术字段翻译成:
动物 --居住在--> 馆舍
数据库偏技术:
表
字段
主键
外键
本体偏业务:
动物
馆舍
居住在
负责照顾
允许更换馆舍
所以:
本体相当于在数据库和 AI 之间增加了一层“业务语义”。
五、AI 自己没有记忆,它怎么知道本体?
这是最关键的问题之一。
假设用户问:
团团住哪里?谁负责照顾?
AI 一开始并不知道团团是谁。
系统可能给 AI 的上下文只有:
【系统提示】
你是动物园业务助手。
查询动物园内部信息时必须使用系统提供的工具。
【可用工具】
query_ontology
用于查询动物园本体
query_zoo_data
用于查询真实业务数据
execute_action
用于执行本体动作
【用户问题】
团团住哪里?谁负责照顾?
注意:
这时候 AI 还不知道完整本体。
它只是知道:
我有一个工具,可以查询本体。
于是 AI 调用:
query_ontology(
"动物、馆舍、饲养员之间的关系"
)
本体返回:
动物 --居住在--> 馆舍
动物 --由--> 饲养员照顾
然后 AI 才知道应该去查什么。
六、AI 怎么使用本体查询真实数据?
现在 AI 已经知道:
动物 → 馆舍
动物 → 饲养员
于是再调用:
query_zoo_data(
animal="团团",
relations=["居住在", "饲养员"]
)
数据库返回:
团团 --居住在--> 熊猫馆A
团团 --由--> 张师傅照顾
最后 AI 回答:
团团住在熊猫馆A,由张师傅负责照顾。
整个过程:
用户问题
↓
AI
↓
查询本体
↓
知道业务关系
↓
查询真实数据
↓
拿到真实结果
↓
AI回答
七、本体里的“动作”到底有什么用?
这是最容易迷糊的地方。
假设用户说:
把团团调到熊猫馆B。
传统系统里,我们完全可以直接调用:
POST /animal/change-house
或者直接改数据库:
UPDATE animal
SET house_id = 1002
WHERE id = 1;
那为什么还要有:
动作:更换馆舍
答案是:
本体动作不是为了代替 API,而是把底层技术接口包装成一个“业务动作”。
例如:
业务动作:
更换馆舍
作用对象:
动物
输入:
动物
目标馆舍
业务含义:
把动物当前所在馆舍变更为目标馆舍
真正执行时,背后仍然可能调用:
API
MCP
Function
Logic
Workflow
数据库
所以:
本体动作
=
业务层
API / Function / MCP
=
执行层
数据库
=
数据层
八、为什么不能让 AI 直接调用删除接口?
假设用户说:
删除团团。
如果 AI 只看到:
deleteAnimal(id)
它可能直接调用。
但真实业务通常不允许这么简单。
删除之前可能要检查:
当前用户有没有权限?
团团有没有未完成治疗任务?
团团有没有正在执行的转运任务?
是不是应该逻辑删除而不是物理删除?
关联的馆舍关系怎么办?
关联的饲养员关系怎么办?
要不要写审计日志?
所以本体动作可能定义:
动作:
删除动物档案
前置规则:
1. 当前用户必须具有动物管理权限
2. 不存在未完成治疗任务
3. 不存在进行中的转运任务
执行行为:
1. 逻辑删除动物对象
2. 失效馆舍关系
3. 失效饲养员关系
4. 记录审计日志
这样:
“删除动物”就不只是一个 DELETE SQL,而是一个完整的业务动作。
九、规则到底是谁检查?
这是这篇最重要的部分。
很多人会误以为:
AI 看到规则以后,自己想一想,然后决定能不能执行。
实际上,在正式系统里,不建议只靠 AI 自己判断规则。
更安全的设计通常是:
AI
负责理解用户意图
规则引擎 / 本体引擎 / 后端服务
负责最终校验规则
动作执行服务
负责真正执行操作
也就是说:
AI 可以理解规则、预判规则,但最终是否允许执行,最好由确定性的程序再次校验。
十、是不是所有规则都通过以后,才能执行动作?
对于“前置规则”,一般可以这样理解:
是的,必须满足动作的前置条件,动作才允许真正执行。
例如:
动作:
更换馆舍
前置规则:
规则1:
目标馆舍必须存在
规则2:
目标馆舍必须有剩余容量
规则3:
目标馆舍必须允许饲养该物种
规则4:
当前用户必须有动物调整权限
只有这些必须条件都通过以后:
PASS
PASS
PASS
PASS
才执行:
更换馆舍
如果有一个失败:
PASS
FAIL
PASS
PASS
动作应该被拒绝。
但要注意:
不是所有“规则”都一定是阻断规则。
有些规则可能只是:
警告规则
推荐规则
计算规则
动作执行后的校验规则
所以更准确的说法是:
动作的“强制前置规则”必须通过,动作才能执行。
十一、AI 是怎么检查规则的?
继续用:
把团团调到熊猫馆B。
完整过程可能是:
第一步:
AI理解用户想执行“更换馆舍”
AI查询本体:
query_ontology("更换馆舍")
返回:
动作:
更换馆舍
参数:
animal
target_house
前置规则:
1. 目标馆舍存在
2. 目标馆舍有剩余容量
3. 目标馆舍支持该动物物种
4. 操作者具有调整权限
然后 AI 可以先查询数据:
团团:
物种 = 大熊猫
熊猫馆B:
状态 = 正常
容量 = 5
当前动物数 = 4
允许物种 = 大熊猫
AI初步判断:
目标馆舍存在:通过
有剩余容量:通过
物种匹配:通过
但真正执行动作时,系统还会再调用:
execute_action(
action="更换馆舍",
animal="团团",
target_house="熊猫馆B"
)
这时候动作服务会再次执行确定性的规则校验:
checkPermission()
checkHouseExists()
checkCapacity()
checkSpeciesAllowed()
全部通过:
PASS
PASS
PASS
PASS
才真正更新数据库。
十二、为什么还要再检查一次?
因为 AI 的判断并不应该成为最终安全边界。
例如:
AI刚刚查到:
熊猫馆B剩余1个位置
但是就在 AI 准备执行的时候:
另一个用户已经把另一只熊猫调进去了。
此时真实状态变成:
剩余容量 = 0
如果只相信 AI 刚才的判断:
就可能产生错误。
所以正式系统通常应该:
AI:
理解 + 规划 + 预检查
后端:
执行前重新读取最新数据
规则引擎:
重新校验
全部通过:
执行动作
这和数据库事务的思想很像:
执行操作前,要以最新真实数据为准。
十三、所以一条安全的动作执行链应该是什么?
还是:
把团团调到熊猫馆B。
完整链路:
用户
↓
“把团团调到熊猫馆B”
↓
AI识别意图
↓
查询本体
↓
知道:
对象 = 动物
动作 = 更换馆舍
需要参数 = 团团、熊猫馆B
需要检查规则
↓
AI查询相关真实数据
↓
AI调用 execute_action
↓
动作服务重新检查规则
↓
规则全部满足?
├─ 否 → 拒绝执行,并返回原因
└─ 是
↓
调用 Function / Logic / API
↓
更新数据库
↓
更新对象关系
↓
记录日志
↓
返回执行结果
↓
AI
↓
告诉用户结果
这才是比较完整的:
AI + 本体 + 规则 + 动作 + 数据库
执行过程。
十四、本体动作和数据源为什么看起来没有直接关系?
因为很多平台会把层次拆开。
例如:
对象:
动物
↓
对象映射 / 数据管道:
animal 表
↓
动作:
更换馆舍
↓
动作行为:
Run Logic
↓
Logic:
检查规则 + 修改对象
↓
最终:
UPDATE animal
所以动作页面里不一定直接配置:
数据库地址
表名
SQL
因为数据源可能已经在:
对象映射
数据管道
数据连接
Function
Logic
OSDK
等其他地方完成了绑定。
这也是为什么:
看到动作,却看不到数据库连接,不一定说明动作没有落地。
很可能只是:
动作负责业务语义,数据源关联放在另外一层。
十五、那为什么不把所有东西都做成 RAG?
这个问题也很关键。
理论上,我们确实可以把动物数据写成文本:
团团是一只大熊猫。
团团目前住在熊猫馆A。
团团的饲养员是张师傅。
然后全部做向量化。
用户问:
团团住哪里?
RAG很容易找到:
团团目前住在熊猫馆A。
然后 AI 回答。
对于这种简单问答:
完全可以。
十六、RAG 擅长的是“找资料”
例如:
大熊猫每天应该喂几次?
答案可能在:
《大熊猫饲养管理规范.pdf》
这时候 RAG特别合适:
问题
↓
搜索相关文档
↓
找到相关段落
↓
交给 AI
↓
生成回答
所以:
RAG 很适合文档知识。
十七、本体擅长的是“理解结构化业务世界”
比如用户问:
张师傅现在负责多少只动物,其中有多少只住在熊猫馆?
这不是简单找一段文字。
它需要:
饲养员
↓ 负责
动物
↓ 居住在
馆舍
然后:
筛选
关联
统计
再比如:
把所有由张师傅负责、目前住在熊猫馆A的大熊猫迁到熊猫馆B。
这需要:
查对象关系
查真实状态
检查规则
执行动作
修改数据库
RAG 本身并不擅长完成这种:
精确业务查询 + 状态判断 + 动作执行。
十八、所以 RAG、本体、数据库分别负责什么?
可以这样记:
RAG
=
从资料里找相关内容
本体
=
告诉 AI:
业务里有什么对象
对象有什么属性
对象怎么关联
有哪些规则
可以做什么动作
数据库
=
保存现在真实业务状态
API / MCP / Function / Logic
=
真正查询或修改业务系统
AI
=
理解问题、规划步骤、调用这些能力
它们不是互相替代。
而是各干各的。
十九、一个完整 AI + 本体场景
用户说:
如果团团现在还住在熊猫馆A,就把它调到熊猫馆B,并通知张师傅。
系统第一次给 AI 的上下文可能是:
【系统提示】
你是动物园业务助手。
所有业务查询必须使用系统工具。
所有业务修改必须通过本体动作执行。
【工具】
query_ontology
查询对象、关系、规则和动作
query_zoo_data
查询真实业务数据
execute_action
执行本体动作
【用户】
如果团团现在还住在熊猫馆A,
就把它调到熊猫馆B,
并通知张师傅。
AI首先查询本体:
query_ontology(
"动物、馆舍、饲养员、更换馆舍、通知饲养员"
)
返回:
关系:
动物 → 居住在 → 馆舍
动物 → 由 → 饲养员照顾
动作:
更换馆舍
通知饲养员
更换馆舍前置规则:
目标馆舍存在
目标馆舍有容量
目标馆舍允许当前物种
操作者有权限
然后 AI 查询真实数据:
团团:
当前馆舍 = 熊猫馆A
物种 = 大熊猫
熊猫馆B:
状态 = 正常
剩余容量 = 1
允许物种 = 大熊猫
饲养员:
张师傅
AI判断:
用户条件满足:
团团确实在熊猫馆A
于是调用:
execute_action(
"更换馆舍",
团团,
熊猫馆B
)
动作服务再次检查:
权限:PASS
馆舍存在:PASS
容量:PASS
物种:PASS
全部通过以后:
更新数据库
团团:
熊猫馆A
→
熊猫馆B
然后继续执行:
execute_action(
"通知饲养员",
张师傅
)
最后 AI 回答:
团团已从熊猫馆A调整到熊猫馆B,并已通知张师傅。
二十、到这里,本体和 AI 的关系就完整了
本体不是 AI 的记忆。
本体也不是把所有业务数据直接塞进 Prompt。
更准确地说:
本体是 AI 可以查询的一套业务语义模型。
它告诉 AI:
这个业务世界里有什么
这些东西是什么
这些东西怎么关联
有哪些规则
有哪些动作
AI再去:
查本体
↓
理解业务
↓
查真实数据
↓
检查条件
↓
请求执行动作
↓
后端再次校验规则
↓
真正修改系统
二十一、为什么现在 AI 时代重新重视本体?
以前传统系统主要是:
程序员
↓
理解业务
↓
写代码
↓
访问数据库
很多业务知识实际上藏在:
程序员脑子里
需求文档里
代码里
数据库里
接口文档里
但现在我们希望 Agent 自己:
理解用户问题
查询多个系统
关联数据
执行操作
于是就出现一个问题:
AI 怎么知道企业自己的业务世界到底是怎么组织的?
本体就是一种解决方式。
它把原来散落的业务知识:
对象
属性
关系
规则
动作
结构化地统一起来。
二十二、是不是所有企业 AI 都必须用本体?
不是。
如果业务很简单:
几个接口
几张表
关系固定
AI只做简单问答
完全可以直接:
Prompt
+ MCP / API
+ RAG
不一定非要上本体。
本体真正开始有价值,通常是在:
系统很多
数据源很多
对象关系复杂
跨系统查询很多
规则很多
动作很多
多个 Agent 要共享业务语义
这种情况下。
二十三、最终可以把整个架构理解成这样
用户
↓
AI
↓
┌───────────────┼───────────────┐
↓ ↓ ↓
本体 RAG 工具
↓ ↓ ↓
理解业务世界 搜索资料 查/改系统
↓ ↓
对象 / 属性 / 关系 MCP / API
规则 / 动作 Function / Logic
↓ ↓
└───────────────┬───────────────┘
↓
数据库
↓
AI回答
其中:
AI
=
理解问题、规划任务
本体
=
业务世界说明书
规则
=
动作执行前必须满足的业务条件
动作
=
AI能够理解的业务操作
API / MCP / Function / Logic
=
动作真正执行的技术能力
数据库
=
真实业务状态
RAG
=
文档资料检索
二十四、最后用一句话总结本体
如果别人问:
什么是本体?
可以直接回答:
本体就是把一个业务领域里的对象、属性、关系、规则和动作统一定义清楚,形成一套机器能理解的业务模型,让 AI 和系统知道数据代表什么、怎么关联、什么情况下允许执行什么操作。
如果再简单一点:
本体就是给 AI 和系统用的一张“业务世界说明书”。
而 AI 和本体真正的关系是:
AI负责:
理解、规划、调用
本体负责:
告诉 AI 业务应该怎么理解
规则引擎 / 后端负责:
最终判断动作能不能执行
数据库负责:
保存和修改真实数据
这才是一套完整的:
AI + 本体 + 规则 + 动作 + 数据
的工作方式。
浙公网安备 33010602011771号