Dieser Artikel von Mikhail Khlystun, AI Technical Product Manager bei Gcore, erschien ursprünglich auf The New Stack.
Die Entwicklung von Chatbots schreitet schnell voran. Neue Tools und Frameworks machen es einfacher und effizienter, anspruchsvolle Systeme zu entwickeln. Die derzeitigen großen Sprachmodelle (LLMs) leiden jedoch unter Einschränkungen: Es fehlt ihnen an aktuellem Wissen und sie können nicht auf domänenspezifische Informationen zugreifen, wie z.B. auf den Inhalt der Wissensdatenbank eines Unternehmens. Retrieval-augmented generation (RAG) kann dieses Problem lösen, indem es Wissen findet, das über die Trainingsdaten des LLM hinausgeht, und diese Informationen dann an ein LLM weitergibt.
In diesem technischen Artikel erkläre ich, wie man LangChain Community, Mixtral 8-7B und ChromaDB nutzt, um einen fortschrittlichen Chatbot zu erstellen, der in der Lage ist, verschiedene Dateitypen zu verarbeiten, Informationen aus einer Vektordatenbank abzurufen, über eine semantische Suche zu recherchieren und mit den Benutzern über eine intuitive Schnittstelle zu interagieren.
Entwcklung von Chatbot-Technologien
Die Tools und Prozesse für die Chatbot-Entwicklung entwickeln sich sehr schnell weiter. Sie erweitern die Fähigkeiten von Chatbots und verändern die Art und Weise, wie sie mit Nutzern interagieren und Informationen verarbeiten. Ich habe fünf identifiziert, die ich für besonders wichtig halte, und werde sie in diesem Tutorial verwenden.
- Übergang zu LangChain Community und Mixtral 8-7B: Der Wechsel von LangChain und Mistral zu ihren fortschrittlicheren Gegenstücken, LangChain Community und Mixtral 8-7B, markiert eine bedeutende Entwicklung in der Chatbot-Entwicklung. Diese Tools erweitern den Anwendungsbereich von Chatbots, indem sie die Verarbeitung von Dokumenten ermöglichen und das Verständnis natürlicher Sprache in verschiedenen Bereichen verbessern.
- Übergang von Graphdatenbanken zu ChromaDB: ChromaDB unterstützt die Speicherung und Abfrage großer, hochdimensionaler Daten. Dies macht ChromaDB zu einer hervorragenden Wahl für die Verwaltung komplexer Datentypen und -strukturen in verschiedenen Anwendungen.
- Verwendung der konversationellen Abrufkette: Während RAG die Chatbot-Antworten verbessert, indem es den Zugriff auf externe Daten über den LLM-Trainingsdatensatz hinaus ermöglicht, baut die Conversational Retrieval Chain darauf auf, indem sie während des Gesprächs dynamisch Informationen aus Vektordatenbanken abruft. Durch diese Umstellung werden die Vorteile von RAG beibehalten und gleichzeitig die Interaktivität und Relevanz von Chatbots verbessert, indem eine kontextspezifische Datenabfrage in Echtzeit über erweiterte Sprachmodelle integriert wird.
- Erweiterte Dateihandhabung und -verarbeitung: Das neue Szenario erweitert die zu verarbeitenden Dateitypen, einschließlich PDF, M4A, CSV, Excel und EML, und führt erweiterte Verarbeitungstechniken ein. Dies beinhaltet die Verwendung von ChromaDB für die Speicherung und Abfrage extrahierter Informationen und die Integration von Spracherkennung für Audiodateien, wodurch die Fähigkeit des Chatbots zur Verarbeitung verschiedener Datenquellen erweitert wird.
- Einsatz mit der Gradio-Schnittstelle: Gradio bietet eine interaktive und benutzerfreundliche Schnittstelle zum Testen und Bereitstellen von KI-Modellen, einschließlich Chatbots. Dies erleichtert den Nutzern die Interaktion mit dem System in Echtzeit.
In diesem Tutorial werden diese Werkzeuge praktisch angewendet. Doch zunächst eine Anmerkung zum RAG für die Neulinge
Das RAG verstehen
Die RAG spielt eine zentrale Rolle bei der Verbesserung der Funktionalität der LLM. RAGs erleichtern den LLMs den Zugang zu externen Daten und ermöglichen es ihnen, Antworten mit zusätzlichem Kontext zu generieren. Das Ergebnis ist eine App, die den Endnutzern ein hervorragendes LLM-Erlebnis der nächsten Generation bietet. Ihr LLM ist mit der RAG einfach hilfreicher und effektiver.
Die RAG arbeitet in einer Abfolge von vier wesentlichen Schritten:
- Laden kodierter Dokumente: Der Prozess beginnt mit dem Laden einer Vektordatenbank mit Dokumenten, die in ein maschinenlesbares Format kodiert wurden.
- Kodierung der Abfrage: Die Anfrage des Nutzers wird mit Hilfe eines Satztransformators in einen Vektor umgewandelt. Dieses vektorisierte Format der Abfrage macht sie mit den kodierten Dokumenten in der Datenbank kompatibel.
- Abruf des Kontexts: Die kodierte Abfrage wird verwendet, um den relevanten Kontext aus der Vektordatenbank abzurufen. Dieser Kontext enthält die Informationen, die erforderlich sind, um eine Antwort zu generieren, die der Anfrage des Benutzers gerecht wird.
- Aufforderung an den LLM: Der abgerufene Kontext und die Abfrage werden zur Aufforderung an den LLM verwendet. Das LLM erzeugt eine kontextgerechte und informationsreiche Antwort.
Nachweis der Auswirkungen der RAG
Um die Wirksamkeit von RAG bei der Verbesserung der Fähigkeiten des Chatbots zu veranschaulichen, habe ich Screenshots erstellt, in denen die Antworten des Modells mit und ohne Verwendung von RAG verglichen werden:
Ohne RAG
Dem Modell fehlt die Möglichkeit, auf aktuelle Preisinformationen zuzugreifen, da diese nicht Teil des Trainingsdatensatzes waren. Diese Einschränkung führt zu Antworten, die nicht die aktuellen Unternehmensdaten widerspiegeln.
Mit RAG
Nachdem die Seite https://gcore.com/de/pricing/cloud als PDF-Datei gespeichert und als zusätzlicher Inhalt für die RAG verwendet worden war, analysierte und nutzte das Modell die Datei effektiv und beantwortete Fragen zu aktuellen Preisen präzise. Dies zeigt die Fähigkeit von RAG, die Leistung des Chatbots durch die Integration von dynamischen, externen Informationen zu verbessern.
Systemanforderungen und Leistung
Um eine optimale Leistung unseres Chatbot-Systems sicherzustellen, habe ich das Setup auf einer virtuellen Maschine getestet, die mit 4 × GeForce GTX 1080 Ti GPUs ausgestattet war. Die durchschnittliche Auslastung dieser Ressourcen ist entscheidend für die Aufrechterhaltung der anspruchsvollen Prozesse des Chatbots.
Durch die Implementierung des Befehls export CUDA_VISIBLE_DEVICES=0
habe ich das System darauf beschränkt, nur eine GPU zu nutzen. Diese Anpassung veränderte die Auslastung der GPU-Ressourcen erheblich, da das Modell etwa 6 GB GPU-Speicher benötigte, um die Anforderungen effizient zu verarbeiten.
Wie man den Code ausführt
Mit diesem Einrichtungsprozess erhalten Sie alle erforderlichen Tools und Abhängigkeiten, die für eine effiziente Ausführung und Interaktion mit dem Chatbot erforderlich sind. Der benötigte Code ist auf GitHub verfügbar, daher habe ich es vorgezogen, ihn nicht in seiner Gesamtheit an dieser Stelle zu schreiben. Ich habe das Modell mit Ubuntu 22.04 ausgeführt, aber es funktioniert mit jedem aktuellen Linux Betriebssystem.
Erstellen einer virtuellen Umgebung
Initialisieren Sie eine neue virtuelle Python-Umgebung, um Abhängigkeiten zu verwalten:
python3 -m venv chatbot-env
Aktivieren Sie die virtuelle Umgebung
Aktivieren Sie die erstellte Umgebung, um sie für die folgenden Schritte zu verwenden:
source chatbot-env/bin/activate
Klonen des Repositorys
Laden Sie den Projektcode von unserem GitHub-Repository herunter:
git clone https://github.com/G-Core/ai-code-examples.git
Abhängigkeiten installieren:
Installieren Sie alle erforderlichen Bibliotheken aus der mitgelieferten Anforderungsdatei:
pip install -r requirements.txt
Führen Sie das Inferenzskript aus:
Starten Sie die Chatbot-Anwendung mit Python:
python chat_bot.py
Zugriff auf den Chatbot
Lokale Maschine
Wenn Sie den Chatbot auf Ihrem lokalen Rechner ausführen, öffnen Sie einen Webbrowser und navigieren Sie zur URL des lokalen Servers:
http://127.0.0.1:5050
Es wird dieser Bildschirm angezeigt:
Ferngesteuerte Maschine
Wenn Sie den Chatbot auf einer Remote Machine, z.B. in der Cloud, ausführen, müssen Sie Port-Forwarding Techniken verwenden. Um den Bot über alle Netzwerkschnittstellen zugänglich zu machen, ändern Sie die Serverkonfiguration in Ihrem Code, indem Sie 127.0.0.1 in 0.0.0.0 ändern:
demo.launch(server_name="0.0.0.0", server_port=5050, auth=("user", "password")).queue().launch(root_path="/")
Hinweis: Die Bereitstellung des Bots auf einer öffentlichen Schnittstelle kann Sicherheitsrisiken bergen. Stellen Sie daher sicher, dass Sie geeignete Sicherheitsmaßnahmen getroffen haben.
Fazit
Der Entwicklungsprozess, den ich hier beschrieben habe, ebnet den Weg für die Entwicklung von Chatbots, die sachkundiger, reaktionsschneller und effektiver sind und in der Lage sind, herkömmliche Beschränkungen zu überwinden, indem sie auf aktuelle Informationen zugreifen und Antworten geben, die auf einem umfassenden Verständnis der hochgeladenen Dokumente basieren. Diese Reise in die Chatbot-Entwicklung unterstreicht die Bedeutung der Integration neuer Technologien und den Bedarf an regelmäßig aktualisierten Entwicklungsstrategien, die sich an neue Fortschritte anpassen und diese einbeziehen, um intelligentere, effizientere und benutzerfreundlichere Chatbot-Anwendungen zu schaffen. Da die Technologie immer weiter fortschreitet, ist das Potenzial von Chatbots als Werkzeuge für die Informationsbeschaffung, die Einbindung von Kunden und die personalisierte Unterstützung nur durch die Kreativität und Innovation der Entwickler begrenzt.
Bei Gcore ebnen wir den Weg für die Zukunft der KI, indem wir den gesamten Lebenszyklus der KI-Entwicklung unterstützen: Training, Inferenz und Anwendungen. Wir verwenden hochmoderne NVIDIA-Grafikprozessoren für eine herausragende Leistung in unserem globalen Netzwerk mit mehr als 180 Präsenzpunkten. Unser Ziel ist es, die Welt mit KI zu verbinden, überall und jederzeit.