生成AIの進歩でText to SQLが現実的に? 概要編
この記事について
顧客データ活用を支援するインキュデータでは、Treasure Data CDPの導入支援を行っています。私たちは「データの民主化」を実現するため、生成AIによるSQL生成を活かしたデータとの対話の実証実験を進めています。
とくにデータを利用したマーケティング活用の業務への生成AI活用を軸に検討を進めています。
本記事では、「Text to SQL」の概要とその周辺環境について紹介します。今後の記事では、実証実験で構築・検証した内容を詳しく解説する予定です。
「Text to SQL」とは
「Text to SQL」とは、自然言語で書かれたテキストをSQL(Structured Query Language)に変換する技術です。この概念自体は、生成AIが登場する前から存在していましたが、生成AIの進化によりその実用性が飛躍的に向上しています。これにより、ユーザは自然言語でデータベースに対して直接問い合わせを行うことが可能となります。
最近では、この技術は「NL2SQL(Natural Language to SQL)」や「SQL RAG(Retrieval-Augmented Generation)」とも呼ばれています。
「Text to SQL」がもたらすメリット
SQLに不慣れな人でもデータベースを操作可能に
従来、データベースへの問い合わせはDBA(データベース管理者)、エンジニア、データサイエンティストなど、SQLに精通した人々が中心でした。また、BIツールを通じてダッシュボードを作成し、可視化された情報を確認することも一般的です。
しかし、SQLに不慣れな人がデータを取得しようとする場合、以下のような課題がありました。
- データ取得を依頼する際のコミュニケーションコスト:他部門や専門家に依頼する手間がかかる
- エンジニアの作業負荷増加:本来の業務以外の依頼がエンジニアの工数を圧迫
- BIツールへの反映待ち:依頼から反映まで時間がかかる
「Text to SQL」を活用することで、SQLの知識がない人でも直接データベースにアクセスでき、これらの課題を解消できます。また、SQLに精通したエンジニアやデータサイエンティストにとっても、業務効率化が期待できます。
生成AIとの高い親和性
生成AIの進化により、「Text to SQL」の実用性が大幅に向上しました。その主な要因は以下の2点です。
1. 「Text to SQL」自体の精度向上
シンプルなSQLであれば、大規模言語モデル(LLM)に追加の情報(学習データ)を与えなくても、自然言語から直接SQLを生成できます。
複雑なSQLを生成する場合でも、以下の手法で精度向上が期待できます。
- システムプロンプトへの情報追加:データベースの種類やテーブル情報をプロンプトに含める
- RAG(Retrieval-Augmented Generation)の活用:過去の質問と回答、各テーブルやカラムの詳細情報を参照する
- エラーハンドリングの自動化:SQL実行時のエラー内容に基づき、生成AIが自動的に修正提案を行う
2. 生成AIを通じたデータベース操作の実現
ChatGPTのFunction Calling機能やDifyなど、生成AIを活かしたワークフローにより、生成AIがさまざまなツールと接続できるようになりました。
これにより、「Text to SQL」をツールの1つとして組み込むことで、データ取得だけでなく、多様なデータベース操作が可能となります。
「Text to SQL」の課題
精度に関する課題
- 正確なデータ取得の難しさ:微妙なニュアンスや複雑なクエリでは、期待通りの結果が得られない場合があります。
権限・セキュリティの課題
- テーブルへの書き込みリスク:誤ったデータの挿入や更新によるデータ破損の可能性があります。
- データベース構造の更新:意図しない構造変更がシステム全体に影響を及ぼすリスクがあります。
- スロークエリの発生:大量データへの不適切なクエリがシステム性能を低下させる可能性があります。
利用ユーザのデータ理解度による課題
- データベースの知識不足:データ構造やテーブルの関係性を知らないユーザが誤った操作を行うリスクがあります。
- テーブルやカラムの認知不足:どのデータにアクセスでき、どのような情報が含まれているかを理解していない場合の問題があります。
プレビュー版やベータ版の利用に伴う課題
多くのサービスがまだプレビュー版での提供であり、本番環境での活用にはリスクが伴います。
取り扱うデータに関する課題
個人情報を含むデータを扱う場合、生成AIを活用することでプライバシーの懸念があります。
そのため、プライバシーポリシーの改定やユーザからの同意取得、利用するプラットフォームとのデータ処理契約(DPA)の締結が必要となります。
AIエージェントを通じて変わる業務
ReAct(Reasoning and Acting) の考え方に基づき、生成AIを通じたAIエージェントの活用が進んでいます。生成AIを通してデータベース操作を行うことで、さまざまな業務への適用が考えられます。
- マーケター:マーケティング施策の迅速な実行と効果測定
- データ分析エージェント:データ分析業務の効率化と洞察の自動抽出
- データベース管理エージェント:DBA(データベース管理者)の業務支援と自動化
さらに、各業務を生成AIで連携させることで、施策のサイクルを高速化できます。データマーケティング業務のフロー(設計>蓄積>抽出>処理>施策)において、各段階で生成AIを活用することで、業務改善が図られています。
各社の取り組み
Pinterestの事例
Pinterestでは、「Text to SQL」を活かしたシステムを構築し、その取り組みを公開しています。
- How we built Text-to-SQL at Pinterest:https://medium.com/pinterest-engineering/how-we-built-text-to-sql-at-pinterest-30bad30dabff
各プラットフォームの取り組み
主要なクラウドサービスプロバイダーやデータプラットフォームも、「Text to SQL」や関連技術の導入・提供を進めています。
AWS(Amazon Web Services)
- Amazon Bedrockの発表:構造化データの取得を容易にするための新機能が発表されています。
Google Cloud
- BigQueryでGeminiを使用したSQLの記述:
- Vertex AIによるLLM活用:
Microsoft Azure
- Azure SQL DatabaseでのCopilot活用:
Databricks
- Databricks Genie:AIとBIの統合プラットフォームを提供しています。
Snowflake
エンジニア・データサイエンティスト向けのCopilotと、非エンジニア向けのCortex AIを提供しています。
- Copilot:AIによるSQLアシスタント:
- Cortex AI:エンタープライズAIとノーコード開発の進化:
オープンソースプロジェクトの紹介
「Text to SQL」を実現するためのオープンソースプロジェクトも活発に開発されています。
Model Context Protocol
Vanna
- 公式サイト:https://vanna.ai/
Chat2DB
- GitHubリポジトリ:https://github.com/codePhiliaX/Chat2DB
DB-GPT
- GitHubリポジトリ:https://github.com/eosphoros-ai/DB-GPT
研究・リソース
最新の研究や技術動向については、以下のリソースをご参照ください。
- NL2SQL Handbook:https://github.com/HKUSTDial/NL2SQL_Handbook/tree/main
まとめ
「Text to SQL」は、データへのアクセスを容易にし、「データの民主化」を推進する重要な技術です。しかし、その一方で精度やセキュリティ、ユーザのデータ理解度といった課題も存在します。これらの課題を解決しながら、より使いやすく安全なシステムを構築することが求められます。
次回の記事では、実際に私たちが行った実証実験の詳細や、構築手順、検証結果について詳しく解説します。ぜひご期待ください。
参考文献・リンク
- Pinterestの取り組み:https://medium.com/pinterest-engineering/how-we-built-text-to-sql-at-pinterest-30bad30dabff
- Databricksの事例:https://www.databricks.com/jp/blog/unlocking-financial-insights-nyse-ice
- Vanna公式サイト:https://vanna.ai/
- Chat2DB GitHub:https://github.com/codePhiliaX/Chat2DB
- DB-GPT GitHub:https://github.com/eosphoros-ai/DB-GPT
- NL2SQL Handbook:https://github.com/HKUSTDial/NL2SQL_Handbook/tree/main
Discussion