Gitrend
🤖

爆速Text-to-SQL!vannaがDB操作を変える!

Python 2026/2/4
Summary
SQL書くの面倒?LLMに任せたい?そんな夢、vannaが叶えちゃう! もう複雑なクエリで悩まない!AIがあなたのDBと対話します。 これはデータベース操作の未来だ!エンジニアなら見逃せないぜ!

概要:なにこれ凄い?

うおおお!皆さん、この「vanna-ai/vanna」をチェックしたか!? 僕、正直Text-to-SQLって、まだまだ実用レベルじゃないって思ってたんだ。でもね、vannaは違った! ただのLLMにプロンプトを投げるだけじゃない。「Agentic Retrieval」ってアプローチがマジで賢い!DBのスキーマや過去の成功例をちゃんと参照して、高精度なクエリを生成してくれるんだよ。 これにより、LLMの幻覚(ハルシネーション)を抑えつつ、僕らが本当に欲しいクエリをバシッと出してくれる。これには感動しちゃったね!データエンジニアの作業が劇的に変わる可能性を秘めてるって確信したよ!

ここが推し!

サクッと試そう(使用例)

import vanna as vn
import pandas as pd
from sqlalchemy import create_engine

# ① Vannaのセットアップ! (今回は無料で使えるSQLiteメモリDBで試すぜ!)
# VannaのAPIキーが必要になるけど、自分の環境に合わせて適宜変更してね!
# ローカルLLMを使う設定もできるから、ドキュメントをチェックだ!
vn_app = vn.Vanna(model='vanna-ai/vanna-7b', api_key='YOUR_VANNA_API_KEY_HERE') # vanna.aiで発行したAPIキーをここに!

# ② ダミーデータベースの準備 (SQLiteのインメモリDB)
engine = create_engine('sqlite:///:memory:')
df_users = pd.DataFrame({
    'user_id': [1, 2, 3, 4],
    'name': ['Akira', 'Bob', 'Charlie', 'Diana'],
    'age': [30, 24, 35, 29],
    'city': ['Tokyo', 'Osaka', 'Tokyo', 'Nagoya']
})
df_products = pd.DataFrame({
    'product_id': [101, 102, 103],
    'product_name': ['Laptop', 'Mouse', 'Keyboard'],
    'price': [1200, 25, 75]
})
df_users.to_sql('users', engine, index=False, if_exists='replace')
df_products.to_sql('products', engine, index=False, if_exists='replace')

vn_app.set_connection(engine=engine)

# ③ スキーマや過去のSQL例を学習させる (ここが精度向上の秘訣!)
# Vannaは自動でスキーマを認識するけど、詳細な情報や成功例を教えることで賢くなるんだ!
vn_app.train(ddl="""
    CREATE TABLE users (
        user_id INTEGER PRIMARY KEY,
        name TEXT,
        age INTEGER,
        city TEXT
    );
    CREATE TABLE products (
        product_id INTEGER PRIMARY KEY,
        product_name TEXT,
        price INTEGER
    );
""")
vn_app.train(documentation="usersテーブルは顧客情報を、productsテーブルは商品情報を格納しています。")
vn_app.train(sql="SELECT name, age FROM users WHERE city = 'Tokyo';", df=pd.DataFrame({'name': ['Akira', 'Charlie'], 'age': [30, 35]}))

# ④ いざ、自然言語でSQLを生成・実行!
print("--- 質問1: 東京に住んでいる30歳以上のユーザーの名前と年齢を教えて! ---")
response1 = vn_app.ask(question="東京に住んでいる30歳以上のユーザーの名前と年齢は?")
print("生成されたSQL:\n", response1.get_sql())
print("\n実行結果:\n", response1.get_df())

print("\n--- 質問2: 平均価格が100ドル以上の商品の名前を教えて! ---")
response2 = vn_app.ask(question="平均価格が100ドル以上の商品の名前は?")
print("生成されたSQL:\n", response2.get_sql())
print("\n実行結果:\n", response2.get_df())

ぶっちゃけ誰向け?

まとめ

vanna-ai/vanna、これはマジで期待大のプロジェクトだよ! 従来のText-to-SQLの課題を「Agentic Retrieval」という賢いアプローチで解決し、高精度なSQL生成を実現している。僕らのデータベースとの付き合い方、データ分析のワークフローが大きく変わる可能性を秘めているね。 使えば使うほど賢くなるし、様々なデータベースやLLMに対応している汎用性の高さも素晴らしい!これは、間違いなくGitHubトレンドを追いかける価値のあるツールだし、これからの開発が本当に楽しみだね!データとAIの未来を覗き見たいなら、今すぐvannaを触ってみるべし!