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:
- Trainingsphase: Trainieren Sie ein RAG-"Modell" auf Ihren Daten.
- 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.