Home
Login

Ein Open-Source-Python-Framework basierend auf RAG-Technologie, das die Konversation mit SQL-Datenbanken in natürlicher Sprache ermöglicht und eine genaue Text-zu-SQL-Abfragegenerierung realisiert.

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

Vanna.ai - Intelligentes SQL-Generierungs-Framework im Detail

Projektübersicht

Vanna ist ein MIT-lizenziertes Open-Source-Python-RAG-Framework (Retrieval-Augmented Generation), das speziell für die SQL-Generierung und verwandte Funktionen entwickelt wurde. Das Projekt ermöglicht es Benutzern, über natürliche Sprache mit SQL-Datenbanken zu interagieren und eine genaue Text-zu-SQL-Abfragegenerierung zu realisieren.

GitHub-Adresse: https://github.com/vanna-ai/vanna

Kernfunktionen

🤖 Intelligente Konversation

  • Interaktion in natürlicher Sprache: Benutzer können Fragen in Umgangssprache stellen, und das System generiert automatisch die entsprechenden SQL-Abfragen.
  • Echtzeit-Feedback: Unterstützt Benutzer bei der Rückmeldung zu den generierten Ergebnissen, um die Genauigkeit kontinuierlich zu verbessern.
  • Selbstlernen: Kann aus erfolgreich ausgeführten Abfragen automatisch lernen, um die Genauigkeit zukünftiger Ergebnisse zu erhöhen.

📊 RAG-Technologiearchitektur

Vanna basiert auf der Retrieval-Augmented Generation (RAG)-Technologie. Der Workflow ist in zwei einfache Schritte unterteilt:

  1. Trainingsphase: Trainieren Sie ein RAG-"Modell" auf Ihren Daten.
  2. Abfragephase: Stellen Sie eine Frage und erhalten Sie eine SQL-Abfrage, die automatisch in der Datenbank ausgeführt werden kann.

🔄 Breite Datenbankunterstützung

Unterstützt eine Vielzahl von Mainstream-Datenbanken:

  • PostgreSQL
  • MySQL
  • Microsoft SQL Server
  • Oracle
  • Snowflake
  • BigQuery
  • ClickHouse
  • Apache Hive
  • PrestoDB
  • SQLite
  • DuckDB

Technische Vorteile

Vorteile gegenüber traditionellen Feinabstimmungsmethoden

  • Hohe Portabilität: Kann über verschiedene LLMs hinweg verwendet werden.
  • Flexible Datenverwaltung: Einfaches Entfernen veralteter Trainingsdaten.
  • Kosteneffizienz: Geringere Betriebskosten als bei der Feinabstimmung.
  • Zukunftsorientiert: Einfacher Austausch gegen bessere LLMs.

Sicherheitsgarantie

  • Datenschutz: Datenbankinhalte werden niemals an LLMs oder Vektordatenbanken gesendet.
  • Lokale Ausführung: Die SQL-Ausführung erfolgt in einer lokalen Umgebung.
  • Private Bereitstellung: Unterstützt eine vollständig private Bereitstellung.

Verwendung

Installation

pip install vanna

Grundkonfiguration

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-...'})

Modell trainieren

Das Modell kann auf verschiedene Arten trainiert werden:

DDL-Anweisungstraining:

vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
)
""")

Geschäftsdokumentationstraining:

vn.train(documentation="Our business defines XYZ as ...")

SQL-Abfragetraining:

vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

Abfrage verwenden

vn.ask("What are the top 10 customers by sales?")

Das System gibt Folgendes zurück:

  • Die generierte SQL-Abfrageanweisung
  • Eine Tabelle mit den Ausführungsergebnissen
  • Automatisch generierte Plotly-Diagramme

Benutzeroberflächenoptionen

Vanna bietet verschiedene Benutzeroberflächen:

  • Jupyter Notebook: Geeignet für Datenanalysten und Entwickler
  • Webanwendung: Geeignet für Endbenutzer
  • Streamlit-Anwendung: Schnelle Prototypenentwicklung
  • Slackbot: Teamzusammenarbeit
  • Benutzerdefiniertes Frontend: Vollständig angepasste Lösung

Architekturentwurf

Vanna verwendet ein modulares Design, das auf der abstrakten Basisklasse VannaBase basiert und einfach erweitert werden kann, um verschiedene zu verwenden:

  • Große Sprachmodelle: OpenAI, Claude, lokale Modelle usw.
  • Vektordatenbanken: ChromaDB, Pinecone, Weaviate usw.
  • Datenbankkonnektoren: Unterstützt jede SQL-Datenbank, die über Python verbunden werden kann.

Anwendungsbereiche

Geschäftsanalyse

  • Nicht-technische Benutzer können Daten direkt in natürlicher Sprache abfragen.
  • Schnelle Generierung von Geschäftsberichten und -analysen.
  • Automatisierung gängiger Datenabfrageaufgaben.

Entwicklungseffizienz

  • Beschleunigung des SQL-Entwicklungsprozesses.
  • Reduzierung der Schreibzeit komplexer Abfragen.
  • Bereitstellung von Vorschlägen zur Abfrageoptimierung.

Aus- und Weiterbildung

  • Hilfe beim Erlernen der SQL-Syntax.
  • Verständnis komplexer Abfragestrukturen.
  • Lernen von Best Practices für Datenbanken.

Zusammenfassung

Vanna.ai ist ein leistungsstarkes und einfach zu bedienendes Text-zu-SQL-Framework, das durch die Kombination von RAG-Technologie und großen Sprachmodellen jedem ermöglicht, in natürlicher Sprache mit Datenbanken zu interagieren. Ob Datenanalyst, Entwickler oder Geschäftsanwender, jeder kann von diesem Tool profitieren und die Effizienz der Datenabfrage und -analyse erheblich steigern.