Autor: Sven Loesekann
Technologien: Angular, Angular-Cli, Angular-Materials, TypeScript, Spring Stiefel, Spring AI, Openai, Ollama, Postgresql (Vector, Hstore), Liquibase, JPA, Gradle, Java
Dies ist ein Projekt, mit dem Sie Springai verwenden können, um mit den Dokumenten in einer Bibliothek zu chatten. Das Dokument kann hochgeladen werden, wird dann in einer normalen und vektorischen Datenbank gespeichert. Die KI wird verwendet, um Einbettungen aus den Stücken der Dokumente zu erstellen, die in der Vektor -Datenbank gespeichert sind. In den Chat können Fragen in Einbettungsdings gestellt und für Anfragen an die Vektordatenbank verwendet werden. Der Dokumentenvektor mit der niedrigsten Entfernung wird verwendet, um das Dokument aus der Datenbank zu laden und eine Antwort aus der KI anzufordern, die auf Dokumentinhaltstoken basiert. Dadurch kann die KI die Antwort basierend auf dem Inhalt des Dokuments generieren und Halluzinationen einschränken. Für weitere Forschung wird ein Link zum Quelldokument bereitgestellt.
Das Projekt verwendet Spring Boot mit Spring AI, um auf OpenAI und die Vector -Datenbank zuzugreifen. Die PostgreSQL-DB wird mit den Erweiterungen der Vektor-, HSTore- und UUID-OSSP-Erweiterungen verwendet. Liquibase wird verwendet, um die Datenbankmigrationen zu verwalten. JPA wird von den REST -Controllern für den Datenbankzugriff in den Diensten verwendet. Für das Frontend Angular, Winkelmaterial und Typscript werden die Tabelle der Dokumente, das Upload -Dialogfeld und den Dokument -Chat erstellt. Angular CLI wird für den Frontend -Build und den Abschluss für den Projektbau verwendet.
Ollama wird verwendet, um lokal ausgeführte AI/LLM -Modelle zu verwenden. Ollama kann als Docker -Bild in einer lokalen Maschine installiert oder ausgeführt werden. Ollama unterstützt eine Bibliothek von AI/LLM -Modellen für verschiedene Anwendungsfälle. Modelle wie Llava für Bildbeschreibung, Falcon für die Beantwortung von Fragebasis, SQLCoder für SQL -Generation und Mixtral für Funktionsaufrufe können verwendet werden. Ollama kann GPUs verwenden, wenn sie verfügbar sind, und arbeitet ohne sie auf CPU. Spring AI hat Ollama -Unterstützung, die die Verwendung eines KI -Dienstes ähnlich machen. Bei aktuellen CPUs gibt es häufig Leistungsprobleme. Die CPU -Anbieter möchten in Zukunft KI -Motoren zu ihrem CPUs hinzufügen, um diese Probleme zu lösen.
Das Projekt verwendet Spring Boot mit Spring AI, um eine Bilddatenbank in Frage zu stellen, die PostgreSQL mit der PGVector -Erweiterung und Ollama verwendet. Die für die importierten und gegründeten Bilder sind Beschreibungen, die mit dem LLAVA -Modell erzeugt werden, das lokal auf Ollama ausgeführt wird. Diese Beschreibungen werden in Einbettungen ausgeführt und mit der Beschreibung in der Vektordatenbank gespeichert. Das Bild und die Metadaten werden in der relationalen Datenbank gespeichert. Eine Frage an die Bilddatenbank wird in Einbettungen und die Vektordatenbank für den nächsten Nachbarn abgefragt. Die besten Übereinstimmungen werden mit Bild und Beschreibung zurückgegeben. Das Ergebnis wird im Frontend angezeigt. Dies ermöglicht eine neue Art von Bildsuche, die nicht möglich war, bevor AI/LLMs verwendbar wurden.
Das Projekt verwendet Spring AI, um Fragen mit einem LLMs in SQL -Abfragen umzuwandeln und das Ergebnis in der Frontend anzuzeigen. Basierend auf Metadaten, die für den relationalen Datensatz bereitgestellt werden, kann das LLM Einbettungen für die Metadaten der Tabellen und Spalten erstellen. Das Projekt erstellt auch Ausbettungen für den Inhalt bestimmter Spalten, um zu entscheiden, ob die Spalte als Join in der SQL -Abfrage verwendet werden sollte. Mit dieser Einbettungsmetadaten kann das LLM eine Frage in einer angemessenen SQL -Abfrage stellen und das Ergebnis in der Frontend anzeigen. Der Frontend verwendet ein Winkelmaterialtisch mit einer flexiblen Menge von Säulen und Zeilen.
Das Projekt verwendet Spring AI, um Fragen zu Büchern in einen REST -Funktionsaufruf an die OpenLibrary -API zu verwandeln. Es verwendet das LLAMA3.1 -Modell und die Spring AI -Funktion, die API aufruft. Die API -Antwort wird verwendet, um die Antwort zu erstellen.
Das Projekt verwendet Spring AI, um Testklassen zu generieren. Dazu wird die zu testende Klasse bereitgestellt und die Klassen, von der die Klasse zu testen ist, hängt davon ab. Eine Testbeispielklasse kann ebenfalls bereitgestellt werden. Die in Ollama basierende AI/LLM erhält dann eine Eingabeaufforderung mit allen Informationen und generiert einen Entwurf der Quelle der Testklasse.
Das Projekt verwendet Spring AI, um Zusammenfassungen von Büchern zu generieren. Um die Zusammenfassungen zu generieren, müssen die Kapitelüberschriften und die Überschrift nach dem letzten Kapitel bereitgestellt werden. Dann werden Zusammenfassungen der Kapitel in Form von Kugelpunkten erzeugt. Aus den Kapitelzusammenfassungen wird eine Buchzusammenfassung erstellt.
Das Projekt zeigt, wie Spring AI verwendet wird, um Antworten auf der Grundlage einer bereitgestellten Dokumente mit einem Link zur Quelle zu generieren. Das Angular Frontend bietet die Benutzeroberfläche für das Backend und zeigt die Antworten an.
Das Projekt zeigt, wie Spring AI verwendet wird, um Beschreibungen für hochgeladene Bilder zu generieren und das Bild, die Beschreibungen und die Beschreibung in der Datenbank zu speichern. Die Fragen, die an die Bilddatenbank gestellt wurden, werden in Einbettungen ausgearbeitet und die am besten passenden Beschreibungen mit den Bildern werden zurückgegeben. Das Angular Frontend bietet eine Benutzeroberfläche, mit der das Ergebnis angezeigt und die Bilder hochgeladen werden können.
Das Projekt zeigt, wie Spring AI verwendet wird, um SQL -Abfragen basierend auf bereitgestellten Metadaten für die Tabellen/Spalten zu generieren. Das Angular Frontend bietet eine Benutzeroberfläche, mit der das Ergebnis in der Tabelle angezeigt wird.
Das Projekt zeigt, wie Spring AI verwendet wird, um eine REST -Schnittstelle zum Aufrufen auszuwählen und die Parameter für den Restaufruf anzugeben. Das Angular Frontend bietet der Benutzeroberfläche, um die Frage zu stellen und das Ergebnis des Restaufrufs anzuzeigen.
Das Projekt zeigt, wie die Spring -KI verwendet wird, um eine Bilddatenbank zu erstellen, die mit Fragen der natürlichen Sprache abgefragt werden kann und die am nächsten gelegenen passenden Bilder mit ihren Beschreibungen zurückgibt.
Spring AI macht die Verwendung von OpenAI / Ollama -Diensten einfach und nützlich, und dieses Projekt zeigt dies.
Das Projekt verfügt über ein Systemkontextdiagramm, ein Behälterdiagramm und ein Komponentendiagramm. Die Diagramme wurden mit Structurizr erstellt. Die Datei runStructurizr.sh enthält die Befehle zur Verwendung von StructUrizr und das Verzeichnisstruktururizr enthält die DSL -Datei.
Im Helm -Verzeichnis befindet sich ein Kubernetes -Setup zum Ausführen des AidocumentLibrarychat -Projekts mit Minikube. Das Helm -Diagramm stellt die Postgres -Datenbank und den AidocumentLibrarychat mit den erforderlichen Parametern (Springprofile in Werten) bereit. Yaml). Es verwendet die Ressourcenlimit -Unterstützung von JDK 16, um den Speicher zu begrenzen. Kubernetes schränkt die CPU -Verwendung ein und verwendet die Startupproben und Lebendigkeit, die der Frühlingsantrieb bietet.
In der RunPostgresql.sh -Datei befinden sich die Befehle, um das PostgreSQL Docker -Bild mit Vektorerweiterung lokal zu ziehen und auszuführen.
Um den OpenAI -API -Schlüssel zu erhalten, müssen Sie ein Konto unter https://platform.openai.com erstellen und in den Benutzereinstellungen einen Schlüssel erstellen. Dieser Schlüssel muss in der Anwendung hinzugefügt werden. Als alternativ kann es als Umgebungsvariable "Open-API-Key" bereitgestellt werden.
Ollama kann das KI -Modell lokal ausführen. Die Datei runollama.sh verfügt über die Befehle, um sie als Docker -Container auszuführen. Die Anwendung muss mit der Eigenschaft "UseStollama = True" für die Abhängigkeit erstellt werden, um die Abhängigkeiten zu enthalten. Die Anwendung muss mit dem 'Ollama' -Profil gestartet werden, um die Konfigurationen/Funktionen für die Verwendung von Ollama -basierten Modellen einzuschalten. Ollama unterstützt die GPU -Beschleunigung.
PostgreSQL mit Vektorverlängerung 0.5.1 oder neuer
Java 21 oder neuer
Gradle 8.3 oder neuer
Nodejs 18.13.x oder neuer
NPM 8.19.x oder neuer
Angular Cli 17 oder neuer