AI・機械学習

Vanna AIでText-to-SQLを実現!自然言語でDBを操作するOSSフレームワーク入門

「SQLってむずかしそう…テーブル構造を覚えるだけで一苦労」そんな悩みを抱えたことはありませんか?

実は今、自然言語(普通の日本語や英語)をそのままSQLに変換してくれるAIフレームワークが注目を集めています。その代表格が Vanna AI です。🎉

Vanna AIって何者?

artificial intelligence database
artificial intelligence database / Photo by Rafael Minguet Delgado via Pexels

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との組み合わせも視野に入るため、コスト面でも柔軟に対応できます。

「むずかしそう」を「できそう」に変えてくれるツールの一つですよね。ぜひローカル環境で試してみてください!🚀

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です