n8n_nl2sql — n8nで実装する自然言語→SQLワークフロー

AI/ML

概要

n8n_nl2sqlは、n8n(ワークフローオーケストレータ)上で動作する「自然言語→SQL(NL2SQL)」ワークフローのサンプル実装です。ユーザーが日常語で投げた質問をAIによりSQL文へ変換し、実際にデータベースに対してクエリを実行、結果をWeb上で表やグラフとして表示できます。生成されたSQLが実行エラーになった場合は、エラーメッセージをAIに返して自動修正を試みるリトライ機構(最大3回)や、対話履歴を保持するメモリ機能も備えています。ワークフローのエクスポートファイル(nl2sql.json)と、簡易UI(agent.html)、ドキュメントやイメージが同梱され、すぐに試せる形で提供されています。

GitHub

リポジトリの統計情報

  • スター数: 15
  • フォーク数: 3
  • ウォッチャー数: 15
  • コミット数: 5
  • ファイル数: 5
  • メインの言語: HTML

主な特徴

  • 自然言語をSQLに変換するNL2SQLワークフローをn8nで提供
  • 生成SQLの実行エラーをAIに返して自動修正する再試行(最大3回)
  • 対話記憶(コンテキスト)を保持し、会話形式で連続的にクエリを投げられる
  • Web埋め込み用の簡易UI(agent.html)とワークフローのインポート可能なJSON

技術的なポイント

本プロジェクトの肝は「n8nを制御層として用い、LLM(AI)で自然言語をSQLへ翻訳し、そのSQLを実際のDBに投げて結果を可視化する」というパイプラインにあります。ワークフロー(nl2sql.json)は、外部からのHTTPトリガーやWebhookでユーザーの問いを受け取り、まずプロンプトエンジニアリング済みの入力とデータベースのスキーマ情報(あれば)をAIに渡してSQLを生成します。生成SQLはn8n上のDB接続ノードで実行され、エラーが返ればエラーメッセージと失敗したSQLを再度AIに渡し、自動修正ループ(READMEにある通り最大3回)を回します。こうした設計により「人がSQLを書かなくても、実行可能なクエリを得る」運用が可能です。

UI面ではagent.htmlが簡易フロントエンドとなり、生成結果の表やチャートを埋め込める仕組みが用意されています。可視化はフロント側で軽く処理し、ワークフローはデータ取得と整形を担当します。リポジトリ構成はシンプルで、ワークフローのJSONエクスポートによりn8n環境へ容易にインポートできる点が実務導入の利点です。

注意点としては、NL2SQL系の共通課題であるSQLインジェクションや誤ったテーブル参照、意図しない大量データ抽出への対策が必要です。具体的には、データベース接続は最小権限で行い、生成SQLの実行前に構文チェックやLIMITの付与、実行前サニタイズ、テスト用の読み取り専用ユーザでの検証を行うのが望ましいでしょう。また、LLMに与えるスキーマ説明やfew-shot例を整備することで生成精度が大きく向上します。ワークフローは拡張しやすく、別モデルやプロンプトに差し替え、結果の集計や可視化ライブラリ(Chart.jsなど)を差し込むことも容易です。

さらに、エラーハンドリングをAI任せにする実装は便利ですが、ログや変更履歴を残し「どのように修正されたか」を可視化しておくと運用面での信頼性が高まります。nl2sql.jsonをテンプレート化して接続情報やプロンプトを環境変数で管理すれば、本番環境へのデプロイもスムーズです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • agent.html: file
  • img: dir
  • nl2sql.json: file
  • readme.md: file

imgフォルダにはワークフローやUIのスクリーンショットが含まれており、導入イメージを掴みやすくなっています。nl2sql.jsonはn8nへインポートすることでワークフローを再現できます。agent.htmlはフロントエンドのサンプルで、質問入力→結果表示の流れをシンプルにデモします。

まとめ

n8nを活用した実用的なNL2SQLサンプルで、プロトタイプ導入やアイデア検証に最適です。

リポジトリ情報: