Zhangjian He
← Blog

英伟达 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

问答返回的 SQL 和实际结果