Home
Login

RAG技術に基づいたオープンソースのPythonフレームワークで、自然言語でSQLデータベースと対話することで、正確なテキストからSQLクエリの生成を実現します。

MITPython 18.3kvanna-ai Last Updated: 2025-04-10

Vanna.ai - インテリジェントSQL生成フレームワーク詳細

プロジェクト概要

Vannaは、MITライセンスのオープンソースPython RAG(検索拡張生成)フレームワークで、SQL生成および関連機能に特化しています。このプロジェクトにより、ユーザーは自然言語でSQLデータベースと対話し、正確なテキストからSQLクエリの生成を実現できます。

GitHubアドレス: https://github.com/vanna-ai/vanna

コア機能

🤖 インテリジェントな対話

  • 自然言語インタラクション: ユーザーは自然な言葉で質問でき、システムは対応するSQLクエリを自動生成します。
  • リアルタイムフィードバック: 生成結果に対するユーザーからのフィードバックをサポートし、精度を継続的に改善します。
  • 自己学習: 正常に実行されたクエリから自動的に学習し、将来の結果の精度を向上させます。

📊 RAG技術アーキテクチャ

Vannaは、検索拡張生成(RAG)技術に基づいており、ワークフローは次の2つの簡単なステップに分かれています。

  1. トレーニング段階: データ上でRAG「モデル」をトレーニングします。
  2. クエリ段階: 質問をすると、データベース上で自動的に実行できる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テクノロジーと大規模言語モデルの組み合わせにより、誰でも自然言語でデータベースと対話できます。データアナリスト、開発者、ビジネスユーザーのいずれであっても、このツールから恩恵を受け、データクエリと分析の効率を大幅に向上させることができます。