Wie wir GenAI genutzt haben, um die Regierung zu verstehen

26.02.2024

Rushil Daya

Wir haben einen RAG-Chatbot mit AWS Bedrock und GPT-4 entwickelt, um Fragen zur flämischen Regierung zu beantworten.

Im Jahr 2024 fliegen wir in einen perfekten Sturm: 49 % der Weltbevölkerung gehen zur Wahl (das größte Wahljahr in der Geschichte), während gleichzeitig von GenAI erzeugte Fehlinformationen immer schwerer zu erkennen sind. Zweifellos wird 2024 das Jahr des großen Wandels sein — das Einzige, von dem ich denke, dass es sich nicht ändern wird, ist die Tatsache, dass unsere glatten Affenhirne nicht in der Lage sind, weise Entscheidungen zu treffen, wenn sie mit (Fehl-)Informationen überflutet werden.

Aber — und es gibt immer ein Aber …

GenAI + Politik muss nicht unbedingt gleichzusetzen sein mit einer Katastrophe. Wie das Sprichwort sagt: „Die einzige Möglichkeit, einen bösen Kerl mit einem KI-Bot aufzuhalten, ist ein guter Kerl mit einem KI-Bot“. Mit diesem Gedanken wollten wir sehen, ob wir GenAI nutzen können, um die Regierung zu verstehen und den Alltag Bürgern zu ermöglichen, die Entscheidungen ihrer Regierung nachvollziehen zu können.

Kommt auf den Punkt 🇧🇪

Als wir in Flandern leben, war unser Augenmerk natürlich auf die flämische Regierung gerichtet. Die glücklicherweise sehr transparent ist, wenn es darum geht, Informationen auszutauschen. Alle Entscheidungen, die sie treffen, sind hier öffentlich zugänglich. Während dies eine nützliche Ressource ist, kann sie schnell überwältigend werden und schwer zu verstehen sein. Wir glaubten, dass wir durch die Nutzung von GenAI eine Interpretations- und Zusammenfassungs-Schicht über dieser Ressource hinzufügen könnten, um sie zugänglicher und nützlicher für die Allgemeinheit zu machen.

Vorstellung des RegeringsRobot* 🤖

Nach viel Brainstorming und Überlegungen wurde klar, dass wir einen Chatbot benötigten, der in der Lage ist, die Fragen eines Nutzers zur Regierung zu beantworten und dabei insbesondere auf die Entscheidungen der flämischen Regierung im letzten Wahlzyklus eingehen sollte. Der Chatbot muss in der Lage sein, relevante Regierungsentscheidungen zu enthüllen und diese in eine einzige, leicht verdauliche Antwort zu synthetisieren.

Ich werde im nächsten Abschnitt auf die technischen Aspekte eingehen, wie wir unseren Bot implementiert haben, aber lassen Sie mich zuerst vorstellen, was wir gebaut haben — den Regeringsrobot. Ich lade Sie ein, sich praktisch damit zu beschäftigen und Ihre brennenden Fragen zu stellen.

Der gesamte Quellcode für den Bot ist auf unserem GitHub verfügbar. Dieses Projekt ist ein Experiment und somit sind alle Rückmeldungen willkommen — Sie können Ihre Gedanken über die Website oder auf GitHub mit uns teilen.

Unsere Implementierung 🛠

Jetzt ist es an der Zeit, etwas technisch zu werden… Wenn Sie gegen Nerdsprache allergisch sind, empfehle ich Ihnen, zum nächsten Abschnitt überzugehen.

Unser Ziel der Zusammenfassung und Interpretation von Text führt uns natürlich zu großen Sprachmodellen (LLMs) und da wir das Ziel haben, faktische und zitierbare Informationen bereitzustellen, ist die gängige Technik hierfür die retrieval augmented generation (RAG). Es gibt viele tiefgehende Erklärungen zu RAG, um es kurz zu halten: RAG ist, wenn Sie die spezifischen kontextuellen Elemente, die als semantisch relevant für die Anfrage des Nutzers erachtet werden, direkt in das Prompt einfügen, das Sie an das LLM übergeben. Ein einfaches RAG-Prompt sieht so aus:

"Using only the context provided below
 answer the following question
 question: {YOUR QUESTION}
 context: {RELEVANT CONTEXT}"

Der Retrieval-Teil von RAG, also das Abrufen der semantisch relevanten Kontextstücke, wird typischerweise durchgeführt, indem Vektor-Embeddings von Teilen der Quelldaten in einer Vektor-Datenbank gespeichert werden. Wenn eine Frage gestellt wird, berechnen wir das Vektor-Embedding der Frage und rufen die kontextuellen Elemente ab, die im Vektorraum am nächsten zur Frage liegen.

Da wir sicherstellen wollten, dass wir einen RAG-Ansatz verfolgen, mussten wir ein System implementieren, das in der Lage ist, Nutzern in einem skalierbaren, kostengünstigen und idealerweise serverlosen Modus zu dienen. Im Folgenden gebe ich einen Überblick über das System, das wir implementiert haben.

Daten sammeln, reinigen und speichern: Wir haben einen Python-Web-Scraper entwickelt, um Informationen von der Webseite der Regierungsentscheidungen zu sammeln. Diese Inhalte wurden dann bereinigt und jede Entscheidung in einer .txt-Datei innerhalb eines S3-Buckets gespeichert.

Vektor-Datenbank: Sobald unsere Daten gespeichert sind, werden sie in eine Vektor-Datenbank verschoben. Wir haben uns für eine Wissensdatenbank auf AWS Bedrock entschieden. Die Wissensdatenbank ist im Grunde genommen eine Abstraktion über eine Vektor-Datenbank und eine Einbettungsfunktion. Mit diesem Ansatz ergeben sich mehrere Vorteile:

Einfach zu bedienen — eine Wissensdatenbank kann in wenigen Minuten eingerichtet werden. Alles, was Sie tun müssen, ist, ein S3-Präfix anzugeben, um festzulegen, wo Ihre Daten sind, und Ihre Einbettungsfunktion auszuwählen. Sie müssen sich nicht selbst um die Vektor-Datenbank kümmern.

Plug & Play-Einbettungsfunktionen — Bedrock versucht, eine einheitliche Plattform bereitzustellen, auf der Sie einfach zwischen grundlegenden Modellen wechseln können, was auch für Einbettungsfunktionen gilt. Da unser Datensatz fast ausschließlich in Niederländisch ist, haben wir uns für eine mehrsprachige Einbettungsfunktion von Cohere entschieden.

clientseitig initierter RAG-Fluss: Wir haben eine Single Page Application entwickelt, die auf Cloudflare-Seiten gehostet wird und eine Chat-Oberfläche bietet, über die die Nutzer eine RAG-Interaktion initiieren können, indem sie einen Aufruf an einen API-Gateway-Endpunkt machen. Um die Kosten zu kontrollieren, während wir gleichzeitig ein restriktives Anmeldeverfahren vermeiden, nutzen wir die Nutzungspläne des API-Gateways, die es uns ermöglichen, Nutzungsquoten und Ratenlimits für unseren Endpunkt festzulegen. Die Kernlogik unseres Systems wird innerhalb einer Lambda-Funktion ausgeführt, die die folgenden 3 Schritte durchführt:

Abruf — nicht überraschend ist der erste Schritt des RAG-Pipelines der Abruf, wir rufen die nächsten N Entscheidungen aus der Bedrock-Wissensdatenbank ab.

Erzeugung — wir nutzen GPT-4 für die Erzeugung, wobei unsere Lambda-Funktion Aufrufe an die OpenAI-API macht.

Aktualisieren der Referenzen — schließlich müssen wir einige Nachbearbeitungen durchführen. Da keine Garantie besteht, dass das LLM alle bereitgestellten Kontexte verwendet, fordern wir das Modell ausdrücklich auf, anzugeben, auf welche Referenzen es zurückgegriffen hat; dies ermöglicht es uns, die Liste der abgerufenen Kontexte, die wir dem Nutzer zurückgeben, auf nur die im Antwort genannten zu reduzieren. Darüber hinaus gibt Bedrock Referenzen auf S3-Objekte zurück, aber um für den Endnutzer nützlich zu sein, müssen wir diese S3-Objekt-Links auch in Links zur offiziellen Regierungswebsite umwandeln.

Warum nicht Bedrock bis zum Ende? AWS Bedrock wird als One-Stop-Shop für all Ihre GenAI-Bedürfnisse vermarktet — es kann also seltsam erscheinen, dass wir Bedrock nur für unsere Wissensdatenbank und nicht für den Generierungsprozess verwenden. Der Grund dafür ist bedauerlicherweise nicht sehr aufregend; zu dem Zeitpunkt, als wir den Regeringsrobot implementierten, stellten wir fest, dass die Generierungsfunktion von Bedrock noch fehlerhaft war. Ich freue mich darauf, diese Architektur erneut zu besuchen, sobald die Bedrock-Plattform ausgereifter ist.

Meine wichtigsten Erkenntnisse (haben wir die Welt gerettet?)🤔

Der Regeringsrobot ist in der Lage, Fragen, für die er Kontext hat, auf eine aufschlussreiche und zitierbare Weise zu beantworten. Ich glaube, wir waren erfolgreich darin, zu beweisen, dass GenAI in diesem Bereich Mehrwert schaffen kann.

Aber — und es gibt immer ein Aber…

Die Nutzung von GenAI zur Beantwortung von Fragen im politischen Raum ist aus vielen Gründen schwierig — nicht zuletzt, weil die Person, die die Frage stellt, bereits ihre politische Sichtweise hat, die beeinflusst, wie sie die "Richtigkeit" einer gegebenen Antwort beurteilt. Wir glauben jedoch, dass es durch den RAG-Ansatz möglich ist, ein System zu entwickeln, das den Leuten hilft, sich in einer politischen Landschaft zurechtzufinden, die mit einer Überfülle an Informationen gefüllt ist, solange wir immer in der Lage sind, die Behauptungen, die von der KI gemacht werden, zu belegen.

Das System, das wir gebaut haben, ist ein greifbares Beispiel für das Potenzial von GenAI in der politischen Umgebung und ich glaube, es ist ein Schritt in die richtige Richtung. Allerdings sollten wir die Herausforderungen, die vor uns liegen, nicht unterschätzen. Was tun Sie, wenn die Regierungsdaten selbst nicht vertraut werden können? Was ist, wenn die Berichterstattung voreingenommen oder nicht transparent ist?

Abschließend denke ich, dass eine große Herausforderung die Tendenz eines RAG-basierten Systems sein könnte, den Fokus mehr auf die Maßnahmen der Regierung zu legen, die ergriffen wurden, als auf die, die nicht ergriffen wurden. Maßnahmen, die nicht durchgeführt wurden, geraten oft in Vergessenheit, und ein RAG-basiertes System hätte Schwierigkeiten, die Opportunitätskosten der vom Staat nicht ergriffenen Entscheidungen zu bewerten. Eine Lösung hierfür könnte sein, in unsere Wissensdatenbank Inhalte von außerhalb der Regierung selbst zu integrieren, die eine Kritik an der Leistung der Regierung bieten — dies in einer Weise zu tun, die keine voreingenommene Informationen einführt, wird die Herausforderung sein.

Abschließende Gedanken 👋

Die Kombination von GenAI mit Politik hat (verständlich) einen schlechten Ruf, und es kann leicht sein, diesen gesamten Bereich als einen Sumpf von Fehlinformationen zu betrachten und sich ganz fernzuhalten. Ich glaube jedoch, dass dies der falsche Ansatz ist und zu viel Raum für schlechte Akteure riskieren — während die Flut von Fehlinformationen immer ausgeklügelter wird, müssen wir sicherstellen, dass die Werkzeuge und Techniken, die wir verwenden, um ihnen entgegenzuwirken, ebenfalls fortschreiten.

Herausforderungen stehen bevor, aber waren sie nicht immer schon da? Das Wichtigste für uns ist, dass wir weiterhin Lösungen finden.

* Regering ist das flämische Wort für Regierung, und Robot ist das flämische Wort für Roboter. Übermäßig kreative Namen zu finden, ist nicht unsere Stärke.

Latest

Why not to build your own data platform

A round-table discussion summary on imec’s approach to their data platform

Securely use Snowflake from VS Code in the browser
Securely use Snowflake from VS Code in the browser
Securely use Snowflake from VS Code in the browser

Securely use Snowflake from VS Code in the browser

A primary activity among our users involves utilizing dbt within the IDE environment.

The benefits of a data platform team
The benefits of a data platform team
The benefits of a data platform team

The benefits of a data platform team

For years, organizations have been building and using data platforms to get value out of data.

Hinterlasse deine E-Mail-Adresse, um den Dataminded-Newsletter zu abonnieren.

Hinterlasse deine E-Mail-Adresse, um den Dataminded-Newsletter zu abonnieren.

Hinterlasse deine E-Mail-Adresse, um den Dataminded-Newsletter zu abonnieren.

Belgien

Vismarkt 17, 3000 Leuven - HQ
Borsbeeksebrug 34, 2600 Antwerpen


USt-IdNr. DE.0667.976.246

Deutschland

Spaces Kennedydamm,
Kaiserswerther Strasse 135, 40474 Düsseldorf, Deutschland


© 2025 Dataminded. Alle Rechte vorbehalten.


Vismarkt 17, 3000 Leuven - HQ
Borsbeeksebrug 34, 2600 Antwerpen

USt-IdNr. DE.0667.976.246

Deutschland

Spaces Kennedydamm, Kaiserswerther Strasse 135, 40474 Düsseldorf, Deutschland

© 2025 Dataminded. Alle Rechte vorbehalten.


Vismarkt 17, 3000 Leuven - HQ
Borsbeeksebrug 34, 2600 Antwerpen

USt-IdNr. DE.0667.976.246

Deutschland

Spaces Kennedydamm, Kaiserswerther Strasse 135, 40474 Düsseldorf, Deutschland

© 2025 Dataminded. Alle Rechte vorbehalten.