NVIDIA Open-Sources Auto Ontology for Agent Data Semantics
NVIDIA has released Auto Ontology, an open-source library designed to build a unified semantic context layer for enterprise agents. By exposing validated business definitions and data lineage via MCP, CLI, and API, it addresses accuracy issues caused by semantic ambiguity in database queries, supporting automatic ontology generation from metadata with continuous improvement.
Full Report
Contents5 sections
Auto Ontology
智能体能够检索文档并查询数据库,但可靠性是制约智能体分析能力的关键瓶颈:如果数据结果错误,那么更快得出的营收指标毫无价值。智能体需要一个上下文层,用于告知它们数据位于何处、其含义是什么、是否应使用、如何使用、来源为何以及相似项有哪些。NVIDIA Auto Ontology 是一个开源库,它基于企业元数据构建该上下文层,协调不同系统间的定义差异,并通过 MCP、CLI 和 API 向任何智能体框架(agent harness)暴露这些信息。它与现有客户已拥有的语义模型形成互补。
它使开发者能够:
- 发现:从元数据生成企业本体;连接现有的本体和语义模型;构建适用于 AI 的知识图谱。
- 落地:为智能体提供关于指标、实体和关系的可信业务含义;协调不同系统间不一致的定义。
- 验证:根据认证定义和数据血缘检查生成的查询;在每次回答中返回数据来源信息。
- 暴露:通过 MCP、CLI 和 API 向任何智能体框架提供上下文服务。
- 学习:将认证的修正和使用反馈融入本体,使共享上下文随着每一次提问而不断优化。
基准测试
若要运行诸如 BIRD 这样的文本转 SQL 基准测试,请参考 ontology SQL evaluation repository。
<p> <img src="./docs/assets/arch.png" alt="Auto Ontology Architecture" width="800"> </p>许可与贡献。 Auto Ontology 依据 Apache License 2.0 分发。本项目捆绑、链接或以其他方式使用的第三方开源组件列于
THIRD_PARTY_NOTICES.md。本项目目前不接受外部贡献。
核心特性
- 结构化数据的自然语言查询 — 问题被转换为 SQL 并在连接的数据库中执行,由 NVIDIA NIM 提供支持。
- 关系型数据源之上的语义目录 / 本体层,存储在 Postgres 中,与其所描述的目录并存。
- 身份验证与 RBAC — 使用 Better Auth。
- Web UI,支持聊天、分析、数据目录、分析和设置功能。
- 灵活的部署方式 — 适用于 Kubernetes 的 Helm chart 或用于本地堆栈的 Docker Compose。
软件组件
| 组件 | 技术栈 | 角色 | 默认端口 |
|---|---|---|---|
| 前端 | Next.js 16 (React 19, TypeScript, Tailwind CSS 4), Better Auth, Prisma | Web UI、身份验证、API 网关 | 3000 |
| 后端 | FastAPI (Python 3.12+), LangChain | 聊天 / NL-to-SQL、目录、数据源 API | 3001 |
| 数据摄取工作器 | FastAPI (Python 3.12+) | 摄取表格数据并写入嵌入向量 | 3002 |
| Postgres + pgvector | 关系型数据库 | 应用元数据、目录和本体、向量存储 | 5432 |
| HashiCorp Vault | 可选 | 安全存储连接凭证 | — |
NVIDIA NIM
Auto Ontology 使用 NVIDIA NIM 端点进行推理——既可以是托管的 NVIDIA API 目录 (integrate.api.nvidia.com),也可以是自托管的 NIM。.env.example 中的默认配置如下:
- LLM:
nvidia/nemotron-3-nano-30b-a3b - Embeddings:
nvidia/nemotron-3-embed-1b - Reranking:
nvidia/llama-nemotron-rerank-vl-1b-v2
端点和模型通过 DEFAULT_MODELS_ENDPOINT、DEFAULT_MODELS_MODEL、EMBED_ENDPOINT 和 EMBED_MODEL 环境变量进行配置,并且需要设置 DEFAULT_MODELS_API_KEY。
模型三元组
每个模型角色由一组三元组环境变量配置——<PREFIX>_ENDPOINT(URL)、<PREFIX>_API_KEY 和 <PREFIX>_MODEL:
| 前缀 | 角色 |
|---|---|
DEFAULT_MODELS | 共享默认值;以下所有字段均回退到此配置。 |
REASONING | 主要聊天 / NL-to-SQL 模型。 |
NON_REASONING | 用于实体提取的轻量级模型。 |
EMBED | 文本嵌入模型(在摄取和查询之间必须保持一致)。 |
RERANK | 检索流程中使用的重排序器。 |
你可以设置完整的三元组、仅设置其中的部分字段,或者完全不设置——任何未设置的字段都会回退到对应的 DEFAULT_MODELS_<FIELD>。因此,最简单的配置方式是填写 DEFAULT_MODELS_*,并仅在存在差异时覆盖特定于三元组的字段(例如 EMBED_MODEL、NON_REASONING_MODEL)。为了保持向后兼容性,*_API_KEY 也会回退到旧版的 NVIDIA_API_KEY。
(注:更多技术实现细节与完整 API 文档请查阅原项目 README)