NVIDIA auto-ontology — メタデータから意味論層を構築するフレームワーク
NVIDIA/auto-ontology
★ 11,083 ・ Python ・ Apache-2.0
概要
「Auto Ontology」は、企業が保有する構造化データやメタデータを基に、セマンティック(意味論)およびグラフベースの推論レイヤーを構築するためのPythonフレームワークです。NVIDIAがオープンソース(Apache License 2.0)として公開しています。
LLMを用いたAIエージェントがデータベースを検索する際、取得スピードよりも「回答や数値の正確性」が重大な課題となります。Auto Ontologyは、データがどこに存在し、どのようなビジネス的意味を持ち、どのシステム間で定義が一致しているのかをエージェントに伝える「コンテキスト層」を提供します。
自然言語からSQLクエリを決定論的に生成させたい開発者や、回答の根拠(リネージや解決した用語)を明示して説明可能性を高めたいデータエンジニア・エージェント開発者に向いています。
主な特徴
READMEに記載されている主な特徴は以下の通りです。
- 構造化データに対する自然言語クエリ: ユーザーからの自然言語による質問をSQLに変換し、接続されたデータベースに対して実行します。推論処理にはNVIDIA NIMを活用します。
- セマンティックカタログおよびオントロジー層: リレーショナルデータソースに対応する意味層を構築し、カタログ情報とともにPostgreSQL内に保存・管理します。
- オントロジーのライフサイクル管理: メタデータからのオントロジー生成(Discover)、指標やエンティティの意味づけとシステム間の不整合解消(Ground)、リネージに基づく生成クエリの検証(Validate)、MCPやCLI・APIを通じた公開(Expose)、修正内容のオントロジーへの再反映(Learn)を担います。
- Web UIの提供: チャット、データ分析、データカタログの閲覧、各種設定などをブラウザ上で行うためのフロントエンドが用意されています。
- 認証とロールベースのアクセス制御(RBAC): Better Authを採用し、ユーザー認証や権限管理に対応しています。
- 柔軟なデプロイ環境: ローカル開発用のDocker Compose構成に加え、Kubernetes向けのHelmチャートが用意されています。
使い方
READMEでは、Docker ComposeとMicrosoftのサンプル売上データベース「Wide World Importers (WWI)」を使用したクイックスタート手順が案内されています。前提環境としてDocker(Compose v2対応)、uv、およびbuild.nvidia.comから取得したNVIDIA APIキーが必要です。
1. リポジトリのクローンと環境変数の設定
リポジトリをクローンし、設定ファイル雛形をコピーします。
git clone https://github.com/NVIDIA/auto-ontology.git && cd auto-ontology
cp .env.example .env
.env ファイルを開き、必要な環境変数を入力します。Postgresのパスワードや管理者パスワードはデフォルトから変更する必要があります。
DEFAULT_MODELS_API_KEY=nvapi-...
AUTH_SECRET=
APP_URL=http://localhost:3000
POSTGRES_PASSWORD=
CONNECTION_STRINGS=postgresql://postgres:<設定したパスワード>@postgres:5432/wideworldimporters
AUTO_ONTOLOGY_ADMIN_PASSWORD=
PGADMIN_PASSWORD=
2. Postgresの起動とサンプルデータの投入
Postgresコンテナを起動後、データ投入用リポジトリをクローンしてシードスクリプトを実行します。
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 && \
POSTGRES_PASSWORD='<設定したパスワード>' \
uv run python scripts/seed/seed_wwi.py --database-name wideworldimporters --drop)
3. 全体スタックの起動
残りのサービス群をビルドして起動します。
docker compose up -d --build
4. 初期設定とチャットの実行
ブラウザで http://localhost:3000 を開き、.env で設定した管理者メールアドレスとパスワードでサインインします。
- Settings → Semantic Compilation を開き、機能を有効化します。インジェスト処理がバックグラウンドで動作し、完了すると「Semantic compilation is ready」と表示されます。
- Chat 画面へ移動し、自然言語で質問を行います。
例えば以下のような質問を入力できます。
What was revenue for the USB food flash drive - sushi roll in Pennsylvania in June 2015?
エージェントは「revenue」「product」「state」といったビジネス用語をオントロジーと照合し、テーブル間の結合条件を解決してSQLを生成・実行します。画面上には集計結果の回答とともに、実行されたSQL文や解決された用語のステップが表示されます。
また、データセットに含まれていない情報(例: 広告費など)について質問した場合、MCP経由で接続されたエージェントは回答可能性をチェックし、カバーされていない用語を把握してユーザーに聞き返す動作を行います。
技術的なポイント
READMEの記載によると、本プロジェクトは複数のコンポーネントに分かれたマイクロサービス構成をとっています。
システム構成
- Frontend (ポート3000): Next.js 16(React 19、TypeScript、Tailwind CSS 4)を採用。Better Authによる認証機能やPrismaを備え、Web UIおよびAPIゲートウェイとして機能します。
- Backend (ポート3001): FastAPI(Python 3.12以上)とLangChainで構成。チャット処理、NL-to-SQL変換、カタログやデータソース関連のAPIを提供します。
- Ingestion worker (ポート3002): FastAPI(Python 3.12以上)で実装され、表形式データの取り込みおよびベクトルの埋め込み書き込みを行います。
- Postgres + pgvector (ポート5432): アプリケーションのメタデータ、カタログ、オントロジー、およびベクトルストアの保管場所として利用されます。
- HashiCorp Vault (任意): 接続資格情報の安全な保存用として、必要に応じて追加可能です。
NVIDIA NIMのモデル管理
モデル推論にはNVIDIA NIMエンドポイント(ホスト型のbuild.nvidia.com、またはセルフホスト環境)を使用します。デフォルト設定では以下のモデルが指定されています。
- LLM:
nvidia/nemotron-3.5-lightning-30b-a3b - Embeddings:
nvidia/nemotron-3-embed-1b - Reranking:
nvidia/llama-nemotron-rerank-vl-1b-v2
設定は _ENDPOINT、_API_KEY、_MODEL の3つの環境変数(トリプレット)で役割ごとに管理されます。
役割には推論用の REASONING、軽量なエンティティ抽出用の NON_REASONING、インジェストと検索に使う EMBED、検索結果並べ替え用の RERANK があり、未設定の項目は DEFAULT_MODELS_* の値に自動でフォールバックする設計となっています。
注意点
- コントリビューションの制限: ライセンスは Apache License 2.0 ですが、READMEには「This project is currently not accepting external contributions.(現在、外部からのコントリビューションは受け付けていません)」と明記されています。プルリクエスト等を送る際は注意が必要です。
- 前提インフラ: 動作させるにはPython 3.12環境、Docker環境に加えて、NVIDIAのAPIキー(build.nvidia.com)が必要となります。
- モデルの整合性: テキスト埋め込みモデル(EMBED)は、インジェスト時とクエリ時で同一のモデルを使用する必要があります。
- ベンチマーク: BIRDなどのText-to-SQLベンチマークの実行方法については、別リポジトリ(ontology-sql-eval)を参照するよう案内されています。
まとめ
NVIDIA Auto Ontologyは、リレーショナルデータのメタデータから意味層を導出し、AIエージェントによるSQL生成の正確性と検証可能性を高めるためのフレームワークです。Next.js製の管理UIやNVIDIA NIMによるモデル連携があらかじめパッケージ化されており、エージェントワークフローにおけるデータガバナンスと精度向上に関心がある開発者にとって注目の構成となっています。





