英伟达 Auto Ontology 体验
本页目录
本文记录的是 2026 年 11 月 11 日的一次本地体验,使用官方提供的 Wide World Importers 示例库,场景包含客户、订单、订单明细和商品,详细配置如下:
| 项目 | 本次配置 |
|---|---|
| 应用版本 | Auto Ontology 1.2.0 |
| 数据来源 | Wide World Importers,PostgreSQL |
| 大语言模型 | nvidia/nemotron-3.5-lightning-30b-a3b |
| 向量模型 | nvidia/nemotron-3-embed-1b |
| 体验入口 | 本地 Web 界面 |
Auto Ontology是什么
先想一个很简单的问题:2016 年每个月有多少笔销售订单?
业务人员知道自己想问什么,但数据库里可能同时存在销售订单、采购订单、订单明细,还有下单日期、预计交付日期等字段。Agent 要回答这个问题,需要先确定“销售订单”对应什么,再确定按哪个日期分组,以及一笔订单应该算一次,还是每条订单明细都算一次。
这些选择会直接改变最终的数字。Auto Ontology 面向的就是数据库与业务含义之间的这段连接。
Auto Ontology是一套开源的语义上下文基础能力,可以从企业元数据建立本体,组织实体、指标和关系,并通过接口提供给 Agent 使用。项目也带有 Web 界面,可以浏览数据目录、维护术语、探索关系和进行自然语言查询。
连接数据源并检查范围
进入 Settings → Connections,创建连接,选择 PostgreSQL,填写连接参数并进行测试,还可以通过Allowlist 和 Denylist 设置表的纳入与排除规则,限定接入范围。
连接成功后,Data 页面里开始出现数据库、Schema 和表。这次选择客户、订单、订单明细和商品相关数据,实际接入了四张表和一个客户视图。连接完成后,可以在 Data 页面检查确认需要的数据是否已纳入。

使用语义编译生成术语及其属性、关系
语义生成的入口在 Settings → Semantic Compilation。这次新环境里的开关默认关闭,需要手动开启。
开启后,系统开始处理接入的数据,为其生成术语、属性和关系。成功的这一轮大约用了 13 分钟,期间术语(Term)逐步出现在页面上。
自动生成的五个术语是 Customer、Customers、Order Line、Purchase Order 和 Stock Item。两个客户术语分别来自客户表和那个同名视图,订单术语的命名则出现了一个需要人工处理的问题。
人工修正术语
打开 Terms 中的订单术语,页面显示的名称是 Purchase Order,也就是采购订单。但它绑定的是销售订单表,描述里写的也是 sales order。

这就是一个很具体的人工审核场景。模型已经找到了相应的数据,也生成了一段像样的描述,但标题没有准确表达业务含义。如果后续用户搜索“销售订单”,这个名称至少会增加理解成本。
核对来源以后,这个术语应该改为 Sales Order。这次操作中,我先检查并认证了下面的日期属性,再保存了这个名称修改。
从这个例子可以看出,自动生成首先解决的是从哪里开始建模的问题。有了候选术语,维护者可以沿着来源检查,而业务含义是否准确,仍然要由人判断。
核对认证业务属性
术语下面还有 Column Attributes。打开 Order Date,可以看到订单日期的描述,以及它关联的物理字段 orders.orderdate。
这一步对问答很关键。用户说“每个月的订单”,系统需要知道月份来自下单日期。若选成预计交付日期,SQL 可能照样执行成功,但回答的已经是另一个问题。
检查对应关系后,我把 Order Date 的状态从 Pending Approval 改为 Certified。

这次只认证了这一个属性。修改名称后的 Sales Order 显示为 Partially Certified,其余内容仍需要继续检查。
这个页面将来源、含义、状态放在一起,维护者能看出哪些内容是刚生成的,哪些已经有人检查过,也能沿着业务属性找到实际字段。至于认证状态如何影响不同 Agent 的取用策略,还需要结合具体配置进一步验证。
Exploration探索相关概念
编译完成后,进入 Exploration,搜索 Sales Order,可以看到它关联的 Customers、Order Line 和 Stock Item。
这里的节点表达的是业务概念及其关系。如果以后要问“某类商品对应哪些客户”,这些关系可以为寻找相关数据和连接路径提供上下文。
图谱初始视角不太容易看清,重置和调整缩放后才看到完整节点。相比在画布上寻找节点,搜索术语再打开关联列表,体验更直接一些。
用自然语言提问
完成这些检查以后,回到 Chat,输入:
2016 年每个月有多少笔销售订单?请按月份升序列出。
页面依次展示问题分类、问题理解、候选检索、候选准备和 SQL 构建等阶段,随后进行 SQL 与意图校验,再执行查询。

这次问答从提交到最终保存结果约用了 5 分 53 秒,其中包含模型校验阶段的等待和重试。
这次检索找到了 Order Date 等属性,最终生成的 SQL 如下,仅调整了排版:
SELECT
EXTRACT(MONTH FROM orderdate) AS month,
COUNT(orderid) AS sales_order_count
FROM wideworldimporters.sales.orders
WHERE EXTRACT(YEAR FROM orderdate) = 2016
GROUP BY EXTRACT(MONTH FROM orderdate)
ORDER BY month ASC;
这个查询用了销售订单表,以订单日期限定 2016 年,再按月份统计订单数量。orderid 是订单表的主键,每张订单只计数一次,也没有因为连接订单明细而重复计数。
返回结果是:
| 月份 | 销售订单数 |
|---|---|
| 2016 年 1 月 | 1944 |
| 2016 年 2 月 | 1706 |
| 2016 年 3 月 | 1969 |
| 2016 年 4 月 | 1951 |
| 2016 年 5 月 | 2047 |
