NVIDIA Auto-Ontology: lớp ngữ nghĩa để agent truy vấn dữ liệu rõ ngữ cảnh hơn
Auto-Ontology biên dịch metadata database thành ontology có thể review: business term, SQL đã duyệt và quan hệ join. Công cụ hướng đến việc giúp agent truy vấn dữ liệu có ngữ cảnh, kiểm tra khả năng trả lời và trả về SQL kèm các bước xử lý.
Một agent có thể tạo ra câu SQL chạy được nhưng vẫn trả lời sai: join nhầm bảng, hiểu sai khái niệm “revenue”, hoặc dùng một công thức đo lường không được thống nhất. Những lỗi này nguy hiểm vì kết quả thường vẫn trông hợp lý.
Một cách làm phổ biến là đưa schema, mô tả cột và ví dụ SQL vào context của LLM. Cách này nhanh cho bản demo, nhưng context sẽ tăng theo số bảng và cột. Quan trọng hơn, model vẫn phải tự suy luận ý nghĩa nghiệp vụ, đường join và công thức ở từng câu hỏi.
Auto-Ontology của NVIDIA đi theo hướng khác: chạy một lớp context cạnh database, biên dịch metadata thành ontology để agent truy vấn qua các định nghĩa đã được ánh xạ và review.
Auto-Ontology thêm gì vào pipeline agent?
Auto-Ontology là framework Python xây dựng lớp suy luận ngữ nghĩa dựa trên đồ thị. Theo README, ontology của hệ thống có ba nhóm định nghĩa:
Terms: khái niệm nghiệp vụ như Customer hoặc Invoice Line, có mô tả, từ đồng nghĩa và mapping tới các cột dữ liệu.
SQL attributes: biểu thức SQL đã được review dưới một term, chẳng hạn margin hoặc rolling total.
Relationships: quan hệ join giữa các bảng, bao gồm bridge table, được suy ra từ key và dữ liệu.
Thay vì luôn đưa toàn bộ schema vào prompt, agent sử dụng các công cụ trên ontology để lấy những term và bảng liên quan tới câu hỏi. README so sánh hai cách tiếp cận như sau:
Context chỉ chứa các term và bảng mà câu hỏi chạm tới, thay vì tăng theo toàn bộ schema.
Ý nghĩa nghiệp vụ được ánh xạ vào cột và biểu thức SQL.
Join và measure dựa trên quan hệ đã được giải quyết cùng SQL đã review.
Hệ thống có thể kiểm tra một câu hỏi có thể trả lời hay không trước khi truy vấn.
Auto-Ontology cũng được mô tả là có thể bổ sung cho semantic model sẵn có. Context có thể được phục vụ cho agent qua MCP, agent skills và REST API.
Quickstart với Wide World Importers
README có quickstart dùng Wide World Importers, sample sales database của Microsoft. Bạn cần Docker với Compose v2, uv và NVIDIA API key có dạng nvapi-....
Clone repository và tạo file môi trường:
bash
git clone https://github.com/NVIDIA/auto-ontology.git && cd auto-ontology
cp .env.example .env
Thiết lập các giá trị trong .env:
dotenv
DEFAULTMODELSAPIKEY=nvapi-...
AUTHSECRET=<a long random string, e.g. from openssl rand -base64 32>
APPURL=http://localhost:3000
POSTGRESPASSWORD=<a new password>
CONNECTIONSTRINGS=postgresql://postgres:<the same password>@postgres:5432/wideworldimporters
AUTOONTOLOGYADMINPASSWORD=<a new password>
PGADMINPASSWORD=<a new password>
Docker Compose publish Postgres, pgAdmin và web app ra host, vì vậy README khuyến nghị thay các mật khẩu mặc định trước khi khởi động. File .env.example cũng có API key cho từng model role; bạn có thể thay từng key hoặc xóa các dòng đó để dùng DEFAULTMODELSAPIKEY.
Khởi động Postgres, rồi seed sample database từ repository đánh giá đi kèm:
bash
docker compose up -d --wait postgres
git clone https://github.com/NVIDIA/auto-ontology-eval.git ../auto-ontology-eval
(cd ../auto-ontology-eval && uv sync && cp .env.example .env && \
POSTGRESPASSWORD='<the same password>' \
uv run python scripts/seed/seedwwi.py --database-name wideworldimporters --drop)
Build và chạy phần còn lại của stack:
bash
docker compose up -d --build
Mở http://localhost:3000, đăng nhập bằng AUTOONTOLOGYADMINEMAIL và AUTOONTOLOGYADMINPASSWORD trong .env. Sau đó vào Settings → Semantic Compilation để bật compilation.
README cho biết ingestion chạy khi khởi động. Khi semantic compilation hoàn tất, giao diện hiển thị trạng thái Semantic compilation is ready.
Một câu hỏi có SQL và trace để kiểm tra
Ở mục Chat, README đưa ra câu hỏi mẫu:
> What was revenue for the USB food flash drive - sushi roll in Pennsylvania in June 2015?
Kết quả mẫu trả về doanh thu $588.80 từ 3 invoice lines, kèm SQL và các bước xử lý.
Trace mẫu cho biết agent đã resolve các term Invoice Line, Stock Item, State Province và Invoice; sau đó đi theo chuỗi join:
text
invoice line → invoice → customer → city → state province
Agent cũng xác thực giá trị filter trước khi chạy truy vấn. Với team xây text-to-SQL hoặc data agent, phần SQL và các bước này là dữ liệu hữu ích để đối chiếu câu trả lời với nguồn.
“Không thể trả lời” cũng là một kết quả cần có
README đưa thêm ví dụ về câu hỏi return on ad spend cho cùng sản phẩm và thời gian. Wide World Importers không có dữ liệu quảng cáo, nên agent kết nối qua MCP kiểm tra khả năng trả lời trước.
Trong ví dụ, kết quả cho biết coverage là 0.5 và không có term bao phủ “ad spend”. Thay vì tự tính một chỉ số thiếu dữ liệu, agent đề xuất trả về revenue hoặc kết nối thêm nguồn dữ liệu có advertising spend.
Đây là điểm đáng chú ý khi đánh giá data agent: không chỉ kiểm tra các câu có đáp án, mà còn cần kiểm tra cách hệ thống xử lý câu hỏi chưa được dữ liệu và ontology bao phủ.
Cách repository đánh giá hiệu năng
Repository đi kèm là auto-ontology-eval. README cho biết bộ đánh giá dùng các benchmark:
BIRD
BEAVER
FDABench-Lite
Wide World Importers
Mỗi mục đánh giá ghép một câu hỏi với gold SQL. Cùng một model được chạy theo hai nhánh:
Control: model nhận database schema trong prompt.
Treatment: agent hỏi đáp của Auto-Ontology làm việc từ ontology đã biên dịch.
Một verifier deterministic chấm SQL theo execution match, dùng quy tắc chính thức của benchmark khi có. Report hiển thị chênh lệch accuracy, những câu ontology xử lý tốt hơn và những câu nó làm kém hơn.
Với BIRD-Interact, benchmark nhiều lượt có câu hỏi làm rõ, README cho biết hệ thống chạy trên harness riêng.
Lệnh được công bố để chạy so sánh trên BIRD là:
bash
uv run python main.py --database-name bird
Điểm cần phân biệt: tính “deterministic” ở đây thuộc về bước xác minh SQL bằng execution match. Nó không đồng nghĩa mọi phần của quy trình agent đều có kết quả bất biến.
Lưu ý trước khi thử với dữ liệu thật
Repository dùng giấy phép Apache-2.0.
Quickstart yêu cầu NVIDIA API key; README không nêu giá hoặc quota dịch vụ API.
Ontology ban đầu được tạo từ schema, profile cột và sample value. README vẫn đặt con người vào vòng review, edit và certify.
Compose publish nhiều dịch vụ ra host, đồng thời file môi trường chứa mật khẩu và connection string. Không nên giữ mật khẩu mẫu khi chạy thử.
Nếu giao diện mất thanh điều hướng sau khi restart, README hướng dẫn xóa site data của localhost:3000 rồi đăng nhập lại vì trình duyệt có thể giữ stale session cookie.
Khi nào đáng thử?
Auto-Ontology phù hợp để thử khi agent đã phải xử lý nhiều bảng, metric dễ bị hiểu khác nhau hoặc cần trả về SQL để kiểm tra. Giá trị cốt lõi mà README mô tả không phải là một chatbot mới, mà là đưa business term, quan hệ join và biểu thức SQL vào một lớp có thể xem xét và chứng nhận.
Checklist ngắn để bắt đầu:
[ ] Chọn một domain có các metric cần định nghĩa rõ.
[ ] Chuẩn bị metadata cho nguồn dữ liệu.
[ ] Review term, relationship và SQL attribute trong ontology.
[ ] Kiểm tra SQL cùng các bước xử lý mà agent trả về.
[ ] Thử cả các câu hỏi thiếu dữ liệu hoặc thiếu term tương ứng.
[ ] So sánh với baseline đưa schema trực tiếp vào prompt trên bộ câu hỏi của team.