当AI写SQL“语法全对,数字全错”:NVIDIA开源Auto Ontology,用语义层让Agent先问口径再动手
让 LLM 生成 SQL,技术上的障碍正在快速消解。Text-to-SQL 模型的语法准确率已经足够高,JOIN 写得漂亮,语法检查全过。但企业里真正翻车的原因,几乎从来不是语法。一个“上季度华东区收入”的查询,模型可能把含税的、未退款的、测试订单全算了进去——SQL 一个字没错,数却是错的。这种错误比语法报错更危险:报错你会去查,一个看着合理的数字,你根本不会怀疑它。
NVIDIA 在 2026 年 11 月初开源的
NVIDIA/auto-ontology,瞄准的正是这个断层。它不打算换一个更聪明的模型,而是在数据库和 Agent 之间垫一层“人类审过的数据词典”——一个语义层,让 Agent 在写 SQL 之前,先知道“收入”到底指什么、cust_id在两套系统里是不是同一批人、这张表和那张表能不能直接 JOIN。上线后连续两天登顶 GitHub Trending Python 榜,单日新增 Star 超过 2,000。
核心信息速览
| 项目 | 详情 |
|---|---|
| 项目名称 | Auto Ontology |
| GitHub 仓库 | https://github.com/NVIDIA/auto-ontology |
| 开发者 | NVIDIA |
| 开源协议 | Apache-2.0 |
| 主要语言 | Python(后端)、TypeScript(前端) |
| GitHub Star | 约 8,400 – 9,600(2026年11月6-7日快照),单日新增 ~2,000–2,700 |
| Trending 表现 | 连续两天(11月5-6日)登顶 GitHub Python Trending 第1名 |
| 核心定位 | 基于图的语义推理层,为 LLM/Agent 提供可溯源、可验证的数据库查询上下文 |
| 支持数据源 | 10 种:PostgreSQL、MySQL、Databricks、Snowflake、ClickHouse、Trino、Apache Kyuubi、HeavyDB、DuckDB、SQLite |
| 推理引擎 | NVIDIA NIM(LLM + Embedding + Reranking) |
| 核心工作流 | Generate → Certify → Answer(生成草稿 → 人工认证 → 按“认证过的口径”回答) |
| Agent 接入 | MCP(Model Context Protocol)、REST API、CLI |

一、它解决的不是“生成 SQL”,是“生成对的 SQL”
Auto Ontology 的官方 README 开篇第一句就是:“a revenue metric answered faster is worth nothing if the number is wrong”——一个算得更快的收入指标,如果数是错的,一文不值。
传统 Text-to-SQL 的路径是:给模型看数据库的 DDL(表结构、字段名),让它猜每个字段的含义,然后写 SQL。问题在于,数据库知道 customer_id 是字符串,却不知道它指的是“消费者账号”还是“企业客户”;一张订单表能关联发票表,也不意味着一张发票只对应一笔订单。业务实体、指标粒度、例外规则——这些“人知道、机器不知道”的规矩,散在老员工脑子里、散在没人维护的 wiki 里,从来没有进入过数据库。
Auto Ontology 做的事情很朴素:把这些规矩显式写下来,交给 Agent 当查询依据。它构建的不是又一个向量数据库或聊天机器人,而是一层经过人工认证的语义定义,让 Agent 在生成 SQL 之前,先对齐“这个指标在我们公司到底是什么意思”。
二、三步核心工作流:Generate → Certify → Answer
这是 Auto Ontology 区别于普通“自动本体生成”工具的关键设计。“自动”只发生在第一步,后两步是人工把关。
2.1 Generate:从元数据生成本体草稿
摄取服务读取源数据库的 schema、列 profile 和采样值,逐表抽取业务术语并映射到列,从主外键和数据分布中推断 JOIN 关系与桥表,再从查询历史中建议可复用的 SQL 表达式。最终,术语、关系、SQL 属性连同向量嵌入一起写入 PostgreSQL + pgvector。
官方示例库(Wide World Importers)的首次编译产出了 31 个术语,在界面上呈现为一张可点开的语义图。
2.2 Certify:人工“盖章”,这是灵魂
在 UI 或 API 中,人可以修改描述、调整 SQL 属性、补充同义词。只有经过人工确认并“盖章”的定义,Agent 才被允许用来计算。未认证的口径,Agent 不能使用。
这一设计直接回应了“AI 自动生成不可信”的核心焦虑:自动化只负责提出候选,人类保留最终的定义权。
2.3 Answer:按认证过的口径回答,并附带溯源
当用户提问时,Agent 先做意图分类,然后向量检索候选术语、列和 SQL 属性,生成 SQL,拿真实数据校验过滤值和查询逻辑,失败则自动修复,最后执行查询。返回的内容不只是答案,而是 答案 + 实际 SQL + 推导步骤(provenance)。
例如,查询“华东区用户数最多的部门名称”,Auto Ontology 返回的 SQL 会附带类似 ["departments.region → regions.code", "users.dept_id → departments.id"] 的溯源元数据,明确标注每个 JOIN 和过滤条件的依据。
三、技术架构与关键参数
3.1 四层服务架构
| 组件 | 技术 | 职责 | 默认端口 |
|---|---|---|---|
| 前端 | Next.js 16(React 19, TypeScript, Tailwind CSS 4), Better Auth, Prisma | Web UI、认证、API 网关 | 3000 |
| 后端 | FastAPI(Python 3.12+), LangChain | Chat / NL-to-SQL、目录、数据源 API | 3001 |
| 摄取 Worker | FastAPI(Python 3.12+) | 摄取表格数据、写入嵌入向量 | 3002 |
| 存储 | PostgreSQL + pgvector | 应用元数据、目录/本体、向量存储 | 5432 |
部署方式:Docker Compose(本地)或 Helm Chart(Kubernetes)。完整启动栈需要 NVIDIA API Key(nvapi-...),用于调用 NVIDIA NIM 的推理、嵌入和重排序能力。
3.2 默认 NIM 模型
| 角色 | 默认模型 |
|---|---|
| LLM(推理/NL-to-SQL) | nvidia/nemotron-3-nano-30b-a3b(或 nemotron-3.5-lightning-30b-a3b) |
| Embedding | nvidia/nemotron-3-embed-1b |
| Reranking | nvidia/llama-nemotron-rerank-vl-1b-v2 |
模型通过 Triplet 机制配置(<PREFIX>_ENDPOINT / _API_KEY / _MODEL),支持为推理、非推理(实体抽取)、嵌入、重排序分别指定模型,未指定的字段回退到 DEFAULT_MODELS_*。
3.3 本体中的三类定义
Auto Ontology 的本体模型刻意保持了极简,只有三类元素:
| 类型 | 含义 | 示例 |
|---|---|---|
| Terms(术语) | 带描述、同义词,映射到具体列 | “客户”、“发票行” |
| SQL Attributes(SQL属性) | 经过认证的可复用表达式 | 毛利率、滚动累计 |
| Relationships(关系) | 表之间的 JOIN 路径和桥表 | orders.customer_id → customers.id |
这种“少即是多”的设计,使得语义层的维护成本可控,也降低了 Agent 理解本体的认知负担。
四、10 种数据源与 MCP 工具链
4.1 数据源支持
Auto Ontology 当前文档列出的数据源覆盖了主流的企业数据库生态:
PostgreSQL、MySQL、Databricks、Snowflake、ClickHouse、Trino、Apache Kyuubi、HeavyDB、DuckDB、SQLite——共 10 种。
数据源可以通过 Web UI 配置,也可以写入环境变量(CONNECTION_STRINGS)。对于 Snowflake 和 Databricks 等云数仓,NVIDIA 的策略是与现有平台互补,而非替代:Auto Ontology 在其之上构建语义层,不要求数据搬迁。
4.2 MCP 工具链(Agent 的只读接口)
Auto Ontology 通过 MCP 暴露给 Agent 的工具全部是只读的,不暴露原始数据库浏览能力,便于融入企业治理体系。核心工具包括:
| 工具 | 作用 |
|---|---|
check_readiness | 检查语义层是否已编译、数据库连接是否可执行 |
search_terms | 检索业务术语及其当前含义 |
get_term / get_term_columns / get_term_sql_attributes | 获取术语的详细定义、映射列和 SQL 属性 |
check_answerable | 判断当前语义层是否覆盖用户的问题 |
ask_question | 启动完整的问答链路(检索 → SQL 生成 → 校验 → 执行) |
Agent 的标准调用序列是:check_readiness → search_terms → check_answerable → ask_question,每一步都在确认“当前问题是否可以被可靠地回答”。
五、客观边界:它不能做什么
- 它不替代现有的语义模型或指标平台。
官方明确定位是“complements the semantic models customers already own”——它从现有元数据和语义模型中生成起始本体,而不是取代已有的数据治理体系。 - “自动”仅限于第一步。
本体草稿的生成是自动的,但 Certify 环节必须人工介入。没有经过认证的术语和 SQL 属性,Agent 不会使用。这意味着部署后仍然需要业务方投入时间进行口径审核——这不是一个“装完就准”的工具。 - 截至 2026 年 11 月上旬,官方仓库尚未发布任何 Release 版本,也没有打 Tag。项目处于早期开源阶段,API 和部署方式可能快速变化。
- 默认依赖 NVIDIA NIM 生态。
虽然架构上对 LLM 提供商保持“不可知”,但默认配置和官方支持路径围绕 NVIDIA NIM 的模型展开。如果组织希望使用其他 LLM 提供商,需要自行替换和验证。
六、小结
Auto Ontology 的核心贡献不在于“让 LLM 更会写 SQL”,而在于它把“业务口径”从一个隐性知识问题,变成了一个可管理、可认证、可溯源的工程对象。Generate → Certify → Answer 的三步流程,划清了“机器自动生成”和“人类最终确认”的边界;Terms / SQL Attributes / Relationships 的三类定义,用最小的本体模型承载了企业查询中最关键的语义约束;MCP 的只读工具链和每次回答附带的 provenance,让 Agent 的查询过程变得可审计。
它最适合的场景是:企业已经拥有结构化的数据库和一定的元数据积累,但 Agent 生成 SQL 时频繁出现“语法对、数字错”的问题。对于个人开发者或小型项目,它的部署复杂度(Docker Compose + NVIDIA API Key + 10 种数据源配置)和 Certify 环节的人工成本可能超过了收益。但对于正在将 Text-to-SQL 推向生产环境的团队,Auto Ontology 提供了一条在“完全自动”和“完全人工”之间的务实中间路径——让 Agent 在动手写 SQL 之前,先学会问“你说的收入,是哪个收入”。
附录:资源列表
| 类型 | 资源 | 说明 |
|---|---|---|
| ✅ 下载地址 | 点击下载 | 压缩文件 |
| ✅ GitHub 仓库(主) | https://github.com/NVIDIA/auto-ontology | Apache-2.0 |
| 📄 Text-to-SQL 评估工具 | https://github.com/NVIDIA/auto-ontology-eval | BIRD 等基准的评估与 SQL judge |
| 📄 NVIDIA NIM API | https://build.nvidia.com | 获取 nvapi- 密钥 |
| 📄 中文深度解析(腾讯云) | 《Auto Ontology如何生成语义层并核验查询》 | 三步工作流与部署细节 |
| 📄 中文速查手册(CSDN) | 《NVIDIA Auto Ontology 速查手册》 | MCP 工具链与溯源示例 |
| 📄 独立审计(SoloSoft) | 《Auto-Ontology Audited: 9,026 Stars…》 | 10 种数据源列表与 SQLite 连接器实测 |
本文为原创内容,转载请注明来源与作者。
CSDN 首发 | 版权所有 © 2026
📢 免责声明与版权说明
1. 版权归属
本文提及的开源软件、第三方工具、代码片段、网盘资源及教程合集,其版权均归原作者或开源社区所有。本人仅出于技术分享与评测目的进行整理与推荐,不拥有相关内容的版权。2. 仅供学习交流,严禁商用
本文提供的任何资源(包括但不限于软件安装包、教程、素材等)均来源于公开互联网渠道,仅供个人学习、研究与技术交流。严禁将本资源用于任何形式的商业牟利、二次售卖或非法传播。如需在商业环境中使用,请务必前往官方渠道购买正版授权。3. 技术风险自行承担
文中涉及的软件、脚本及代码均在特定测试环境下验证。由于每位读者的设备硬件、操作系统及网络环境存在差异,因参考本文内容进行操作而导致的任何系统崩溃、数据丢失、硬件损坏或安全事故,由使用者自行承担全部风险,作者不承担任何连带法律及经济责任。操作前请务必做好重要数据的备份工作。4. 侵权处理机制(避风港原则)
本人极其尊重原创与知识产权。若本文内容(包括文字、图片、附件链接等)无意中侵犯了您的合法权益,请务必通过 CSDN 站内私信或文末留言联系我,并提供您的身份证明及版权权属证明。核实无误后,我将在第一时间删除相关内容并致歉。
更多推荐

所有评论(0)