n8n_nl2sql — n8nで実装する自然言語→SQLワークフロー
概要
n8n_nl2sqlは、n8n(ワークフローオーケストレータ)上で動作する「自然言語→SQL(NL2SQL)」ワークフローのサンプル実装です。ユーザーが日常語で投げた質問をAIによりSQL文へ変換し、実際にデータベースに対してクエリを実行、結果をWeb上で表やグラフとして表示できます。生成されたSQLが実行エラーになった場合は、エラーメッセージをAIに返して自動修正を試みるリトライ機構(最大3回)や、対話履歴を保持するメモリ機能も備えています。ワークフローのエクスポートファイル(nl2sql.json)と、簡易UI(agent.html)、ドキュメントやイメージが同梱され、すぐに試せる形で提供されています。
リポジトリの統計情報
- スター数: 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サンプルで、プロトタイプ導入やアイデア検証に最適です。
リポジトリ情報:
- 名前: n8n_nl2sql
- 説明: 这是一个 n8n nl2sql 的工作流,将自然语言问题转化为可执行的 SQL 查询。以一个智能数据助手嵌入 web 系统中,能查询数据库,并为数据提供可视化图表。
- スター数: 15
- 言語: HTML
- URL: https://github.com/Wilsonoonn/n8n_nl2sql
- オーナー: Wilsonoonn
- アバター: https://avatars.githubusercontent.com/u/30226875?v=4