DataLine: Revolutionäre Datenanalyse mit KI und natürlicher Sprache

30.10.2024Ricky Elfner
Tech Artificial Intelligence Database DevOps Cloud Computing github dataanalysis

Banner

Das Thema KI ist nach wie vor aktuell, und es entstehen ständig neue Projekte, die einen Blick wert sind. Dieses Mal schauen wir uns das Projekt DataLine von Rami Awar an. Dabei handelt es sich um ein Open-Source-Tool, mit dem jeder Nutzer seine Daten analysieren und visualisieren kann. Dank der Verwendung von LLMs (Language Models) ist dies in natürlicher Sprache möglich, wodurch es nicht nur für Entwickler nutzbar ist. So lassen sich verschiedene Datenquellen einfach und ohne tiefgehende technische Kenntnisse analysieren. Als Datenquellen können unterschiedliche Datenbanken, aber auch Excel- oder CSV-Dateien angebunden werden.

DataLine legt besonderen Wert auf Datenschutz. Es wird sichergestellt, dass alle Daten ausschließlich lokal beim Nutzer gespeichert werden. Somit ist dieses Tool vor allem für Unternehmen geeignet, die ihre Daten nicht in der Cloud speichern möchten.

Usecases

Durch die Möglichkeit, verschiedene Datenquellen anzubinden und dank der Integration von LLMs eine Vielzahl von Funktionalitäten bereitzustellen, ergeben sich verschiedene Anwendungsfälle.

Datenanalyse für Nicht-Technische User

Hat man beispielsweise eine Datenbank mit ASDF-Daten und möchte diese genauer analysieren, ist es normalerweise erforderlich, SQL-Abfragen zu schreiben. Oft gibt es jedoch Personen aus Fachbereichen, die nur grundlegende oder keine SQL-Kenntnisse haben. Mit DataLine können diese Nutzer dennoch einfach Abfragen erstellen, ohne technische Kenntnisse zu benötigen. Eine typische Anfrage könnte nach dem Durchschnittswert eines bestimmten Datensatzes fragen. DataLine generiert daraufhin automatisch eine SQL-Abfrage und zeigt die gewünschten Daten an.

Datenanalyse für Tech-User

Die zuvor beschriebene Funktionalität ist auch für technische Nutzer äußerst hilfreich. Komplexe Abfragen lassen sich häufig schneller in natürlicher Sprache beschreiben, als sie in SQL zu formulieren. Zudem kann es nützlich sein, alternative Ansätze oder neue Ideen für Abfragen zu erhalten, die man möglicherweise noch nicht bedacht hat.

Visualisierung

Durch die einfache Abfrage von Daten können diese in DataLine so aufbereitet werden, dass sie visuell dargestellt werden. Anstatt nur langweilige Tabellen anzuzeigen, können verschiedene Diagramme generiert werden, um die Daten anschaulich zu präsentieren. Auf Basis der eingegebenen Abfragen schlägt DataLine automatisch die besten Visualisierungsformen vor. Es erkennt, ob Balkendiagramme, Liniendiagramme oder Streudiagramme am besten zu den Daten passen, und präsentiert die Daten entsprechend, was besonders für nicht-technische Nutzer hilfreich ist. Anschliessend ist es auch mögliche diese Diagramme und zu exportieren.

Erklärung

Wenn man verschiedene Datenquellen hat und nicht genau weiß, welche Daten darin enthalten sind, kann DataLine helfen, die Struktur und den Inhalt der Datenquellen verständlich zu erklären.

Security

Dataline wirbt dabei vor allem mit dem Punkt Datenschutz und Sicherheit. Somit ist es eine Lösung für Unternehmen oder Nutzer die mit sensitiven Daten arbeiten und diese nicht in der Cloud speichern möchten.

Dies ist möglich in dem alle Chats mit Dataline nur lokal mittels SQLite auf deinem PC gespeichert werden. Auch Dataline selbst hat keine Server, auch die Homepage wird einfach mittels statischen Files bereitgestellt. Da die gesamte Verarbeitung lokal auf dem eigenen Rechner erfolgt, müssen keine Daten übertragen werden.

Die Integration mit ChatGPT funktioniert, indem lediglich Metadaten wie Tabellennamen und Datentypen übermittelt werden – die eigentlichen Daten bleiben geschützt. Um dies genauer zu untersuchen, kann man LangSmith verwenden, um die verschiedenen API-Aufrufe während einer Konversation detailliert zu analysieren. Dazu muss einfach ein API-Key bei Smith LangChain erstellt und in den Einstellungen hinterlegt werden:

In der Message-Box hat man über das Einstellungssymbol die Möglichkeit, die Datenschutzfunktion zu deaktivieren oder zu aktivieren. Ob diese Funktion aktiv ist, erkennt man am kleinen grünen Sicherheitssymbol.

Im ersten Fall stellen wir eine Anfrage und möchten alle verfügbaren Bestellsummen aus der Datenquelle abrufen. Diese Nachricht ist im ersten Bereich zu erkennen. Im zweiten Bereich sehen wir die Antwort, die von ChatGPT zurückkommt. Hier kann man schonmal sehen, dass keine genauen Informationen zu erkennen sind, welche aus der Tabelle kommen. Zudem erkennt man hier, dass die Daten geschützt sein sollen.

Im dritten Bereich wiederum erkennt man das Resultat von dem bereitgestellten SQL-Statement, welches gegen die lokale SQLite-Datenbank ausgeführt wird. Dadurch erhält man das korrekte Ergebnis von der eigentlichen Datenquelle.

Nun wollen wir dies natürlich überprüfen, indem wir es bei Smith LangChain testen. Dafür öffnen wir den entsprechenden Aufruf. Dort sind die einzelnen Tools sichtbar, die verwendet wurden. In unserem Fall interessieren wir uns für die Tools sql_db_schema und sql_db_query. Hier können wir sehen, dass lediglich die Informationen zu den Tabellennamen und Datentypen übermittelt werden. Außerdem wird im zweiten Tool darauf hingewiesen, dass die Daten nicht angezeigt werden dürfen.

Nun möchten wir die gleiche Abfrage mit deaktivierter Datenschutzfunktion durchführen. Im ersten Bereich sehen wir dieselbe Abfrage wie zuvor.

Im zweiten Abschnitt fallen direkt zwei wichtige Unterschiede auf. Zum einen ist das grüne Datenschutzsymbol nicht mehr sichtbar, und zum anderen gibt die ChatGPT-Antwort nun Daten preis, die direkt aus der Datenquelle stammen.

Der dritte Bereich unterscheidet sich in diesem Fall jedoch nicht.

Und um ganz sicherzugehen, prüfen wir den Input für das entsprechende Tool über Smith LangChain. Auf der rechten Seite sehen wir nun, dass mehrere Daten übermittelt werden. Zum einen werden drei vollständige Einträge gesendet, und beim zweiten Tool werden alle OrderAmount-Werte übermittelt.

Verwendung / Tipp

SQL Statement bearbeiten

Hat man als Resultat ein SQL-Statement erhalten, kann man dieses nicht nur bearbeiten, sondern auch direkt erneut ausführen, um das Ergebnis zu aktualisieren. Dies ermöglicht eine schnelle Anpassung und Verfeinerung der Abfragen, ohne dass man den gesamten Prozess von vorne beginnen muss. So können Nutzer iterativ arbeiten und ihre Abfragen schrittweise optimieren, bis sie das gewünschte Resultat erhalten.

Falsche Informationen

Leider ist mir mehrfach aufgefallen, dass die Beschreibungen im Text nicht immer korrekt sind, obwohl das SQL-Statement korrekt ist und auch das Ergebnis richtig angezeigt wird.

In diesem Beispiel sehen wir, dass als korrektes Resultat fünf eindeutige CustomerIDs ausgegeben werden. Allerdings wird im Text fälschlicherweise angegeben, dass es zehn wären.

Authentifizierung

Um die Sicherheit zu erhöhen, kann bei DataLine eine Authentifizierung eingerichtet werden. Dies erfolgt durch das Festlegen von Umgebungsvariablen für den Benutzernamen und das Passwort. Im Beispiel werden die Variablen AUTH_USERNAME und AUTH_PASSWORD mit den Werten b-nova und techhub gesetzt. Anschließend wird DataLine gestartet, wodurch der Zugriff nur nach erfolgreicher Authentifizierung möglich ist. Dies schützt den Zugang zu sensiblen Daten, besonders in selbst gehosteten Umgebungen.

1
2
3
export AUTH_USERNAME=b-nova
export AUTH_PASSWORD=techhub
dataline

Hands-On

Installation und Konfiguration

Um DataLine über Homebrew zu installieren, führe den folgenden Befehl aus:

1
brew tap ramiawar/dataline && brew install dataline

Nach der Installation kann der Server mit dem Befehl dataline gestartet werden. Daraufhin öffnet sich ein neues Fenster im Browser, in dem als erster Schritt der API-Key von OpenAI eingefügt werden muss. Dieser API-Key kann auf der OpenAI Plattform erstellt werden.

Datenquellen hinzufügen

Sobald dies erfolgreich abgeschlossen ist, wird die initiale Ansicht von DataLine angezeigt, in der die Möglichkeit besteht, eine neue Datenquelle einzurichten. Hier können verschiedene Datenbanken oder Dateiformate wie CSV oder Excel angebunden werden, um mit der Analyse zu beginnen.

Mit einem Klick auf “Add new Connection” öffnet sich ein neues Fenster, in dem man einen Namen für die Verbindung festlegen und entscheiden kann, ob man Beispieldaten verwenden oder eigene Daten einbinden möchte. Für unseren Hands-on-Teil starten wir zunächst mit einer einfachen CSV-Datei. Wählt man “Setup a custom connection”, hat man die Möglichkeit, zwischen verschiedenen Datenquellen zu wählen, darunter Datenbanken wie SQLite sowie Dateien im CSV-, Excel- oder sas7bdat-Format.

Nachdem man die CSV-Datei ausgewählt hat, öffnet sich ein Dropdown-Bereich, in dem die Datei per Drag-and-Drop hineingezogen oder über das Kontextmenü aus dem Dateisystem ausgewählt werden kann. Sobald die Datei erfolgreich hochgeladen wurde, erscheint die neue Verbindung auf der Startseite, und die Datenquelle ist bereit für die Analyse.

Schaut man sich nun die Einstellungen genauer an, erkennt man, dass eine SQLite-Datenbank mit den hochgeladenen Daten erstellt wird. Dies ermöglicht es überhaupt erst, die Daten mithilfe von SQL-Statements zu durchsuchen und zu analysieren.

CSV-Datei analysieren

Mit einem Klick auf die Verbindung öffnet sich das typische ChatGPT-Fenster, und man kann direkt beginnen, mit der Datenquelle zu arbeiten und Abfragen zu stellen.

Dies ist der Inhalt von unserer Beispieldatei:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
CustomerID,CustomerName,OrderID,OrderDate,OrderAmount,Country
1,Alice,101,2024-01-15,250,USA
2,Bob,102,2024-02-20,450,Germany
3,Charlie,103,2024-03-05,300,USA
4,David,104,2024-04-10,500,UK
5,Eve,105,2024-05-18,700,Germany
1,Alice,106,2024-06-18,150,USA
3,Charlie,107,2024-06-18,2000,Germany
5,Eve,108,2024-06-18,700,UK
2,Bob,109,2024-02-20,4500,Germany

Möchte man nun die gesamte Bestellmenge pro Kunde ermitteln, kann man dies ganz einfach in natürlicher Sprache anfragen. DataLine zeigt das Ergebnis in Form einer Tabelle an und generiert dazu das passende SQL-Statement, das ebenfalls angezeigt wird. So erhält man schnell sowohl die Antwort als auch den zugrunde liegenden SQL-Code.

Im Log des laufenden Servers sieht man dazu folgenden Log:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
INFO:     127.0.0.1:58448 - "POST /conversation/58b01913-29d2-4ce8-afd2-59b1cb9e06a1/query?execute=true&query=What%20is%20the%20total%20order%20amount%20per%20customer%3F HTTP/1.1" 200 OK
INFO:     127.0.0.1:58417 - "GET /healthcheck HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:     127.0.0.1:58417 - "GET /healthcheck HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:     127.0.0.1:58417 - "GET /healthcheck HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:     127.0.0.1:58417 - "POST /conversation/58b01913-29d2-4ce8-afd2-59b1cb9e06a1/generate-title HTTP/1.1" 200 OK
INFO:     127.0.0.1:58417 - "GET /conversations HTTP/1.1" 200 OK
INFO:     127.0.0.1:58417 - "GET /healthcheck HTTP/1.1" 200 OK

Natürlich kann man dies auch visualisieren lassen. Dabei hat man die Möglichkeit dies als Balken-, Linien- oder Kreis-Diagramm darzustellen.

Excel Datei analysieren

Auch wenn man eine Excel-Datei mit 10'000 Daten als neue Connection hinzufügt hat, lassen sich die Daten in einer angemessenen Zeit abfragen:

Fazit

DataLine ist ein vielversprechendes Tool, das sowohl für technische als auch nicht-technische Nutzer eine einfache Möglichkeit bietet, Daten zu analysieren und zu visualisieren. Was mich besonders überzeugt hat, ist die Benutzerfreundlichkeit und die Tatsache, dass es genau das hält, was es verspricht. Die Installation war dank Homebrew unkompliziert und innerhalb weniger Minuten abgeschlossen, sodass man sofort loslegen kann.

Besonders beeindruckend ist, wie gut die Abfragen in natürlicher Sprache funktionieren, vor allem in Englisch. Hier zeigt sich das Potenzial von ChatGPT. Die Unterstützung für verschiedene Datenquellen wie CSV, Excel und MySQL-Datenbanken lief in meinen Tests reibungslos, und die Integration war mühelos. Die Geschwindigkeit für jemanden, der regelmäßig mit ChatGPT arbeitet, ist ebenfalls in Ordnung.

Ein großer Pluspunkt von DataLine ist die lokale Speicherung der Daten, was für Unternehmen, die ihre Daten nicht in der Cloud haben möchten, ein enormer Sicherheitsvorteil ist. Jeder Nutzer ist dabei selbst verantwortlich, seine lokalen Daten zu schützen, was gerade bei sensiblen Informationen relevant ist.

Eine Einschränkung, die beachtet werden sollte, ist die aktuelle Beschränkung der Dateigröße auf 500 MB für lokale Dateien. Dies könnte in zukünftigen Versionen verbessert werden, ebenso wie die Unterstützung für weitere Datenquellen. Dennoch bietet DataLine einen echten Mehrwert, insbesondere für Nutzer, die keine tiefen technischen SQL-Kenntnisse besitzen, aber schnell große Datenmengen analysieren möchten. Auch Tech-User profitieren von der automatisierten SQL-Generierung und der Möglichkeit, Statements manuell anzupassen.

Insgesamt ist DataLine ein nützliches Tool zur Datenanalyse und bietet Potenzial für zukünftige Weiterentwicklungen. Es ist definitiv einen Blick wert, besonders wenn man schnelle und einfache Datenanalysen sucht, ohne aufwendig programmieren zu müssen.

Ricky Elfner

Ricky Elfner – Denker, Überlebenskünstler, Gadget-Sammler. Dabei ist er immer auf der Suche nach neuen Innovationen, sowie Tech News, um immer über aktuelle Themen schreiben zu können.