Generieren von SQL-Abfragen: Herausforderungen und Lösungen
Wer selbst programmiert, hat bestimmt schon ein Sprachmodell in Verbindung mit einem Code-Interpreter benutzt. Die vom Interpreter generierten Fehlermeldungen können vom Sprachmodell als Feedback verwendet werden, um den generierten Code automatisch zu verbessern. Das Resultat ist funktionierender Code, im besten Fall schon mit der passenden Namenskonvention versehen. Besonders gut funktioniert das für Applikationen, die mit Python erstellt werden. Doch wie sieht es bei der Generierung von SQL-Abfragen aus, insbesondere bei komplexen Join-Kriterien?
Herausforderungen bei der SQL-Generierung
Sprachmodelle scheitern oft an der Generierung komplexer SQL-Abfragen, weil sie das semantische Modell der Datenbank nicht kennen und keine SQL-Engine oder Datenbankanbindung besitzen, um die generierten Abfragen zu testen. Theoretisch könnte man dem Sprachmodell per Prompt Engineering die Struktur der Datenbankobjekte und deren Abhängigkeiten vermitteln, aber die Datenbankanbindung müsste als Plugin selbst implementiert werden.
Unsere Tests haben gezeigt, dass die Bereitstellung von kontext-spezifischen DDLs und extrahierten Abhängigkeiten aus dem SQL-Server nicht ausreicht, um dem Sprachmodell das semantische Modell detailliert zu erklären. DDLs enthalten oft repetitive Informationen und Abhängigkeiten können ambivalente Hinweise liefern. Für komplexe Datenbankabfragen reicht einfaches Prompt Engineering nicht aus.
Retrieval Augmented Generation (RAG)
Retrieval Augmented Generation (RAG) ist eine Methode, bei der unter Anderem natürliche Texte als Vektoren in einer Vektordatenbank gespeichert werden. Das Sprachmodell kann diese Vektordatenbank verwenden, um eine dedizierte Wissensbasis zu ergänzen und bei Bedarf Informationen abzurufen. Auch das Erstellen einfacher RAG-Pipelines kann für komplexe Anwendungen fehlschlagen, da DDLs als Datenbasis für Multi-Hop Q&A erneut zu repetitiv und ambivalent sind.
Lösungsansätze
Diese Schwächen in der RAG-Pipeline können auf verschiedene Weisen gemildert werden. Zum Beispiel können neben DDLs und Beschreibungen der Abhängigkeiten auch Beispiel-Queries verwendet werden. Eine andere Möglichkeit ist die Kombination der Vektordatenbank mit einem Knowledge Graph. Beide Optionen sind mit Mehraufwand verbunden, da informative Queries erstellt oder der Knowledge Graph generiert werden müssen.
Wir haben zwei KI-Werkzeuge getestet, die versprechen, datenbankspezifische SQL-Queries generieren zu können. Diese Werkzeuge nutzen verschiedene Ansätze, um die genannten Herausforderungen zu bewältigen und die Generierung von SQL-Abfragen zu verbessern. Mehr dazu erfahren Sie in den letzten zwei Teilen unserer Blogserie.
Sie würden gerne KI in Ihrer Unternehmung einsetzen, wissen aber nicht wo anfangen? Buchen Sie unseren kostenlosen [AI]DEATION Workshop und starten Sie mit uns zusammen Ihre Reise durch den KI-Dschungel.