vanna-ai/vannaView GitHub Homepage for Latest Official Releases
RAG技術に基づいたオープンソースのPythonフレームワークで、自然言語でSQLデータベースと対話することで、正確なテキストからSQLクエリの生成を実現します。
MITPythonvannavanna-ai 20.6k Last Updated: April 10, 2025
Vanna.ai - インテリジェントSQL生成フレームワーク詳細
プロジェクト概要
Vannaは、MITライセンスのオープンソースPython RAG(検索拡張生成)フレームワークで、SQL生成および関連機能に特化しています。このプロジェクトにより、ユーザーは自然言語でSQLデータベースと対話し、正確なテキストからSQLクエリの生成を実現できます。
GitHubアドレス: https://github.com/vanna-ai/vanna
コア機能
🤖 インテリジェントな対話
- 自然言語インタラクション: ユーザーは自然な言葉で質問でき、システムは対応するSQLクエリを自動生成します。
- リアルタイムフィードバック: 生成結果に対するユーザーからのフィードバックをサポートし、精度を継続的に改善します。
- 自己学習: 正常に実行されたクエリから自動的に学習し、将来の結果の精度を向上させます。
📊 RAG技術アーキテクチャ
Vannaは、検索拡張生成(RAG)技術に基づいており、ワークフローは次の2つの簡単なステップに分かれています。
- トレーニング段階: データ上でRAG「モデル」をトレーニングします。
- クエリ段階: 質問をすると、データベース上で自動的に実行できるSQLクエリが返されます。
🔄 幅広いデータベースサポート
さまざまな主要データベースをサポートします。
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle
- Snowflake
- BigQuery
- ClickHouse
- Apache Hive
- PrestoDB
- SQLite
- DuckDB
技術的優位性
従来のファインチューニング方法と比較した利点
- 高い移植性: さまざまなLLMで使用できます。
- 柔軟なデータ管理: 古いトレーニングデータを簡単に削除できます。
- コスト効率: ファインチューニングよりも実行コストが低くなります。
- 将来性: より優れたLLMに簡単に置き換えることができます。
セキュリティ保証
- データプライバシー: データベースの内容は、LLMまたはベクトルデータベースに送信されません。
- ローカル実行: SQLの実行はローカル環境で行われます。
- プライベートデプロイメント: 完全なプライベートデプロイメントをサポートします。
使用方法
インストール
pip install vanna
基本設定
from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore
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': 'sk-...', 'model': 'gpt-4-...'})
モデルのトレーニング
モデルは、さまざまな方法でトレーニングできます。
DDLステートメントトレーニング:
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
ビジネスドキュメントトレーニング:
vn.train(documentation="Our business defines XYZ as ...")
SQLクエリートレーニング:
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
クエリの使用
vn.ask("What are the top 10 customers by sales?")
システムは以下を返します。
- 生成されたSQLクエリステートメント
- 実行結果テーブル
- 自動生成されたPlotlyグラフ
ユーザーインターフェースオプション
Vannaは、さまざまなユーザーインターフェースを提供します。
- Jupyter Notebook: データアナリストおよび開発者向け
- Webアプリケーション: エンドユーザー向け
- Streamlitアプリケーション: 迅速なプロトタイプ開発
- Slackbot: チームコラボレーション
- カスタムフロントエンド: 完全なカスタマイズソリューション
アーキテクチャ設計
Vannaはモジュール設計を採用しており、抽象基底クラスVannaBaseに基づいて、さまざまなものを簡単に拡張して使用できます。
- 大規模言語モデル: OpenAI、Claude、ローカルモデルなど
- ベクトルデータベース: ChromaDB、Pinecone、Weaviateなど
- データベースコネクタ: Pythonで接続可能なSQLデータベースをサポート
アプリケーションシナリオ
ビジネス分析
- 非技術者は、自然言語で直接データをクエリできます。
- ビジネスレポートと分析を迅速に生成します。
- 一般的なデータクエリタスクを自動化します。
開発効率
- SQL開発プロセスを加速します。
- 複雑なクエリの作成時間を短縮します。
- クエリ最適化の提案を提供します。
教育トレーニング
- SQL構文の学習を支援します。
- 複雑なクエリ構造を理解します。
- データベースのベストプラクティスを学習します。
まとめ
Vanna.aiは、強力で使いやすいテキストからSQLへのフレームワークであり、RAGテクノロジーと大規模言語モデルの組み合わせにより、誰でも自然言語でデータベースと対話できます。データアナリスト、開発者、ビジネスユーザーのいずれであっても、このツールから恩恵を受け、データクエリと分析の効率を大幅に向上させることができます。