1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DatI:AI Agentが安全かつ効率的にデータベースへアクセスするためのセマンティックゲートウェイ

1
Posted at

1. AI Agentはどのようにデータベースと対話すべきか

私のエンジニアとしてのキャリアの前半は、一貫してビジネスインテリジェンス(BI)領域に関わってきました。初期は現場のビジネスチーム向けに、SQLを用いたデータサービスの開発やカスタムダッシュボードの構築、TableauやPower BIなどを活用したセルフサービス分析の支援を行っていました。その後、内製BIプラットフォームの開発へとシフトし、大規模言語モデル(LLM)の台頭とともに、自社プロダクトも自然言語によるデータ対話(ChatBI)へと舵を切りました。

しかし、自然言語によるデータ検索はデモとしては非常に目を引くものの、日々の実務に定着させるには大きな壁がありました。その理由は主に次の2点です:

  1. モデル性能の限界による「NL2DSL」アプローチの制約:精度を担保するため、自然言語を一度メトリクス(指標)定義用のDSL(ドメイン特化言語)に変換する方式を採用しましたが、DSLの枠組みに縛られ、自由なアドホック分析が制限されてしまいました。
  2. 現場が求めていたのは「単体のアプリ」ではなく「既存業務への組み込み」:実際のエンタープライズ導入において、顧客が求めていたのは独立した「Data Agent」アプリではなく、日常的な業務フローの中にNL2SQL機能が自然に組み込まれることでした。

昨年、Anthropicが Model Context Protocol (MCP) を発表したとき、「データベースを標準的なMCPサービスとして直接公開し、軽量なメタデータ管理を組み合わせれば、クリーンでプラグアンドプレイ可能なNL2SQLコンポーネントが実現できるはずだ」という確信に至りました。これにより、専用アプリを一から開発することなく、Agentが柔軟にデータ分析を行うために必要なコンテキストを提供できます。

この発想から生まれたのが DatI (Data Intelligence) です。

DatIの設計思想は非常にシンプルかつ明快です。データベースに接続し、業務メタデータを管理し、プリセットおよびカスタムツールを設定して、標準的なMCPエンドポイントとして公開する――これだけです。利用しているAgent環境に連携すれば、即座にアドホックなデータ分析が可能になります。さらに、安全なCRUD(作成・更新・削除)操作にも対応しているため、定型コードを書くことなく軽量な業務管理ワークフローを動かすことも可能です。


2. DatIの動作フロー:ステップ・バイ・ステップで見る実際の流れ

データベースの接続からAI Agentによるクエリ実行まで、DatIがどのように機能するのかを一連の流れでご紹介します。設定はWebコンソールから手動で行うことも、dati-ops Agent Skillを使って自動化することも可能です。

Step 1: データソースの接続とメタデータの設定

DatIはデータベースへ直接接続し、テーブルスキーマを自動的に読み込みます。ここでテーブルやカラム、カラム値(ステータスなどの列挙値・Enum)の説明やエイリアス(論理名・別名)を設定しておくことで、AIが各項目のビジネス的な意味を正しく理解できるようになります。

Data Source and Metadata Configuration

Step 2: セマンティックサブジェクト(主題領域)と業務用語の定義

セマンティックサブジェクト(主題領域)では、関連するテーブルを業務ドメインごとにグループ化します。これによりテーブルの対象範囲(スコープ)が明確になり、生成されたMCPサービスはこの境界内でのみデータを検索・クエリするようになります。またこのステップでは、社内独自の専門用語や指標の定義をAIが正しく理解できるよう、業務用語(ビジネス用語集)もあわせて登録します。

Semantic Subject Layer and Business Terms Configuration

Step 3: ツールの設定とMCPサービスの公開

対象とするテーブルと、Agentに公開するツールを設定します:

  • プリセットツール(Preset Tools):メタデータ検索、テーブルスキーマ確認、SQL実行(SELECTのみに制限するか、書き込みを許可するかなど、操作権限を細かく制御可能)。
  • カスタムツール(Custom Tools):頻出クエリや安全な更新処理のためのパラメータ化SQLテンプレート。

「公開」を実行すると、アクセストークンで保護された標準仕様(Streamable HTTP)のMCPエンドポイントが即座に生成されます。

MCP Service Publishing and Tool Configuration

Step 4: AI Agentを接続してデータ分析を実行

ここではクライアント環境として Google Antigravity を例にデータ分析を行います。DatIのMCPエンドポイントに接続すると、Antigravityはセマンティック検索ツールを活用して関連テーブルを自動特定し、的確なSQLを生成・実行します。さらに、Antigravityが備えているデータ可視化機能を活かして、抽出結果からそのままダッシュボードやグラフを作成することも可能です。

Agent Ad-hoc Data Query and Analysis


3. アーキテクチャと実装

DatIは主に以下の3つのコンポーネントで構成されています:

  1. データソース接続(Data Ingestion):MySQL、PostgreSQL、ClickHouse、Apache Doris、MariaDBをネイティブサポートしており、新しいDBエンジンの追加も容易なモジュール設計となっています。

    なぜバックエンドにJavaを採用したのか? AIエコシステムではPython、TypeScript、Rustが主流ですが、DatIのバックエンドはJavaで構築されています。データベース基盤において最も重要なのは、何よりも堅牢な安定性です。JDBCとHikariCPによる実績あるコネクションプール管理、成熟したドライバエコシステムにより、高負荷環境下でも極めて安定したリソース管理を実現できます。

  2. セマンティックモデリング(Semantic Modeling):テーブル、カラム、列挙値、業務用語に対してエイリアスや説明文を設定でき、LLMのプロンプトへ的確な業務コンテキストを注入します。
  3. MCPサービス生成(MCP Service Generation):対象テーブルの選択、ツール権限およびシステムプロンプトの設定を行い、ワンクリックで標準MCPエンドポイントを公開できます。

    なぜMCPを採用したのか? ローカル完結型のAgent Skillと比較して、MCPはエンタープライズのシステム構成に非常に適しています。DB接続情報はサーバー側で暗号化・一元管理され、エンドユーザーには個別のアクセストークンのみが発行されます。これにより接続情報の安全性を担保しつつ、メタデータやツール設定をチーム全体で再利用できます。

ツール設計と機能

ツール(Tool)はMCPサービスの根幹をなす要素です:

プリセットツール

  • メタデータ検索(Metadata Search):対象となるテーブル、カラム、列挙値、業務用語がElasticsearchにインデックス化されます。Agentは1回のキーワード検索で、関連するスキーマと定義を瞬時に特定できます。
  • テーブル一覧・スキーマ確認(Table List & Table Schema):必要なタイミングでテーブル構造をオンデマンドで確認できる軽量な探索ツール。
  • 制御可能なSQL実行(Controlled SQL Execution):生成されたSQLを直接実行可能ですが、厳格なガード機能を備えています(管理者はSELECTのみに制限することも、INSERT/UPDATE/DELETEおよびトランザクションを許可することも可能です)。
  • メタデータの継続的改善(Metadata Evolution):日々の利用を通じて、Agentや管理者がスキーマ説明や用語集をアップデートし、セマンティック層を継続的に改善・進化させることができます。

カスタムツール

  • パラメータ化SQL(Parameterized SQL):複数テーブルの複雑な結合や、更新など慎重を期す操作に対して、管理者が事前にSQLテンプレートを定義できます。Handlebars風のテンプレートエンジンにより、動的条件分岐やユーザーコンテキストの自動注入に対応しています:
UPDATE transaction SET
  {{#if amount}}amount = {{amount}},{{/if}}
  {{#if category}}category_id = (SELECT id FROM category WHERE name = {{category}}),{{/if}}
  updated_at = now()
WHERE id = {{transaction_id}} AND user_name = {{_user.name}}

これにより、LLMは構造化されたパラメータを入力するだけで済み、SQLのコアロジックを誤って改変するリスクを排除できます。また、{{_user.name}} などのシステム変数はゲートウェイ側から直接注入されるため、マルチテナント環境におけるデータ分離が確実に担保されます。


4. 既存アプローチとの比較

言語モデルをデータベースに接続する試み自体は新しいものではありません。単一DB向けのシンプルなMCPサーバーや、DBHub / MCP Toolboxのようなツール、スタンドアロンのChatBIプラットフォーム、あるいは手作業でコーディングされたAgentなど、多様なアプローチが存在します。

その中でDatIはどこに位置づけられるのでしょうか?DatIのコアな立ち位置は 「AI Agentのために設計された、エンタープライズ仕様のデータベース・セマンティックゲートウェイ」 です。

比較項目 DatI カスタム実装 公式DB MCP / Skill DBHub / MCP Toolbox スタンドアロンChatBI
提供形態 サーバーサイドMCP 任意 ローカルMCP ローカルMCP 独立したWebアプリ
接続情報の管理 サーバー側で一元管理 方式による ローカルに平文保存 ローカルに平文保存 サーバー側で一元管理
セマンティック層 業務メタデータをフルサポート シナリオごとに都度開発 生のスキーマのみ 生のスキーマのみ 業務メタデータをフルサポート
複雑クエリの安全性 スキーマ探索 + パラメータ化SQL コード側で制御 なし カスタムツールで対応 固定メトリクス・固定DSL
ワークフローへの組み込み 高(任意のMCPクライアントに統合可) 極めて高い(要実装) 高 高 低(独立アプリに依存)

まとめると、DatIは以下の5つの重要な課題を解決します:

  1. セキュリティとガバナンス:きめ細やかな権限制御と、DB接続情報の一元管理。
  2. メタデータコンテキスト:業務用語やEnum定義をプロンプトに補完し、ハルシネーション(誤ったテーブル結合やカラム誤認)を防止。
  3. 柔軟性:MCPに対応したあらゆるAgentクライアントや業務ホストとシームレスに連携。
  4. 導入効率:ローコードでの設定が可能で、エンドユーザー側のデプロイ負担がゼロ。
  5. マルチソース対応:主要なリレーショナルDBおよびOLAPエンジンをネイティブサポート。

5. まとめとフィードバック

開発者向けツールは、実際の開発現場でのフィードバックを通じてこそ洗練されていくものだと考えています。DatIをぜひお試しいただき、ご意見・フィードバックやプロジェクトへのコントリビュートをお待ちしています:

注記: 本記事は原著者が中国語で執筆した内容を、LLMを活用して日本語に翻訳・編集した技術記事です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?