Featured image of post AI Agent 时代的本体(Ontology):没人聊透的语义层

AI Agent 时代的本体(Ontology):没人聊透的语义层

每个 AI Agent 工程师最终都会撞上同一堵墙:LLM 几乎理解你的领域,但就是差那么一点。

它分不清「活跃客户」和「已流失客户」。它判断不出合规审查和欺诈调查的区别。它幻觉出你业务中根本不存在的关联关系——比如认为一张发票可以同时属于两个不同的订单。

解决方法不是更大的模型或更精妙的 prompt。是本体(Ontology)——AI 史上最古老也最被误解的工具。

本体到底是什么?

本体的学术定义是:「对一个共享概念化的、形式的、显式的规格说明」

用工程语言翻译一下:本体定义了哪些类型的事物存在(Customer、Order、Invoice 这些概念),它们如何关联(Customer Order,Invoice 属于 Order),以及什么规则在约束它们(Invoice 必须引用恰好一个 Order,Customer 至少有一个联系方式)。

每个企业其实已经有一个「本体」——只是散落在数据库 schema、API 契约、Confluence 文档和团队成员的脑子里。把它变成显式的、机器可读的形式,就是本体工程做的事。

核心思想:TBox vs ABox

这个区分来自 1980 年代的知识表示理论,是理解本体最重要的概念:

层级 是什么 类比
TBox(术语层) Schema —— 类、属性、公理 建筑的蓝图
ABox(断言层) 实例 —— 符合 schema 的实际数据 房间里的家具

你的本体就是 TBox。你的知识图谱(或数据库、向量存储)是 ABox。

大多数产品把这两层打包在一起——Palantir Foundry 就是一个整体,Google 的 Knowledge Graph 也混合了二者。但作为 AI Agent 工程师,在思维上保持这个区分至关重要:本体告诉你的 Agent 什么东西可以存在,数据告诉它 什么东西确实存在

语义网技术栈速览

本体工程建立在一套分层技术栈上,今天很多 AI 工程师正在重新发现它:

RDF(资源描述框架)
  → RDFS(RDF Schema)
    → OWL(Web Ontology Language)
      → SPARQL(查询语言)

RDF 是数据模型——万物皆为三元组:主语 → 谓词 → 宾语,每个元素用全局唯一的 URI 标识。这是最简单的表示方式:(Alice,worksFor,AcmeCorp)

RDFS 增加了基本的 schema 构造:rdfs:subClassOf(子类)、rdfs:domain(定义域)、rdfs:range(值域)。你可以说「Manager 是一种 Employee」。

OWL 是真正的力量所在。它增加了一整套逻辑公理:不相交性(Invoice 不是 Customer)、基数约束(Order 至少有一条 LineItem)、属性链(如果 X 拥有 Y 且 Y 包含 Z,则 X 拥有 Z),以及用集合运算(并集、交集、补集)构建的复杂类表达式。

SPARQL 是查询语言——相当于 RDF 世界的 SQL。它能做图模式匹配、属性路径遍历、跨多个本体的联邦查询,以及用 CONSTRUCT 实时构建新的 RDF 数据。

2026 年的三种「本体」(它们说的根本不是一回事)

「本体」这个词已经变得极度危险地过载了。市场上存在三种截然不同的产品化路径:

1. W3C OWL/RDF 本体(经典路线)

这是本体最原始的血统——形式化、开放世界假设、面向推理和互操作。工具链以 Protégé(Stanford 的开源本体编辑器)为核心,你可以定义类、属性、约束,然后用推理器(HermiT、Pellet)自动推断隐含知识。

适合的场景:医疗健康(SNOMED CT、UMLS)、生命科学(Gene Ontology)、出版(BBC 本体)、以及任何逻辑一致性跨组织互操作比速度更重要的领域。

局限性:开放世界假设(没有陈述的事不代表不成立)与大多数企业的封闭世界数据习惯冲突。OWL 推理在大规模场景下计算代价极高。

2. Palantir 本体(运营化语义层)

Palantir Foundry 推广了一个完全不同的本体概念:本体作为运营化语义层,位于原始数据和业务动作之间。在 Palantir 模型中,本体对象包含:

  • 类型(类)
  • 属性(计算或原始值)
  • 链接到其他对象(关系)
  • 可执行的动作(操作)

关键创新:Palantir 本体是双向的。你不仅查询它——你通过它写回。每个本体对象代表一个现实世界的实体(一个病人、一辆坦克、一个供应链节点),操作该对象会触发更新物理世界的工作流。

这就是为什么 Palantir 称其本体为「操作系统的智能层」。对 AI Agent 而言,这个模型比经典 OWL 相关得多:Agent 操作于本体对象之上,而不仅仅是通过本体对象查询。

3. SQL 本体(虚拟化路线)

更新兴的一派将本体定义为现有关系数据仓库之上的虚拟语义层。工具如 dbt Semantic Layer、Cube 和各种「语义指标」产品,将业务概念描述为可复用的 SQL 维度和度量。

这种方法非常务实:不需要新数据存储,不需要 RDF,不需要推理器。本体只是一个 YAML 文件,将业务概念(如「月度经常性收入」)映射到 SQL 查询。Agent 查询本体,本体翻译成数据仓库查询。

适用场景:任何已有数据仓库、需要 Agent 用业务语言对话但不想重新架构存储的企业。

为什么本体现在对 AI Agent 如此重要?

深度学习时代本体一度失宠。符号 AI 被看作「旧派」。但钟摆正在剧烈摆回。

GraphRAG:结构化胜过向量

微软的 GraphRAG(arXiv:2404.16130)揭示了一个根本性洞察:向量检索找到语义相似的内容,但保留了零关系结构。GraphRAG 沿着实体-关系路径检索,为 LLM 提供结构化的证据链,而非扁平文本块。

但关键前提是:GraphRAG 需要本体。没有定义实体类型和关系类型的 schema,实体抽取产生噪音,图遍历也没有有意义的约束。今天每个严肃的 GraphRAG 实现都从本体设计开始。

MCP Tool Schema:未被察觉的本体

每一个 MCP 工具定义都是一个微型本体

{
  "name": "send_invoice",
  "parameters": {
    "type": "object",
    "properties": {
      "customerId": {"type": "string"},
      "amount": {"type": "number"}
    },
    "required": ["customerId", "amount"]
  }
}

它定义了:什么是 Customer(有 ID 的实体),什么是 Invoice(有金额的实体),以及它们之间的关系(Invoice 发给 Customer)。这就是本体——不管你叫不叫它这个名字。

当你的 Agent 有 50+ 个 MCP 工具时,那些 schema 中隐含的本体必须保持一致。冲突的 schema(是 customer_id 还是 customerId?「User」=「Customer」吗?)会让 LLM 困惑,导致工具选择失败。

Agent 记忆与世界模型

最雄心勃勃的 Agent 架构正面临一个经典 AI 已经解决过的问题:如何表示 Agent 对世界的理解?

短期上下文窗口、长期向量存储、结构化事件记忆——每一种都在与本体的核心命题搏斗:

  • 什么算「任务」vs「步骤」vs「动作」?
  • 「目标状态」vs「当前状态」如何表示?
  • Agent 遇到过的实体之间有什么关联关系?

形式化的本体——尤其是下面要介绍的 AgentO——提供了现成的答案。

更瘦的 Agent 建立在更聪明的底座上

Neo4j CEO Emil Eifrem 一句话点出了架构变迁的精髓:「更瘦的 Agent,更聪明的底座」。不要把领域知识硬塞进 Agent 的 prompt(胖 Agent 反模式),而是把它外部化到本体层。Agent 变成一个轻量的编排壳,查询本体来获取上下文、规则和关系路径,然后采取行动。

这正是 MCP 正在启用的模式:工具和数据源作为服务,Agent 作为轻量规划器。本体就是终极的「聪明底座」——它给 Agent 确定性的知识,让它不必幻觉业务逻辑。

工具全景(2026)

本体编辑器

工具 类型 最适合
Protégé 桌面 GUI(Stanford) 严肃的 OWL 本体建模、可视化、推理
TopBraid Composer 商业 IDE 企业级本体开发,支持 SHACL 验证
VocBench 网页端 协作式本体编辑,SKOS 词库管理

Python 库

用途
Owlready2 将 OWL 2.0 本体加载为 Python 原生对象,修改、保存、用内置 HermiT/Pellet 推理。ORM 般的体验,某些图负载性能超过 Neo4j
RDFLib Python 核心 RDF 库。SPARQL 查询、三元组存储、序列化(RDF/XML、Turtle、JSON-LD)
FunOWL 处理 OWL 函数式语法的 Python 库
rdflib-jsonld JSON-LD 处理的 RDFLib 扩展

三元组存储 / 图数据库

数据库 类型 推理支持
GraphDB(Ontotext) 原生 RDF 完整 OWL2 RL/QL 推理、SPARQL
Stardog 企业级 RDF OWL2、SWRL 规则、路径查询
Neo4j 属性图 不支持原生 RDF/OWL,可通过 neosemantics(n10s)插件映射
AllegroGraph RDF 三元组存储 OWL2 推理、SPARQL、联邦查询
Amazon Neptune 云端 RDF + 属性图 SPARQL + 基础 OWL 推理
Virtuoso 多模型 RDF/SPARQL、SQL 混合

前沿:本体 + MCP

Open Ontologies MCP Server——35 个专用工具的 MCP 服务器,让 AI Agent 动态生成、验证、查询和迭代 OWL/RDF 本体。这是一个真正的范式转变:不再是人类在 Protégé 里编辑本体,Agent 自己成为本体工程师,随着学习持续演化和维护语义模型。

Palantir Ontology MCP——将 Palantir 本体暴露为 MCP 工具。Agent 可以通过标准 MCP 查询本体对象、遍历链接、调用本体动作。本体就是 Agent 的 API。

动手实践:构建本体驱动的 Agent

用一个客户支持 Agent 的例子来演示。

第一步:定义 OWL 本体(TBox)

用 Owlready2:

from owlready2 import *

onto = get_ontology("http://example.org/support.owl")

with onto:
    class Customer(Thing): pass
    class Product(Thing): pass
    class Ticket(Thing): pass
    class Incident(Thing): pass

    class has_product(Customer >> Product): pass
    class reports(Ticket >> Customer): pass
    class involves(Ticket >> Product): pass
    class resolves(Incident >> Ticket): pass

    # 规则:企业级客户的工单自动标记为紧急
    class UrgentTicket(Ticket):
        equivalent_to = Ticket & (reports some (
            Customer & has_product some EnterpriseProduct))

第二步:加载实例(ABox)

with onto:
    alice = Customer("CUST001")
    acme_product = Product("PROD-ENTERPRISE")
    alice.has_product.append(acme_product)

    ticket_123 = Ticket("TKT-123")
    ticket_123.reports = alice
    ticket_123.involves = acme_product

第三步:运行推理器

with onto:
    sync_reasoner()  # HermiT 自动推断 ticket_123 是 UrgentTicket

第四步:通过 MCP 暴露给 Agent

def resolve_ticket(ticket_id: str) -> str:
    ticket = onto.search_one(is_a=Ticket, iri=f"*{ticket_id}")
    if isinstance(ticket, UrgentTicket):
        return "ESCALATE — 企业客户,活跃 SLA 违规"
    return "ROUTINE — 标准队列处理"

Agent 调用 resolve_ticket("TKT-123") → 本体推理 → Agent 获取结构化输出 → Agent 行动。没有幻觉,没有对业务规则的猜测。

Agent 自身也需要本体:AgentO

AgentO(Agentic AI Ontology)是一个新兴的 OWL/RDF 本体项目,形式化描述了 Agent 系统的核心概念:Agent、Task、Goal、Workflow、Capability、Interaction。这是第一次严肃尝试为 Agent 系统本身建立共享本体。

为什么重要:如果每个 Agent 框架对「agent」「tool」「task」的定义各不相同,跨平台互操作就是空谈。AgentO 提供了一个 Rosetta Stone。

GitHub 仓库:agentic-patterns/agentic-ai-onto

什么时候不要用本体

帮你省掉一些不必要的痛苦:

  • 你只有一个简单的 Agent,工具少于 10 个。工具 schema 里的隐式本体已经够用。别过度设计。
  • 你的领域变化比你更新本体的速度快。本体维护是真实的工作量。
  • 你的数据全是非结构化文本,关系稳定。向量搜索可能足够。
  • 你需要在 Web 规模做 OWL 推理。目前还不存在这样的方案。三元组存储的容量极限远低于 PB 级数仓查询。

应该在什么时候用本体:你的 Agent 基于结构化业务逻辑做决策;你的领域有稳定的实体类型和关系模式;你需要关于关系的有保证的推理;或者你在构建需要共享世界模型的多 Agent 系统。

结语

本体不是一个 buzzword。它是每个 AI Agent 工程师都会撞上的那个问题的解决方案:LLM 不知道你的领域。给它更多上下文并不会解决这个问题——因为上下文是数据,不是结构。

LLM 真正需要的是一张地图——显式的、机器可读的、逻辑一致的——关于你领域的实体和关系。那就是本体。

讽刺的是:经过 30 年的 AI 历史——从专家系统到语义网到深度学习再到 Agentic AI——我们正在重新发现,在有依据的推理这件事上,结构打败了规模。钟摆摆回了本体。聪明的 Agent 工程师正在抓住这波浪潮。


Chee Cheng 在 MCPZEROClawGuard 构建 Agent 基础设施。关注本体、Agent 与它们之间的语义层。

By AI博士 万戈