「SQLってむずかしそう…テーブル構造を覚えるだけで一苦労」そんな悩みを抱えたことはありませんか?
実は今、自然言語(普通の日本語や英語)をそのままSQLに変換してくれるAIフレームワークが注目を集めています。その代表格が Vanna AI です。🎉
Vanna AIって何者?

Vanna AIは、Text-to-SQL(テキストをSQLに変換する技術) のOSS(オープンソース)フレームワークです。GitHubでも急速にスターを集めており、業界標準になりつつある注目株です。
イメージとしては、「このデータベースにどんなデータが入っているか」をAIに覚えさせておいて、あとは「先月の売上を教えて」と話しかけるだけでSQLクエリが自動生成される、そんな感じです。
仕組みはたったの2ステップ
Vannaの動作の流れはシンプルで、ざっくりとこんな感じです。
- ✅ Step 1(Training): テーブルのスキーマ・ドキュメント・実際のSQLクエリ例をAIに学習させる
- ✅ Step 2(Asking): 自然言語で質問するだけで、精度の高いSQLが自動生成される
「学習フェーズを丁寧にやっておくほど、精度が上がる」というのがポイントですよね。実務で使っているSQLをそのまま学習データとして食わせられるのが、実用的でとても便利なんです。
実際にどう使うの?コードで確認しよう
インストールはpipで一発です。
pip install vanna
基本的な使い方のサンプルがこちらです。
import vanna
from vanna.openai import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
# VannaのカスタムクラスをOpenAI + ChromaDBで構成
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
OpenAI_Chat.__init__(self, config=config)
vn = MyVanna(config={'api_key': 'YOUR_OPENAI_KEY', 'model': 'gpt-4o'})
# DBに接続(SQLiteの例)
vn.connect_to_sqlite('my_database.db')
# スキーマ情報をAIに学習させる
vn.train(ddl="""
CREATE TABLE sales (
id INTEGER PRIMARY KEY,
product TEXT,
amount INTEGER,
sale_date DATE
)
""")
# 自然言語で質問するだけ!
sql = vn.generate_sql("先月の売上合計を商品ごとに教えて")
print(sql)
ポイントをまとめるとこんな感じです 👇
- LLMとベクトルDBを組み合わせた設計 で高精度を実現
- OpenAI以外にもローカルLLM(Ollama等)と組み合わせることも可能
vn.train()に渡す情報が多いほど精度がアップする
どんな場面で役立つ?
Vanna AIが特に活躍しそうなシーンをあげてみると…
- 📊 非エンジニアのデータ分析担当者 がSQLなしでDBを操作したいとき
- 🔍 複雑なJOINが絡むクエリ を自動生成させて雛形として使いたいとき
- 🤖 社内チャットボット にデータ取得機能を組み込みたいとき
「SQLが書けないからダッシュボードを人に頼むしかない」という状況、一気に解決できるかもしれません!
まとめ
Vanna AI は、スキーマを学習させてから自然言語で質問するだけという2ステップで、高精度なSQLを自動生成できるOSSフレームワークです。OpenAIとの連携はもちろん、ローカルLLMとの組み合わせも視野に入るため、コスト面でも柔軟に対応できます。
「むずかしそう」を「できそう」に変えてくれるツールの一つですよね。ぜひローカル環境で試してみてください!🚀





