Ich habe Spring AI ausprobiert, damit ihr es nicht müsst

02.04.2024 | Quentin

Photo by DALLE-3

Was ist Spring AI?

Spring AI ist ein Projekt von Spring und zielt darauf ab, den Umgang mit KI für Java-Entwickler zu vereinfachen. Derzeit sind die meisten Frameworks zur Entwicklung von KI-Anwendungen primär auf die Programmiersprache Python ausgerichtet. Spring AI möchte dies ändern und bietet als Grundlage eine Reihe von Abstraktionen für die Entwicklung von generativen KI-Anwendungen, welche die gängigsten Anbieter unterstützen, wie OpenAI, Microsoft, Amazon, Google und Huggingface.

Der Anwendungsfall

Ich wollte herausfinden, ob ich mit Spring AI eine Anwendung entwickeln kann, die verschiedene PDF-Dateien einliest und Fragen dazu beantworten kann. Da diese PDF-Dateien nicht unbedingt Informationen enthalten, die ich mit der Welt teilen wollte, war es mir zunächst wichtig, dass meine Anwendung mit einem lokalen Large Language Model (LLM) funktioniert. Auf diese Weise könnte ich verhindern, dass die Informationen aus den PDF-Dateien mit den großen und datenhungrigen Anbietern ausgetauscht werden.

Zum Glück unterstützt Spring AI auch Ollama als Anbieter. Ollama ist eine Anwendung, die es einem ohne großen Aufwand ermöglicht, Large Language Models zu installieren und lokal auszuführen.

Die Umsetzung

Die Grundlage für die Umsetzung bildet eine Technik namens Retrieval Augmented Generation (RAG). Diese Technik ermöglicht es, die Prompts für entsprechende KI-Modelle mit zusätzlichen Daten anzureichern, um die Fähigkeiten eines LLMs zu verwenden, um zum Beispiel Fragen zu Daten zu beantworten, die es zuvor nicht kannte. Dabei werden mittels einer ETL-Pipeline (Extract, Transform and Load) die Informationen aus den Dokumenten extrahiert, in kleinen, mit Metadaten angereicherten Teilen aufgeteilt und schließlich in eine Vektordatenbank geschrieben. Die Informationen aus der Vektordatenbank können dann verwendet werden, um die Prompts für das lokale LLM anzureichern.

Die folgende Abbildung aus der Spring AI Referenzdokumentation stellt eine solche ETL-Pipeline dar (Quelle: Spring AI Reference:

ETL Pipeline

Was ziemlich komplex und aufwendig klingt, liess sich mit Hilfe von Spring AI und der Referenzdokumentation in ein paar Stunden umsetzen. Das Ergebnis war eine Spring Boot Anwendung mit zwei API-Schnittstellen. Über die erste Schnittstelle konnte ich das Einlesen und Verarbeiten der PDFs durch die ETL-Pipeline initiieren. Die zweite Schnittstelle ermöglichte es mir, mit meinem lokalen LLM zu interagieren und Fragen zu stellen.

Fazit

Spring AI befindet sich derzeit noch im Snapshot-Stadium, der erste offizielle Release steht noch aus, und entsprechend ist die Dokumentation noch nicht vollständig. Trotzdem war ich überrascht, wie schnell mich dieses Projekt dazu brachte, diese (für mich neuen) Konzepte anzuwenden und eine funktionierende Anwendung mit generativer KI umzusetzen.

Die Antworten meines lokalen LLMs ließen zwar zu wünschen übrig, ich denke jedoch, dass mit dem richtigen Modell und den entsprechenden Prompt-Engineering-Skills noch viel Optimierungspotenzial besteht.

Vorerst werde ich das Projekt ruhen und reifen lassen. Ich bin jedoch überzeugt, dass sich zukünftig mit dem richtigen Anwendungsfall und den entsprechenden Fähigkeiten durchaus Mehrwert generieren lässt, und bin gespannt, wie sich das Projekt weiterentwickelt. Ich denke nicht, dass ich zum letzten Mal damit “gespielt” habe.