9 个问题带你认识本体(Ontology)及其应用

最近在和一些客户聊起 AI 应用时,经常会被问到一些“本体”的问题。

本文不讲复杂的术语,而是用几个最常见的问题,结合一些简单的领域用例,来帮助大家认识与入门本体。

读完本篇你一定不会成为本体专家,但你应该能听懂一场关于本体的讨论,至少能理解一个本体的应用场景。

让我们从最基本的问题开始:本体到底是什么?

01 本体到底是什么?

想象一个北京司机第一次来到南京,任务是把乘客送到南京南站。

但是TA还不能马上出发:TA不知道汽车站还是火车站、不知道哪条路单行,也不知道哪些通道禁止普通车辆进入。

所以它需要一张地图,需要图例看懂线路,还要遵守必要交通规则。

图片

AI 进入某个企业,面对的情况很相似:通用知识在这里失效了。

比如一个电信企业 AI 需要回答这样一个问题:

为什么我的手机号码无法订购5G套餐?

它的训练数据显然无法解释这个问题,也很难通过数据库或者 RAG 查询到结论 — 因为这需要理解这样的业务知识:

  • 手机号码代表一个用户

  • 用户的费用计入账户,账户可能欠费

  • 欠费账户对应用户的套餐变更请求不予受理

没有这样的业务知识,即使 AI 能够查询数据,也不知道查什么、沿着什么关系查、更无法判断为什么失败。

本体的作用,就是要把这些业务上的概念、关系、规则等告诉 AI — 让 AI 拥有一份企业业务世界的“导航地图”,掌握了这份地图,才可能安全到达目的地。

提到本体,很多人会想到 Palantir。但本体早已存在于人工智能和知识工程中,RDF、OWL 等标准也远早于今天的大模型。Palantir 没有发明本体。

Palantir Ontology 是本体的一种代表性产品实现并取得成功,从而让本体广受关注,但 Palantir 不是本体的起点,本体也非 Palantir 发明。

02 为什么到了 Agent 时代,本体更热了?

上一个问题说到,本体可以给 AI 一张企业业务地图。但为什么到了 Agent 时代,本体被提的更多了?

因为 Agent 有着完全不同于传统软件的使用方式。

过去,我们通过不同的入口进入OA、CRM、SCM等 — 基于菜单和固定流程的操作。字段解释、数据关联、业务规则,都靠代码来解决 — 就像那个新司机,虽然没有地图,但我给你把操作动作固化好,也一样能到目的地。

Agent 不一样。用户可以随时提出新的任务,Agent 要自主的理解意图并推进任务,且有着更高的确定性要求:

图片

简单说就是:

企业 Agent 任务的复杂性与高确定性要求,决定了它更需要一种精确表达业务知识的、统一的结构化“语言” - 本体。

比如,电信企业建设了多个不同的 Agent 系统,它们都要统一理解客户、账户、用户、产品和套餐等系列概念及其关系 — 但如果每个项目都重新编写提示或 Skill 来提供领域知识,不仅繁琐,而且很容易不一致。

而有了统一的本体,这些概念和关系等只需维护一份。

图片

不同 Agent 可以在权限范围内复用同一套业务含义。业务语义发生变化时,也不必逐个修改每个 Agent。

当然,本体也并不是 Agent 的标配。如果业务概念少、关系简单、各方理解一致,一份清楚的 Wiki、数据字典或接口说明也可能够用。

03 本体和数据库的差异在哪?它存数据吗?

一听到“用户、账户、订单、产品及其关系”,熟悉关系型数据库的人很容易产生疑惑:这些东西数据库里不是已经有了吗?

先看数据库与本体在本质上的区别:

数据库保存具体的业务数据(事实):

  • 客户C01名下有用户U05;

  • 用户U05使用号码138xxxx;

  • 用户订购产品P20,并通过账户A07付费;

  • 账户A07当前的账户余额是0;

本体定义的则是这些数据该怎样理解:

  • 客户、账户和用户是三类不同的业务概念;

  • 手机号码是一种资源,由用户使用;

  • 订购产品会产生订单;使用服务会产生账单;

  • 哪些关系可以继续推导出新的业务事实

简单的说:

数据库主要记录业务世界发生了什么;本体则解释业务世界本身。

图片

顺着这个思路还有两个常见问题:

数据库的 Schema 不能说明数据关系吗

的确,表结构、E-R图和数据字典本来就是理解系统的重要方式。如果系统比较单一、表名清楚、关系简单,它们可能已经够用。但问题是:

数据库 Schema 的设计往往是优先服务于系统实现的。

一个业务对象可能为了性能被拆到多张表;一些关系也可能藏在代码里(比如外键);同一个业务概念在不同系统中也可能有不同名称。

本体把这些分散的业务含义提取出来,用统一方法重新表示和连接。它不是否定数据库 Schema,而是在其上增加一层可跨系统共享的业务解释。

本体到底存不存数据?

答案是:通常情况下,不直接承担业务数据的存储。

本体的概念、关系和约束本身需要被保存。但至于“客户C01”、“产品P07”这类数据,会继续留在 CRM 等业务系统中。

本体通过映射与这些数据源连接 — “这个叫【用户】的业务概念在 CRM 数据库中保存在 users 表中”,类似这样。

因此,数据库仍是业务数据的权威来源。本体主要目的不是替代数据库,而是让分散的数据拥有一致的业务含义。

需要注意的是,一些用来存储本体定义的图数据库本身是允许存储业务数据的,比如 GraphDB。

04 本体和知识图谱什么关系?

说到复杂关系的表示,另一个很容易被联想到的概念是:知识图谱。

它们都有节点和连线,也都可以用三元组(类似“用户-订购-产品”这样的关系表达)定义,到底有什么不同?

其实它们的区别,与本体和数据库的区别本质上类似:

本体侧重概念层、语义层。

它定义业务世界中的类型、关系和约束。例如:

  • 5G套餐是资费套餐的一类;

  • 用户可以订购5G产品;

  • 用户的账单通过账户付费。

知识图谱通常侧重事实层。

它记录具体有哪些对象,以及这些对象之间已经发生的关系。例如:

  • 用户U05订购了产品P20;

  • “畅享299”套餐是“5G套餐”的一种;

  • 用户U05的账单由账户A07付费。

尽管都可以写成“主语-关系-宾语”的三元组。但两个表示的层次不同:

图片

这很好理解,类似面向对象中的“类”和“对象”的关系。

但是两者必须一起出现吗?

答案是不一定。

一个小的知识图谱可以没有严格的本体定义,只使用简单的节点和关系。但随着图谱越来越大,不同团队的理解可能出现分歧,这时会采用本体来统一含义。

本体也可以脱离知识图谱单独存在,仅用于业务建模、系统设计和定义数据标准;但不能用于具体事实的判断和推理。

两者也可以配合使用:本体提供概念和规则,知识图谱(可能配合关系型数据库)保存具体事实。 本体让知识图谱数据更容易被一致地理解,知识图谱则让本体能够用于查询和推理。

05 本体怎么表达呢?有哪些标准?

接下来的问题是:这些本体的定义怎样写出来,机器才能读懂?作为初学者,我们可以先了解下面几个语义表达的标准。

RDF/RDFS:定义概念及其基本关系

RDF 提供最基础“主语—关系—宾语”的三元组结构;RDFS 在此基础上补充类、属性、上下级等语义。例如,我们想在本体中表达:

“用户”和“产品”是两个业务概念,“订购”是从用户指向产品的一种关系。

关系图可以简单表示成:

用户 - 订购 - 产品

在正式的RDF/RDFS表示中,可能是这样定义(简化):

# 定义两个业务概念
tel:用户 rdf:type rdfs:Class .
tel:产品 rdf:type rdfs:Class .

# 定义“订购”关系:
# 关系从“用户”指向“产品”
tel:订购
    rdf:type rdf:Property ;
    rdfs:domain tel:用户 ;
    rdfs:range tel:产品 .

它定义的是业务概念之间的关系,并不是说某个具体用户已经订购了某个产品,更不表示所有用户都订购了所有产品。

OWL:定义更复杂的逻辑关系

如果还要表达传递(服务A包含B,B包含C,则A包含C)、互斥(用户不能既是预付费又是后付费)、限制等逻辑语义,就需要 OWL。例如:

一张产品订单必须关联一个,而且只能关联一个目标产品。

那么大致的定义方式如下:

# 每个产品订单必须关联且仅关联一个产品
tel:产品订单
    rdfs:subClassOf [
        rdf:type owl:Restriction ;
        owl:onProperty tel:目标产品 ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass tel:产品
    ] .

这里描述的是针对产品订单的一个限制:

  • onProperty 指出限制针对“目标产品”这个属性

  • qualifiedCardinality 1表示必须有且只能有一个

  • onClass表示目标产品的类型是“产品”

其他一些常见的标准有:

  • SKOS:主要用于统一术语定义。比如:“增值业务”和“VAS”一个意思

  • SWRL:用来在 OWL 基础上定义业务规则,从而能够基于已有事实推理出新事实。比如:“欠费账户 -> 不可受理的订单”

  • SHACL:用来检查数据是否符合定义的约束,类似程序中的校验规则

  • SPARQL:本体中的SQL,用来查询和更新 RDF

本体涉及的标准较多,有一定门槛,而且同一业务语义有时可以用不同方式表达。好在实际项目中借助建模工具和 AI ,一般不必手写复杂语法;但了解各项标准大致解决什么问题是有必要的。

06 一个最小的领域业务本体长什么样?

在了解了本体的一个表达“语言”后,现在我们把语法放到一边,来搭建一个最小的电信客户运营领域的本体,建立更具体的印象。

基本概念和关系

首先来画这个本体的骨架 — 业务概念与关系图(部分):

图片

注意图中没有“用户U05”这样的具体数据,它描述的是电信客户运营的业务世界的部分结构。

一个可用的本体还需要为各类概念定义必要的数据属性,例如资源的状态、账户的余额、订单的创建时间等,并说明这些属性的类型、是否必填等。

但你不必复制数据库里的全部字段,只需要纳入那些对业务理解、查询、校验和推理有价值的属性,否则就变成另一份数据库设计。

此外,还可以补齐下面的一些定义。

层次与关系约束

比如,我们在本体中进一步定义:

  • 个人客户、企业客户、VIP客户都属于客户

  • 个人客户和企业客户必须互斥

  • 新装订单、变更订单和退订订单都属于订单

  • 每个产品采用一个资费套餐

  • 每张账单包含至少一个费用项

等等。这些规定描述的也是业务本身,而不是某一条具体业务数据。

数据校验规则

可以定义一些针对事实数据的检查规则。比如:

  • 一个用户不能使用多个号码

  • 手机号码必须符合某种格式

  • 订单产品价格必须 >= 用户等级最低价

数据校验规则与前面的关系约束在某些时候会很像(比如,每个账单至少要有一个费用项);但数据校验规则是用来校验具体数据;而关系约束只是用来描述一种固定的关系。

业务控制规则

定义两条可以推导业务结论的规则:

  • 用户订购的产品采用5G资费套餐,则该用户被识别为5G用户

  • 用户的费用账户欠费,且提交了任意订单,则该订单不予受理

至此,这个小本体已经包含概念、关系、层次、约束、数据校验和条件规则等。

如何测试建模

初学者可使用 WebProtégé 在浏览器中创建类、属性和关系,无需安装软件;需要本地推理和更多插件时,可使用Protégé Desktop。模型可以导出为Turtle、RDF 或 OWL 文件,或者存入专门的数据库,如 GraphDB。

我最建议的方式是:

先让 AI 根据上述定义生成模型初稿,然后导入Protégé检查。AI可以代写语法,但具体是否符合实际业务,仍需要业务人员确认。

我们把上面的本体用AI生成并导入 Protégé:

图片

07 这个最小本体怎么在 Agent 中使用?

搭好了一个本体模型,下一个问题自然是如何使用。你不能简单的把一个 OWL 文件或图数据库交给 Agent,就指望它立刻就无所不能。

首先的问题是:你需要把本体中的概念与企业系统“连接”起来。比如:

号码资源对应到资源系统中的数据,账单来自计费系统,订单则在CRM系统中产生 — 本体负责业务语义;业务系统负责提供数据;Agent 负责控制逻辑。

现在我们假设有一个 Agent 任务:

给号码 13688888888 的用户更换 299 元 5G 套餐;如果不能办理,请告诉我原因。

任务看似简单,但实际涉及多个业务对象间的复杂关系。号码资源、用户、产品、资费、订单及其关系和相关约束。

Agent 按照如下流程结合本体做处理:

图片

简单说明如下:

  1. LLM理解用户意图
    LLM 可以判断,用户希望为指定手机号码办理套餐变更,目标是299元的5G套餐,需要启动订单流程。

  2. 触发订单前置检查
    根据约束(如Skill、工具描述、Workflow定义),Agent 必须进行前置的订单检查,于是需要调用“订单前置检查”的工具。

  3. 订单前置检查工具

完成如下一系列的任务:

借助本体对齐业务含义

此时,Agent 将自己的理解与本体进行对齐:

  • 手机号码属于号码资源,由用户使用;

  • “299元套餐”属于资费套餐;

  • 资费套餐由产品采用,而订单办理的是产品。

Agent 据此确定关系路径和需要取得的数据:

号码资源 ← 使用 — 用户 — 费用计入 → 账户

用户 — 提交 → 订单 — 办理 → 产品 — 采用 → 资费套餐

这些路径不是 LLM 依靠常识就能可靠得到的,属于企业自身业务定义。

从业务系统取得事实数据

基于数据映射规则(本体可以定义),调用业务系统接口查询到:

  • 号码 13688888888 由用户 U05 使用

  • U05 的费用账户是 A07,当前处于欠费状态

  • 299 元资费套餐对应产品 P299

这些具体数据来自业务系统,不是本体推理出来的。

装入事实并执行本体推理

将事实数据按本体关系组织起来,增加一个待办订单 O01,注入本体。

本体推理机(开源或者数据库内置)先通过数据校验规则检查数据完整性,然后推理得到:

  • A07 属于欠费账户

  • U05 的费用计入 A07

  • U05 准备提交 O01

  • 因此O01属于不可受理订单

在完成以上逻辑后,工具返回结果给 Agent。

4. Agent 决定是否执行

Agent 根据推理结果,决定不启动真实的订单流程,而是回复:

号码13688888888对应的费用账户当前欠费,按照订单受理规则,暂时不能办理套餐变更。可以先查询欠费账单或完成缴费。

在这个过程里,我们可以看到一个大致的分工:

  • LLM 负责听懂用户的大致意图

  • 本体负责对齐业务概念,理解关系

  • 业务系统负责提供真实数据

  • 本体推理负责得出确定性结论

  • Agent 负责把这些能力串联起来

所以,本体在这里并不是替代 LLM 思考,而是补上 LLM 仅凭通用知识无法可靠掌握的业务知识。

08 如何判断我的 Agent 是否需要本体?

每次新的技术概念出现,很容易出现“拿着锤子看谁都像钉子”的情况 — 拿本体去套用所有的 AI 应用。

所以在你决定采用本体之前,先停下来问自己几个问题:

图片

不同系统中的相同业务概念是否存在歧义?

例如,企业 CRM 系统中的“客户”指签约主体;而另一套客服系统中的”客户”可能就是来电人。如果只是帮助员工理解这些术语,一份数据字典或 Wiki 可能足够;但如果多个 Agent 系统需要对齐这些业务概念,本体就会体现出价值。

复杂的关系是否需要跨场景反复使用和推理?

查询某个账户的余额,直接调用查询工具即可完成 — AI 不需要理解账户与其他概念之间的关系。

但如果要回答“某个号码为什么不能更换5G套餐”,就需要连接号码资源、用户、账户、产品、资费和订单,再根据订单规则得出结论。

如果只有这一个复杂场景,你可以用聚合接口封装这些查询和判断;

但如果这组业务关系还要被多个 AI 场景反复组合使用:比如 AI 要回答:

  • 某个号码的费用由哪个账户支付;

  • 一个欠费账户会影响哪些用户;

  • 某个用户正在使用哪些产品,如何计价;

  • 一款产品的资费调整会影响哪些用户和订单。

这时候就可以考虑本体 — 这些场景都需要理解同一批业务知识。

同一套业务知识是否需要被多个 Agent 系统共享?

客服 Agent、营销 Agent 和风控 Agent 等,都可能需要理解客户、用户、账户和产品等概念及区别,也都可能需要处理“用户如何找到付费账户”、“订单如何关联产品”等关系。

如果每个 Agent 都通过提示词/Skill 等分别解释一遍,不仅重复,也很难维护一致性;此时用本体提供共享的业务知识就很有意义 — 统一建模、集中维护。

业务判断是否需要说明来源和依据?

这来自于 AI 应用中常见的可解释性、可追溯性问题 — 当你让 AI 润色一篇文章,你可以不关心它为什么这么写;但当 AI 告诉你“此类业务办理失败”,你一定想得到一个确切的答案。

因此,在关键业务环节,借助本体来理解与判断,可以让 AI 更确定的说出完整的决策证据和推理链。

因此,使用本体不只是因为“业务复杂”,更不是“技术先进”。你需要仔细评估上述问题的答案,再结合自身的客观条件(建模与维护能力等)作出决策。

09 企业如何开展本体建模和应用?

即使你决定采用本体,也不必一开始就建设覆盖全部业务的“大本体”。更实际的做法是选择一个价值明确的场景,从具体业务问题出发,边建模、边连接数据、边验证效果,构建出“最小可用本体”后,再尝试扩大业务场景和领域:

图片

如何构建一个“最小可用本体”?

1.选择业务场景做“切入口”

选择一个范围清晰、价值明显的业务领域,确定一个具体的业务问题作为“切入口”,构建“最小可用本体”。

例如,选择“套餐变更”这个场景,构建 Agent 应用能力。

2. 列出业务能力问题

明确 Agent 应用必须回答哪些问题。比如:谁在使用这个号码?费用由谁支付?当前订购了什么产品?当前什么资费?为什么不能办理某个套餐?

这些业务能力问题决定模型需要包含什么,也用于后续验收。

3. 统一业务概念和边界

让相关业务部门与专家共同确认评审术语的含义、边界和例外。例如,“客户”、“用户”、“订单”、“账单”分别指什么、有哪些业务关系、个人客户与企业客户是否互斥、套餐变更有哪些业务约束条件、VIP 客户有什么特权等等。

4. 建立最小的业务知识模型

只定义回答业务能力问题所需的概念、属性、关系、约束和规则,同时保留必要的标识、来源与有效时间。

最小不是越少越好,而是刚好能够支撑一个完整的业务场景所需要的业务能力;覆盖所有相关的业务知识。

5. 映射真实的业务数据来源

明确每个业务概念的数据来自哪个系统、通过什么接口取得;以及同一概念存在多个可能的来源时,以哪个系统为准。

例如,账单来自计费系统;但用户信息与关系来自CRM系统。

6. 从只读应用开始拓展能力

先让应用基于本体完成查询、关联、判断和原因解释类的业务能力;等准确率稳定后,再逐步开放低风险、可审批、可回滚的业务操作能力。

例如,可以先让 Agent 学会分析订单的影响,再考虑允许它提交订单。

7. 用业务结果验收“最小可用本体”

本体只是手段,不是目的。因此验收不要只统计建立了多少业务概念和关系,更多的要看业务处理性能、判断准确率等是否得到改善。

而业务负责人则需要持续确认概念和规则;架构师负责维护模型、数据映射和版本;源系统负责人保证数据质量等。

当一个小模型真正进入业务流程并产生效果后,再沿着相邻问题逐步扩展。

先向同一个业务领域内的其他不同业务场景与流程扩展,纵向整合本体模型,最终构建出本业务领域的完整模型;

接着可以尝试打破领域的边界,实现横向跨领域的语义贯通。比如,不再满足于客户运营,而会与市场营销、产品规划等领域本体进行连接和对齐;

总的来说,本体的价值,就是画一张人和 AI 都能看懂的业务地图 — 适合业务概念多、关系复杂、系统林立的企业应用环境。

但本体不是万能药,更不应为了追逐技术热点轻易搞“大工程”。认真评估业务需求、数据基础和模型维护能力,量力而行,从小切口场景起步,用业务效果验证价值,再逐步迭代演进。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值