AIファーストなアーキテクチャが広がる中で、構造化データと非構造化データの境界は急速に薄れつつあります。私たちは東京の小さな開発チームとして、こう自問しました。
「もし、データベースが“保存”するだけじゃなく、“理解”できたら?」
そこで私が構築したのがこのデータベースエンジンです。Rustでゼロから書かれたインテリジェントなエンジンは、バックエンドにPostgreSQLの堅牢さを持ちつつ、NoSQLのように柔軟に振る舞い、さらにLLMによる“思考”を備えています。
考えるデータベースを作る旅へようこそ。
🛠 なぜ新しいデータベースを作ったのか?
PostgreSQLは素晴らしいデータベースですが、従来のRDBMSの枠では、現代的な開発のニーズを満たしきれないと感じました。
- スキーマレスで自然言語にも強いインターフェース
- 構造化+意味ベースのハイブリッド検索
- ボイラープレート不要のRAG(生成強化検索)機能
- ローカルかつセキュアなAI推論の統合
既存RDBMSに複雑な機能を無理やり後付けするのではなく、Postgresの信頼性はそのままに、自然言語とAIを前提とした新しいレイヤーを設計しました。
🚀 技術構成:Rust, PostgreSQL, k3s, LLM(ローカル推論対応)
- エンジンコア:Rustで構築し、パーサ・最適化ロジック・LLMパイプラインもネイティブ実装
- ストレージ層:PostgreSQLが永続化とインデックス処理(JOINやベクトル検索も)を担う
- LLM統合:OllamaやGemma 3BなどのLLMをコンテナで組み込み、k3sで軽量運用
- クエリレイヤー:LLMが自然言語からSQL(JOINやネストも対応)を自動生成
🧠 ユースケース①:自然言語クエリ(JOINも自動生成)
ユーザーはSQLを書く必要はありません。自然言語でデータを問い合わせると、LLMが内部で最適なSQLに変換して実行します。
「先月東京で購入した顧客で、それ以降購入していない人をリストアップして」
→ 複数テーブルのJOINと日付条件を含むSQLに変換して、PostgreSQLにクエリされます。
異常検知、ログとの結合、メタ情報での絞り込みなど、高度なクエリも直感的に扱えます。
🧩 ユースケース②:RAG(生成強化検索)のネイティブ対応
このエンジンは標準でRAGワークフローに対応:
- ドキュメントをベクトル化して埋め込みとして保存
- セマンティックに意味でフィルタリング
- トップKをLLMアプリのプロンプトに供給
k3s上で定期的に埋め込みやメタデータを更新するジョブも動いており、
「2024年以降にJeanePaulが書いたドキュメントだけ抽出して」などのハイブリッド検索も可能です。
チャットボット、FAQ検索、ナレッジベース、エージェント向けなどに最適です。
🧪 ユースケース③:AIによるデータ自動生成
テスト用データや欠損値の補完にも対応:
- 欠損・未入力パターンの自動検出
- LLMに状況文脈を渡して入力を生成
- 合成されたリアルなデータをテーブルに挿入
テスト・シミュレーション・初期オンボーディングのスピードが劇的に向上します。
💡 フロントエンド開発者向け:使いやすさと互換性
このエンジンは、ドキュメントストアのようにも使えるし、必要ならPostgreSQLの機能も全開で使えます。
- JOIN、トランザクションも対応
- PostgreSQL拡張や全文検索も可能
- ベクトル+構造化ハイブリッド検索もOK
🦀 Rust(擬似コード)
let result = db.query("東京在住で有効なサブスク利用者を全件取得", {
limit: 50,
embeddings: true
});
🟦 TypeScript
async function queryDatabase(nlQuery: string) {
const response = await fetch('http://your-db-api.local/query', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt: nlQuery })
});
const result = await response.json();
console.log('Query Result:', result);
}
queryDatabase("過去30日以内に東京で購入した全アクティブユーザーを取得");
🟨 JavaScript
async function uploadDocument(doc) {
const response = await fetch('http://your-db-api.local/documents', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
content: doc,
metadata: { source: "website", category: "product_manual" }
})
});
const data = await response.json();
console.log('Upload Successful:', data);
}
uploadDocument("QuickStart VX-200は12Vの入力が必要です。...");
🔭 今後の展望
- WebAssemblyでのインライン推論対応
- CLI Copilotによるクエリデバッグ支援
- コア機能のOSS化(ドキュメントとDX最重視)を計画中
🧬 最後に
これは、既存のDBにAIプラグインを付けただけの話ではありません。
自然言語で話しかけ、データが思考する——そんな未来をRustとPostgreSQL、そしてLLMの力で創りました。
これはただのデータベースではありません。
これは、あなたの“思考”と“データ”の橋渡しです。