Einsatz von ChatGPT zur Erweiterung einer PostgreSQL-Anwendung

Hallo zusammen,

ich beschäftige mich gerade mit der Frage, wie man moderne KI-Modelle wie ChatGPT sinnvoll in bestehende PostgreSQL-basierte Anwendungen integrieren kann. Genauer gesagt geht es mir darum, wie man z. B. semantische Suche, automatische Berichtsgenerierung oder sogar einfache Natural-Language-Query-Interfaces realisieren könnte – also eine Art Brücke zwischen natürlicher Sprache und SQL.

In einem ersten Test habe ich ein kleines Skript gebaut, das Benutzeranfragen in Klartext an ChatGPT übergibt (via API), und das Modell generiert daraus SQL-Statements, die dann direkt gegen eine PostgreSQL-Datenbank laufen. Natürlich nur mit einer manuellen Prüfung dazwischen – Sicherheit geht vor :wink:

Wie würdet ihr so ein System absichern? (Stichwort: SQL Injection, Rollenrechte etc.)
Mir ist klar, dass man das nicht einfach “out-of-the-box” einsetzen sollte – aber als Werkzeug zur Produktivitätssteigerung könnte es durchaus Potenzial haben.

Es scheint, dass nur wenige Leute im Forum über dieses Thema Bescheid wissen.

Scheint so. Allerdings ist die Frage auch so vage, daß eine konkrete Antwort schwer möglich ist.
Der Benutzer läßt automatisch Anfragen erstellen - allerdings werden die manuell überprüft. Von wem? Absichern gegen was? Gegen den Überprüfer?

Ob das die Produktivität steigert, wenn jemand den Bockmist, den die künstliche Intelligenz erzeugt, unter Rücksprache mit dem Auftraggeber korrigieren muß, würde erst die Praxis zeigen.

Ein solches System muss ja Kenntnis des DB Modells haben, um sinnvolle Abfragen generieren zu können. Aber das kann man prompten.
KI sind in der Lage, (syntaktisch) richtige Abfragen zu generieren, mglw. auch semantisch sinnvolle oder sogar Performanceaspekte zu berücksichtigen(?). Aber darauf kann man sich nicht verlassen.
Absicherung:
Kein direkter Zugriff auf die Tabellen: Statt dessen vorgefertigte Views, Rechtebeschränkung, ggF. Quotabeschränkungen.
Keine Joins erlauben / ermöglichen, dafür wären die Views da.
Abfragen vor der Ausführung prüfen, parsen, ein fehlender oder falscher Join bspw. könnte eine extreme Last auf der DB ergeben.

Was will oder kann man erreichen? Ein solches Werkzeug in den Händen eines Fachmanns kann wahrscheinlich einige Fleiß- oder Routinearbeit abnehmen. Hier wären auch fehlerhafte Abfragen unproblematisch (im Sinne der Systemstabilität), die Richtigkeit einer Abfrage verliert bei bequem und vielen automatisch erstellen Abfragen wahrscheinlich leicht den Fokus und auch Fachleute bemerken solche Fehler u.U. nicht.

Anfänger sollten so etwas m.E. nur in einer TrainingsDB nutzen. Besonders dann, wenn man einen direkten Tabellenzugriff doch erlauben würde und damit die ganze SQL Power nutz- bzw. erlernbar macht.

Es ist ein wenig wie mit autonomen Fahrzeugen. Wer haftet am Ende für Ergebnisse oder Datenintegrität?

Warum ausgerechnet ChatGPT, warum nicht ein Opensource Modell?

Gerade der Punkt, dass das System Kenntnisse über das DB-Modell braucht, ist zentral. Ich habe in meinem Test tatsächlich einfache Prompts mit Beispieldatenbankstruktur verwendet – also z. B. Tabellen- und Spaltennamen explizit mitgegeben. Damit lassen sich schon ganz brauchbare Abfragen erzeugen, aber wie du sagst: syntaktisch richtig ≠ semantisch sinnvoll oder performant.

Deine Idee mit Views statt direktem Tabellenzugriff finde ich sehr spannend – besonders im Zusammenspiel mit einer Rechtebeschränkung. So könnte man das Risiko potenziell fehlerhafter oder zu teurer Abfragen zumindest stark reduzieren. Auch die Idee, Joins gezielt über Views zu kapseln, ist ein guter Sicherheitsanker.

Warum gerade ChatGPT? Gute Frage :slightly_smiling_face: – ehrlich gesagt aus pragmatischen Gründen: Die API ist einfach zu benutzen, es gibt gute Doku, und für erste Tests war es einfach am schnellsten umsetzbar. Mittelfristig würde ich aber auch gern mal z. B. LLama 3 oder andere Open-Source-Modelle ausprobieren – gerade wenn man lokal arbeiten will oder datenschutzkritische Umgebungen hat.

Die Analogie zum autonomen Fahren finde ich sehr treffend – besonders was das Thema Verantwortung und Nachvollziehbarkeit betrifft. Letztlich muss man sich fragen: Wollen wir der KI (noch) Entscheidungen überlassen oder nur Assistenzaufgaben? Für mich ist aktuell ganz klar: nur Assistenz, mit starker Kontrolle.

Wenn du (oder jemand anders hier) schon mal mit einem Open-Source-Modell in Verbindung mit PostgreSQL experimentiert hast, würde mich das sehr interessieren.

Viele Grüße

Ist es nicht eher: man will/muss lokal arbeiten, weil man Datenschutz gewährleisten will/muss?
Wieso sollte man ohne Not Firmendaten (oder Private) einem kommerziellen Anbieter in den Rachen werfen?

Ich denke, ein LLM kann ein DB Modell gut interpretieren. Ihm nur Tabellen und Spaltennamen zu geben, wäre sozusagen Verschwendung, falsch, sagen wir Kastration.
Gleiches gilt natürlich für eine DB selbst. Also, die Leistungskraft beider Systeme reizt man erst mit einem guten, wasserdichten, ausdrucksstarken DB Modell aus.

Zur sematischen Suche: Das geht sicher gut per Ontologie, bspw. in einem Produkt- / Shop Datenmodell. Aus Produktnamen, allgemeinen Bezeichnungen, Produktkategorien und Beschreibungen oder Eigenschaften ließe sich ohne KI eine schicke Ontologie bauen. Ein gutes Datenmodell, das viele Produkteigenschaften abbildet wäre dabei hilfreich.
Ob ein allgemeines LLM dabei hilft, eine DB oder eine Ontologie nach bestimmten Produktmerkmalen zu suchen, kann ich grad nicht sagen, ähnlich bei automatischen Berichten. Meist fehlt mir da die Fantasie, die Auswertungswünsche von Kaufleuten oder Kontrollern zu antizipieren. Oft sind es ja Standards.

Ein Stück SQL generieren zu lassen, ähnlich wie ein Stück Code, das kann ich mir gut vorstellen mit (irgendeinem) LLM. Ob ich das jetzt online im Browser, per Command line oder in einer App integriert mache, wo siehst Du den Unterschied?

Wenn man von LLM und DB spricht, sähe ich einen Nutzen vielleicht eher in der Nutzung von RAG Verfahren auf Datenbanken bzw. Verfahren, die große Datenmengen klein und passend genug gefiltert einer KI servieren.

Gemacht habe ich noch nichts davon.

1 „Gefällt mir“

Firmen- oder Personendaten ohne Not an einen externen Anbieter zu geben, ist tatsächlich ein „No-Go“ – und auch in meinem Fall ging es nur um synthetische Testdaten. Aber langfristig wäre eine lokale Lösung tatsächlich der logischere Weg, auch aus Gründen der Nachvollziehbarkeit und Kostenkontrolle.

Das mit dem DB-Modell sehe ich auch so: Wenn man ein wirklich gutes und ausdrucksstarkes Modell hat, lässt sich damit sehr viel machen – egal ob mit KI oder ohne. Ich habe in meinem kleinen Test eben bei null angefangen und nur Tabellen- und Spaltennamen übergeben, um erstmal das Prinzip auszuprobieren. War mehr ein „Proof of Concept“ als eine produktionsnahe Architektur. Dass man damit die Möglichkeiten von LLMs einschränkt, stimmt natürlich.

Für viele Anwendungsfälle im Produkt- oder Shop-Umfeld lässt sich damit tatsächlich sehr viel erreichen, ganz ohne KI. Mein Gedanke mit semantischer Suche ging eher in Richtung „freie Textabfragen der Nutzer in SQL übersetzen“, aber vielleicht wäre eine Kombination von Ontologie + KI für unstrukturiertere Daten interessant.

RAG-Ansätze sind für mich auch ein Thema, das ich mir noch genauer anschauen möchte. Vor allem, weil man damit ja eher die Stärke der KI im Interpretieren nutzt, ohne dass sie direkt „am offenen Herzen der Datenbank“ operiert.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.