ユーザーデータベース世界モデル · ひとつのデータプレーン

ユーザーのすべてのデータを、
ひとつのインターフェースで。移行なしに。

UDBはエージェントが扱うデータプレーンです。DDL不要のランタイム定義テーブルに加え、ユーザーが既に使っているPostgres、MySQL、HTTP API、ファイルストレージへつながる統合アダプター層を備えています — 自然言語で問い合わせでき、すべてのクエリから学習するセマンティックマッピングを持っています。

ドキュメントを読む
課題

エージェントには状態を保持する場所が必要です。データベースの移行はその答えではありません。

推論はできても何も永続化できないエージェントは、毎ターン同じ事実を導き直すだけです。プロダクションデータベースへの生の接続を渡せば、言語モデルにシステムオブレコードへの無制御な書き込み権限を与えることになります。代わりにベクトルストアを渡せば、構造を近似的な検索と引き換えにすることになります。UDBはその中間の選択肢です:リクエスト時にDDLなしで定義できるテーブルに、既に使っているシステムへの統制されたアダプターを組み合わせています — データを一切移動させることなく、エージェントに作業できる場所を与えます。

ランタイム定義テーブル

エージェントはリクエスト時にテーブルを作成・拡張します — マイグレーションファイルも、デプロイも、スキーマレビューも不要です。すべてのテーブルは最初の書き込みからテナント単位で分離されています。

既存システムへつながるアダプター

Postgres、MySQL、HTTP API、ファイルストレージが統制されたアダプターを通じて接続されます。データが複製されることはありません — UDBは設定された接続を通じて直接読み書きします。

自然言語クエリ

平易な言葉で質問すれば、UDBが既知のテーブルとアダプターに照らして解釈し、型付きの結果を返します — エージェントが誤りやすいSQL文字列ではありません。

学習するセマンティックマッピング

解決に成功したクエリは意図とスキーマの対応関係を強化します。次に似た質問が来たとき、より速く、より正確に解決されます。

多数のバックエンドを、ひとつのインターフェースで

ランタイムテーブルと外部アダプターは同じクエリインターフェースで応答します。エージェントはどのバックエンドが答えを持っているかを知る必要も、気にする必要もありません。

デフォルトで適用されるテナント分離

すべてのテーブル、アダプター接続、キャッシュされたマッピングはアカウント単位でスコープされます。テナント間アクセスは慣習ではなく構造として不可能です。

アクセスを統合する仕組み

ひとつのクエリインターフェース。その先のすべてのバックエンドが同じ方法で応答する。

解決ループ

01

質問クエリが自然言語で届きます — 作業中のエージェントからでも、アプリからの直接呼び出しからでも。SQLもテーブル名も不要です。

02

解決セマンティックマッピングが既知のランタイムテーブルとアダプターのスキーマに照らして確認します。似た形のクエリを過去に解決した実績すべてを活用します。

03

ルーティングマッチ結果がバックエンドを決定します:ランタイムテーブルか、Postgres・MySQL・HTTP API・ファイルストレージへのアダプターです。

04

取得バックエンドを直接クエリします — UDBに事前にコピーされるデータはなく、結果はひとつの型付きの形に正規化されます。

05

返却どのバックエンドが実際に応答したかにかかわらず、結果は単一のインターフェースを通じて返されます。

06

強化マッピングが強化されます:これと似た形の次のクエリは、あいまいさが減った状態でより速く解決されます。

APIサーフェス

テーブルを定義し、自然言語で問い合わせ、アダプターを接続する。

GET/api/v1/entitiesランタイム定義テーブル(エンティティ)の一覧取得(フィールドスキーマを含む)
POST/api/v1/entities新しいランタイムテーブル(エンティティ)を定義 — マイグレーション不要
POST/api/v1/data-sources/:id/query特定の接続済みデータソースに自然言語でクエリ
POST/api/v1/entities/:entity_id/recordsランタイムテーブルへ直接レコードを書き込む
GET/api/v1/entities/:entity_id/records構造化フィルタでレコードを読み取る
POST/api/v1/data-sourcesアダプター(データソース)を接続:Postgres、MySQL、HTTP API、またはファイルストレージ
GET/api/v1/data-sources設定済みアダプター(データソース)の一覧と接続状態を取得
POST/api/v1/data-sources/:id/refresh-schema接続済みアダプターのスキーマ再取得をトリガー
GET/api/v1/data-sources/:id/learned-mappings特定の接続済みアダプターに対して学習されたセマンティックマッピングを調べる
保証事項

データの複製ではなく、アクセス層です。

設計段階からDDLなしランタイムテーブルはマイグレーションファイルではなくAPIを通じて作成・変更されます — エージェントが必要とした瞬間にスキーマ変更が反映されます。

常にテナント分離すべてのテーブル、アダプター接続、キャッシュされたマッピングはアカウント単位でスコープされます。テナント間アクセスは構造として不可能です。

データは移動しませんアダプターはPostgres、MySQL、HTTP API、ファイルストレージをそのまま、その場でライブに問い合わせます — UDBが保持するのはマッピングとキャッシュされた結果だけで、システムオブレコードの複製は持ちません。

アダプターは静かに失敗しません接続状態はアダプターごとに監視されます。認証情報の破損や接続不能はエラーとして表面化し、古い答えを黙って返すことはありません。

マッピングは検査可能です学習されたすべてのセマンティックマッピングは照会・修正が可能です — クエリ解決の過程が ブラックボックスになることはありません。

保持ポリシーは元のシステムに従うランタイムテーブルとキャッシュされた結果は設定された保持ポリシーに従い、アダプターはクエリの実行後もソースシステムのデータを複製保持することはありません。

実践例

多数のバックエンドをひとつのクエリインターフェースで扱うとはどういうことか。

まだ存在しないスキーマ

エージェントが会話の途中でアカウントごとのescalation_ownerを追跡する必要に迫られます。同じターンの中でフィールドを定義し、書き込みます — チケットもデプロイも不要です。

ひとつの質問、ふたつのバックエンド

「延滞中で、かつ直近のメールを開いていない顧客は?」という質問は、ランタイムテーブル(メール開封記録)とPostgresアダプター(請求書)の結合として解決されます — エージェントはバックエンドがふたつあったことすら知りません。

レガシーMySQLも、新しいSDKなしで

注文履歴を抱える10年前のMySQLインスタンスが、アダプターを接続したその日から自然言語で問い合わせ可能になります — ORMもエクスポートも不要です。

データになるファイル

ファイルストレージ内のCSVエクスポートのフォルダが、テーブルと同じように応答します — UDBはこれを要約すべき文書としてではなく、問い合わせ可能なソースとして索引化します。

二度目の質問はもっと速い

エージェントが初めて「アクティブなエンタープライズアカウント」を尋ねたとき、UDBがスキーマを確認する間わずかな遅延があります。50回目には、直接ヒットします。

エージェントに必要なのはデータ移行ではなく、データプレーンです。

ランタイムテーブル、統制されたアダプター、既に使っているすべてのシステムの上にあるひとつのインターフェース — UDBは邪魔をしません。