NVIDIA 开源 Auto Ontology 构建智能体数据语义层
NVIDIA 发布开源库 Auto Ontology,旨在为企业智能体构建统一的上下文语义层。该工具通过 MCP、CLI 和 API 暴露经过验证的业务定义与数据血缘,解决智能体在查询数据库时因语义歧义导致的准确性问题,支持从元数据自动生成企业本体并持续优化。
报道正文
本文目录5 个章节
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)