基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
开源项目2026-11-05 16:32

NVIDIA 用企业语义层约束 Agent 数据查询

GitHub Trending#知识图谱#Agent#数据治理
Editor brief · 编辑速览

Auto Ontology 是从企业元数据构建本体与知识图谱的 Python 开源库,可协调跨系统的指标和实体定义。它通过 MCP、CLI 和 API 提供语义上下文,并支持依据认证定义与数据血缘校验生成查询。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

让 Agent 查出一个营收数字不难,难的是确认它算的究竟是哪种营收、关联了哪些表、有没有拿错口径。NVIDIA Auto Ontology 想补上这层业务上下文:从数据库元数据生成语义模型,经人工确认后,再交给 Agent 查询。

它值得关注的地方,是把「生成 SQL」放进了一个更完整的流程:先解释数据,再确认能不能回答,最后返回结果和依据。不过,原文提供的是架构与样例,尚不足以证明它在真实企业数据上的准确率。

Agent 缺的业务上下文,具体长什么样

Auto Ontology 是一个开放库,定位是补充企业已有的语义模型。它试图回答六个问题:数据在哪里、代表什么、能否使用、如何使用、来自哪里,以及哪些内容相似。

承载这些信息的是本体(ontology)。这里可以把它理解成一份可供程序检索的业务字典,除了解释名词,还记录计算方法和表之间的关系。

它包含三类定义:

  • Terms 描述 Customer、Invoice Line 等业务概念,带有说明、同义词和对应列。
  • SQL attributes 保存经过审核的 SQL 表达式,例如利润率、滚动累计值,让 Agent 重复使用同一套算法。
  • Relationships 描述表的连接方式,包括经过桥接表的关联。

相比只把数据库 schema 塞进提示词,这一层多了业务口径。字段名可以告诉模型「这里有金额」,却未必能说明这笔金额是否含税、是否扣除退款。

Auto Ontology 的数据接入、语义层与查询架构

生成过程会读取 schema、分析列、采样数据,再逐表提取术语、推断关联,并从查询历史建议 SQL attributes。结果存入 Postgres,向量存入 pgvector,供后续检索。

原文展示的一次 Wide World Importers 编译生成了 31 个术语。这个数字说明样例能产出可浏览的语义图,并不代表生产数据库的覆盖能力。

样例数据库生成的语义图与 Order 术语详情

自动生成的是草稿,可信度仍要靠人确认。

团队需要用真实问题测试,在 UI 或 API 中修改术语、描述和 SQL attributes,再进行认证。项目还提出把经过认证的修正和使用情况反馈到本体,但原文没有展开自动学习的边界。

怎样判断一个数字有依据,或者根本答不了

收到问题后,Agent 会识别意图和实体,通过向量检索寻找候选术语、列和计算表达式,再生成 SQL。随后检查筛选值和查询,检查失败时修复,执行后返回答案、SQL 和处理步骤。

原文的例子是:查询 2015 年 6 月 Pennsylvania 地区,一款寿司卷造型 U 盘的营收。样例答案为 $588.80,来自 3 条发票明细。

下面这段原始输出展示了它怎样把业务问题落到关联路径上:

Answer:  Revenue for USB food flash drive - sushi roll in Pennsylvania in
         June 2015 was $588.80, from 3 invoice lines.

SQL:     SELECT SUM(il.extendedprice) AS revenue, COUNT(*) AS invoice_lines
         FROM sales.invoicelines il
         JOIN sales.invoices i             ON il.invoiceid = i.invoiceid
         JOIN warehouse.stockitems si      ON il.stockitemid = si.stockitemid
         JOIN sales.customers c            ON i.customerid = c.customerid
         JOIN application.cities ct        ON c.deliverycityid = ct.cityid
         JOIN application.stateprovinces sp ON ct.stateprovinceid = sp.stateprovinceid
         WHERE si.stockitemname = 'USB food flash drive - sushi roll'
           AND sp.stateprovincename = 'Pennsylvania'
           AND i.invoicedate >= '2015-06-01' AND i.invoicedate < '2015-07-01'

Steps:   Resolved terms: Invoice Line (revenue), Stock Item, State Province, Invoice
         Joined: invoice line -> invoice -> customer -> city -> state province
         Validated the filter values against the data, then executed

要看的是 SUM(il.extendedprice) 和 c.deliverycityid 两行:前者决定营收算法,后者说明地区取自客户配送城市。SQL 可以运行,还需要业务人员确认这两个选择符合问题口径。

另一个例子更有价值。用户询问广告投入回报时,样例数据库没有广告支出数据。通过 MCP 接入的 Agent 先调用 check_answerable,得到 coverage 0.5,发现没有术语覆盖 ad spend,于是说明无法计算,并询问是否改查营收或接入其他来源。

可靠的数据问答,需要把「现有数据答不了」当作正常结果。

不过,coverage 0.5 的计算方式和判定阈值没有说明,不能把它当成答案有 50% 的正确概率。原文提到可以通过独立评估仓库运行 BIRD 等 text-to-SQL 基准,但没有给出准确率、延迟或对照结果。

聊天界面展示生成的 SQL、营收图表与查询结果

接进现有应用,有哪些配置不能漏

项目支持 Docker Compose 本地部署,也提供 Kubernetes Helm chart。Web UI 包含聊天、分析、数据目录和设置,认证与 RBAC 使用 Better Auth。

模型默认走 NVIDIA NIM,可使用托管端点 integrate.api.nvidia.com 或自托管服务。默认配置为:

  • LLM:nvidia/nemotron-3.5-lightning-30b-a3b。
  • Embeddings:nvidia/nemotron-3-embed-1b。
  • Reranking:nvidia/llama-nemotron-rerank-vl-1b-v2。

原文说共有四种模型角色,但提供的内容没有完整列出。每种角色通过 <PREFIX>_ENDPOINT、<PREFIX>_API_KEY、<PREFIX>_MODEL 配置;缺失字段分别回退到 DEFAULT_MODELS_<FIELD>,密钥还兼容旧的 NVIDIA_API_KEY。

这里容易踩坑:.env.example 中各角色的 nvapi-your-api-key-here 是已填写的占位值,需要替换或删除,才能正确使用默认密钥。接入其他 OpenAI-compatible endpoint 时,还要求模型支持结构化输出,且入库和查询使用同一个 embedding 模型。

本地样例需要 Docker Compose v2、uv 和 nvapi-... 密钥。先用 docker compose up -d --wait postgres 启动数据库,再通过评估仓库的 scripts/seed/seed_wwi.py 导入数据;其中 --database-name wideworldimporters --drop 带有删除重建行为。最后运行 docker compose up -d --build,登录后开启 Settings → Semantic Compilation,等待 Semantic compilation is ready。

对前端或 Node 应用,直接调用 POST /api/chat/completions 就能接入问答。API token 在用户菜单的 API Tokens 中创建:

curl -N http://localhost:3000/api/chat/completions \
  -H "x-api-key: $AUTO_ONTOLOGY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"question": "How many orders shipped last week?"}'

注意 -N:响应是服务端事件流(SSE),需要持续读取。result 事件携带答案,data: [DONE] 表示结束,不能直接按普通 JSON 响应处理。

现有 Agent 则可以使用 MCP 的只读本体工具,每次调用按登录用户权限执行。已有语义资产也可通过 Apache Ossie 转换成 Ossie YAML,使用 POST /api/model/import、POST /api/model/export 交换定义。

部署边界必须一起看。客户端走 3000 端口;3001、3002 应留在私网。FastAPI 信任前端转发的 x-auto-ontology-user-id,而 ingestion 服务的 ingest、delete、reset、compile 端点没有独立认证。

预测功能另走 KumoRFM。设置 KUMO_RFM_API_KEY 后,Agent 会上传连接的表;KUMO_MAX_TABLES 默认 20,KUMO_MAX_ROWS_PER_TABLE 默认不限行数。这一步需要先确认组织允许发送哪些数据。

我的判断

我认同它把业务定义、人工认证和查询溯源放在一起。对跨系统、跨团队的数据问答,反复调提示词解决不了「同一个词有不同算法」的问题。把定义沉淀为共享资产,更方便检查和维护。

但这是一条有维护成本的路线。相比直接提供 schema,它增加了术语审核、关系校验和口径更新;相比已有 BI 语义层,它是否减少重复维护,要看导入后的语义保真程度,原文没有给出证据。

返回 SQL 能提高可检查性,却不能自动证明结果正确。关联重复、地区归属或指标定义有误,都可能得到一条执行成功的查询。原文展示了流程能力,没有提供与普通 text-to-SQL、schema 提示或其他语义层的对照数据,效果判断仍属于方案主张。

项目采用 Apache License 2.0,但目前不接受外部 PR,集成请求和问题报告可以提交 issue。计划深度改造的团队,也要考虑自行维护的成本。

能拿来做什么

  • 如果正在做内部数据问答,可以先选一个营收或订单场景,整理术语、计算表达式和关联路径,再评估自动生成是否减少了人工工作。
  • 给 Agent 准备两类验收问题:一类有已知正确答案,另一类缺少必要数据;同时检查计算口径和拒答行为。
  • 前端或 Node 接入 SSE 时,把答案、SQL、处理步骤和错误状态分别展示,让用户有机会核查数字来源。
  • 试用时先关闭预测上传,替换 .env 默认密码,并把 3001、3002 放在私网,再开放聊天入口。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 GitHub Trending,原文版权归原作者所有。

阅读原文
上一篇
Lambda 可直接跑 HTTP 服务,单环境并发达128
下一篇
跨框架 Agent 如何协作:理解 A2A 与 MCP

资讯速览

GitHub Trending · 2026-11-05 16:32

AI 评分 8.0 / 10

相关标签

#知识图谱#Agent#数据治理

继续阅读

  • 先拦住新增违规,再让 Agent 清理旧账
  • Lambda 可直接跑 HTTP 服务,单环境并发达128
  • 跨框架 Agent 如何协作:理解 A2A 与 MCP
  • 网站运维 Agent 如何减少协作消耗
  • 文心开放 280B 稀疏模型预训练权重