A german workshop where you learn how to build RAGs with Langchain
Das hier ist das Repository zum Document-AI-Workshop.
ZIEL: Wir werden eine Retrieval Augmented Generation (RAG) App in Langchain bauen. In einfachen Worten einen ChatBot, dem wir zustzliches Wissen zu Verfgung stellen werden. Als Funktionen sind geplant:
Das Repository stellt eine simple Ki Applikation mit einer GUI zur Verfgung. Es beinhaltet eine Anleitung zum Setup und eine kurze Einfhrung in das Thema mit Links.
Install Python 3.10: python.org oder via Microsoft Store
Folgende Schritte musst du im Terminal ausfhren, dafr solltest du dich im Projekt Ordner befinden
Setup Virtual Environment (venv) in terminal:
python -m venv documentai
Hier werden wir die Pakete in ein abgeschirmten Umgebung installieren, dem "venv".
Nun mssen wir das venv documentai im terminal aktivieren.
activate documentai
(Bei Fehler Terminal neustarten)
Wichtig! Die KI Applikation wird sich nur in der Konsole ausfhren lassen, wenn das Venv aktiv ist!
(Alternative) venv via VSCode Plugin Python EnvironManager erstellen & aktivieren
(Alternative) venv via VSCODE Commands (+ Erklrungen) aktivieren
Installiere bentigte Abhngigkeiten & Pakete mit dem Befehl:
pip install -r requirements.txt
Die KI Applikation ist jetzt fast bereit zum ausfhren. Es gibt drei Varianten:
python run_ai_azure_open_ai_model.py
python run_ai_gpt_model.py
python run_ai_ollama_model.py
Das Modell (GPT-4o-mini) luft in der Cloud von Azure OpenAI. Dieses sprechen wir ber eine API an. Damit das Modell genutzt werden kann, muss im gleichen Verzeichnis, wo die auszufhrende Python-Datei liegt, eine neue Datei erstellt werden '.env'. Hier mssen vier Eintrge gemacht werden. Diese Daten/Informationen gibt es im Workshop von uns.
Applikation Starten:
python run_ai_azure_open_ai_model.py
Das KI Modell (ChatGPT) luft in der Cloud von Open AI. Wir sprechen dessen API an. Damit das funktioniert mssen wir uns einen Key generieren lassen.
my_gpt.key
and paste your key into it. (so you can use helper function: loadGptKey)Note that OpenAI charges you for each prompt you submit through these embeds. If you have recently created a new account, you should have 3 months of free credits. If you have run out of credits, don't worry, since using these models is very cheap. ChatGPT only costs about $0.02 for every seven thousand words you generate. From learnprompting.org
Applikation Starten:
python run_ai_gpt_model.py
Das Vertrauen in die groen KI Anbietern wie OpenAI ist hufig nicht gro, weil bei KI Interaktionen Daten entstehen, welche wiederum zum trainieren des Modells verwenden knnen. KI-Modelle kann man auch lokal auf den eigenen Rechner ausfhren.
KI Modelle sind sehr Computer Ressourcen hungrig. Grundstzlich gilt: Die meisten Modelle lassen sich ausfhren, wenn dein Computer eine NVIDIA Grafikarte verbaut hat. Sonst gilt fr kleine Modelle der Gre 7 Mrd. Parameter (7B):
llama.cpp ist ein prominentes Tool um Modelle von der Plattform HuggingFace lokal auszufhren (Die Quelle/Community fr KI Modelle, idR. Open Source). llama.cpp ist aber nicht Anfnger freundlich, daher verwenden wir Ollama. Die gleiche Technologie, jedoch vereinfachte Installation und Konfiguration. Nachteil wir knnen nur Moddelle aus dieser Liste installieren.
ollama pull <model>
(optional)ollama run <model>
(ldt auch runter, wenn nicht existent)python run_ai_ollama_model.py
ollama run mistral
(4GB)ollama run llama3.1
(5GB) oder ollama run llama3.1:70b
(40GB)ollama run gemma2
(6GB), ollama run gemma2:2b
oder https://ollama.com/library/gemma2:27b
(16GB)Applikation im Terminal starten: Gradio Web GUI ffnen: http://localhost:7860
Eine KI Modell ist Input Output System. Wir geben eine Anweisung und es generiert uns ein Ergebnis.
Im Grunde kennt man es aus der Mathematik: Wie eine mathematische Funktion nimmt das KI Modell Eingabe Parameter entgegen, die Eingabe Parameter werden von der Funktionsoperation (die Rechnung) in das Ergebnis umgewandelt. z.B. f(x)=>x+x f(2)=4
.
Das ist das grundlegende Prinzip, wie die KI Funktioniert.
Der grundstzliche Vorgang wie ein KI Modell generiert ist schwer nachzuvollziehen. hnlich wie wenn du versuchst in das Gehirn deines Nachbarn zu schauen, um dir seine letzte Handlung zu erklren. Das Gehirn ist ein ebenso komplexes Modell, das auf die eingegeben Reize (Sinne: Augen, Ohren usw.) getriggert wird and antrainiert reagiert.
Um KI Modelle zu erstellen haben wir das menschl. Gehirn vereinfacht nachgebaut. Die Buzzword Techniken sind Neuronale Netze oder DeepLearning. Diese gibt es sogar schon deutlich lnger als ChatGPT und Co. Fr den Workshop nicht unbedingt relevant, aber hier einmal sehr vereinfacht dargestellt, wie ein KI Modell mit einen Neuornalen Netz und einen Datensatz entsteht. KI Modelle mssen trainiert werden, bevor sie Ergebnisse generieren knne. Wie ein Mensch lernen bzw. Erfahrungen sammeln muss. Eine KI wird mit einen groen Datensatz trainiert, die zu ihren Anwendungsfall passen. Das Neuronale Netz erkennt bzw. lernt iterativ wiederkehrende Strukturen bzw. Muster. Einfach gesagt erfllt die Ki Anweisungen aus einen separaten Testdatensatz und konstruiert anfangs chaotisch etwas aus den Trainingsdaten zu einen Ergebnis zusammen. Das Modell lernt indem es fr gute Ergebnisse belohnt und fr schlechte bestraft wird. Auf diese Weise identifiziert es gute Kombinationen und wird versuchen in Zukunft diese zu whlen und schlechte eher zu vermeiden. (sehr vereinfacht, Lernprozess ist beeinflussbar => Optimierung) Erreicht man eine Punkt an dem das KI-Modell korrekte Voraussagen erzeugt, ist die Ki fertig trainiert. Es wird vorgetuschte Intelligenz geschaffen. Das Modell hat gelernt ein Muster im Datensatz zu erkennen und kann deshalb Voraussagen treffen, welche Rckgabe auf die Eingabe erwartete wird. Playground wie funktioniert ein Neuronales Netz
Ein Modell ist stark von den Trainingsdaten abhngig und dessen erkennbaren wiederkehrenden Strukturen. Was sich in den Datensatz nicht als Muster zeigt kann sie nicht generieren. Aber sie kann komplexe Muster erkennen, die uns bisher verborgen geblieben sind. KI Modelle knnen auf spezielle Anwendungsflle optimiert sein. Dadurch generieren sie in ihren Anwendungsfall hufig bessere Ergebnisse als andere Modelle. Beispiel Code generierende KI Modelle. Die groen Modelle wie ChatGPT sind "allgemeine" Modelle. OpenAi ist z.B. bestrebt, dass man ChatGPT es fr jeden Anwendungsfall einsetzen kann. Multimodale Modelle wie ChatGPT knnen zustzlich zu Text auch Bilder verarbeiten. Bias ist ein groes Problem. Trainiere ein Modell mit einen sexistischen Datensatz und du erhltst eine sexistische KI. Vielleicht hast du das ja gewollt? Datenstze bestehen hufig berwiegend aus englischsprachigen Daten. Folglich wird das Modell besser English als Deutsch "verstehen". Auf unserer Welt werden mehr Daten in englisch als in deutsch erstellt. Demzufolge trainieren KI-Modelle hufiger englisch basierte Daten. Bei den meisten groen Modellen (Meta, Google, OpenAI) ist das aber kein Problem mehr. Diese bezeichnet man als oft auch als multilinguale Modelle.
Wir werden in diesen Workshop Sprachmodelle (text2text) verwenden. KI-modelle, die auf Ein- und Ausgabe von Sprache trainiert worden sind. Man bezeichnet diesen groen Sprachmodellen als Large Language Models (LLM). Daneben gibt es eine Reihe anderer Arten Ki-Modelle , z.B.welche die Bilder erstellen.
Die Eingabe an die KI nennt man brigens Prompt.
from learnprompting.org
Modell Input (Prompt): Nutzer Input (Prompt) + System Prompt + Prompt Template
Prompt: Eingabe des Nutzer, der Befehl oder die Aufgabe fr KI, wird hufig als Prompt bezeichnet. Aber technisch gesehen besteht ein Prompt aus allen Eingaben an das KI-Modell.
System Prompt: Modell Finetuning, im Grunde weitere Eingaben textuelle Eingaben. Das knnen zustzliche Anweisungen sein, wie das KI-Modell die Nutzer Eingabe verarbeiten soll. z.B. kann man hier eingeben, dass das KI Modell seine Testausgabe wie Yoda aus Stars Wars formulieren soll. Ohne das der Nutzer explizit die Anweisung gibt, wie Yoda das Modell antworten wird. Hier kann man dem Modell Beispiele geben, wie es antworten soll.
Prompt Engineering ist das Ziel Prompts zu erstellen, die optimale Ergebnisse fr unsere Aufgabe liefern. (Spter mehr dazu)
Und dann wren da noch die LLM Konfigurations-Hyperparameter. Im Grunde genommen zahlenbasierte Stellschrauben, um die Ausgabe des Modells weiter zu beeinflussen. Diese gehren nicht zum Prompt, sind aber auch Eingaben beim Start an das Modell.
Was wir bauen werden nennt man in der Fachsprachen eine RAG Applikation. Eine RAG Applikation ist eine Erweiterung eines vortrainierten KI-Modells, um es fr spezifische Aufgaben zu optimieren. Bei einer Retrieval Augmented Generation (RAG) erweitern wir die bereits massive Wissensbasis des KI Modells, indem wir diesem zustzliche Informationen bereitstellen. Zu den hufigsten Anwendungsfllen gehrt die Ergnzung der KI um eine Suchfunktion in einer Suchmaschine oder die Entwicklung von Unternehmens-ChatBots, die mit den Dokumenten und Daten eines Unternehmens gefttert werden. Wir werden einen solchen ChatBot entwickeln, der mit Daten und Dokumenten des Unternehmens gespeist wird. Das Bild oben veranschaulicht den grundlegenden Ablauf einer RAG Applikation:
Ein KI Modell kann nur eine Gewisse Menge an Informationen entgegen nehmen. Daher werden Daten oder Dokumentn noch einmal in eine Vektor basierte Form aufbereitet. Embeddings (deutsch Einbettungen) sind numerische Reprsentationen realer Objekte, die Systeme fr knstliche Intelligenz (KI) verwenden, um komplexe Wissensbereiche wie Menschen zu verstehen. Beispielsweise gehen Rechenalgorithmen davon aus, dass der Unterschied zwischen 2 und 3 1 ist, was auf eine enge Beziehung zwischen 2 und 3 im Vergleich zu 2 und 100 hinweist. Daten aus der realen Welt beinhalten jedoch komplexere Zusammenhnge. Ein Vogelnest und eine Lwenhhle sind beispielsweise analoge Paare, whrend Tag-Nacht entgegengesetzte Begriffe sind. Einbettungen wandeln reale Objekte in komplexe mathematische Reprsentationen um, die inhrente Eigenschaften und Beziehungen zwischen realen Daten erfassen. From: Erklrung Embeddings
Die Embeddings lassen wir uns von einen Embedding KI-Modell generieren. Hier ist auch wieder die Sprache des Modells von Bedeutung.
Ein weitere Ansatz ist die Daten oder Dokumenten in verschiedene Teile zu schneiden. Wir lassen dann die KI entscheiden, welche Schnipsel zum User Input relevant sind. Das passiert in einem Schritt davor und die relevanten Schnipsel werden in dem Prompt ergnzt und an das Modell bergeben.
Um die Details mssen wir uns zum Glck nicht sorgen, dafr stehen uns gut durchdachte Tools zur Verfgung. Schlaue Menschen haben sich fr uns um das Problem gekmmert!
LangChain ist ein Framework fr die Entwicklung von Anwendungen, die auf groen Sprachmodellen (LLMs) basieren. Es ist Open Source und bietet in Python und JavaScript eine Reihe von Tools an, die uns fr Probleme fertige Lsung prsentiert, sodass wir es nicht selbst implementieren zu mssen.
Im Folgenden sind Links, die ihr aber nicht durcharbeiten msst, aber nach Bedarf reinschaun knnt. Googlen ist hufig effizienter. Langchain Tutorials How To Guides Wichtiger ist es erstmal den nachfolgenden Punkten zu folgen! Die zeigen wie wir unsere RAG bauen.
Dieser Teil erklrt wie wir uns eine RAG bauen bzw. unseren ChatBot um einen Dokumenten Zugang ergnzen. Retreiver versorgen unser KI Modell mit der zustzlichen Wissensbasis an Daten bzw. Dokumenten. Dabei knnen ist erstmal optional, ob wir die Dokumente in Embeddings (Vektoren) umwandeln und/oder in Schnipsel schneiden. Die Langchain Retriever sind unser Anhaltspunkt. Retrieval Chain v0.1 Achtung die Dokumentation ist fr Langchain V.0.1. Erklrt aber recht gut das Konzept. Wir verwenden 0.2. Die Dokumentation fr 0.2. ist knapper und es wird fast nur mit Code Beispielen gearbeitet und weniger ausfhrlich erklrt. Retriever dokumentation v0.2 Embeddinsg Models Document Loader Retriever dokumentation How To Guides v0.2
Langchain Historie with Retriever: https://python.langchain.com/v0.2/docs/how_to/qa_chat_history_how_to/#adding-chat-history
Langchain Tools rsten unsere KI Applikation mit zustztlichen Fhigkeiten aus und erweitern die Kompetenzen von KI Modellen. Meistens um mit der Welt drumherum zu interagieren. LLMs using tools
Ab hier bewegt ihr euch im Advanced Teil, wenn ihr eure RAG bzw. Dokumenten ChatBot um zustzliche Fhigkeiten ergnzen wollt.
Tools Dokumentation v0.1
(Auch hier erklrt v0.1 etwas mehr)
Langchain Tool bersicht v0.2
Eigene Tools bauen ist auch mglich, aber ich frchte das ist etwas komplizierter. Ab diesen Punkt beschftigt man sich auch mit KI Agenten Systemen. KI Agenten sind meistens auf eine Aufgabe spezialiserte KI-Modelle, die Teilaufgaben lsen und ihre Ergebnisse an einen anderen Agenten weitergeben. Zum Zweck eine bergeordnete Aufgabe zu lsen. In diesen Prozess lsst sich der Mensch auch als ein Agent integrieren. Ein beispiel wre es einen Blogeintrag zu schreiben. Langgraph oder CrewAI
Hier ist die Dokumentation zur Ollama Konfiguration. Anleitung Chat Einrichtung Multi Modal Support Using Model Tools (if exist) Tooling with few Shoot Ansatz
Wenn ihr euren ChatBot Grafische Nutzer Interface (GUI) technisch erweitern wollt: Langchain & Gradio Create a Chatbot with Gradio Ergnze Multimodale features zum Interface zum Beispiel File Upload
Die Webseite learnprompting.org erklrt wie Prompting funktioniert und stellt Anstze dar wie man der KI aus der Perspektive der Prompt Eingabe bessere Ergebnisse entlocken kann.
Die Artikel sind kurze Erklrungen. Pickt euch Themen raus die euch weiterhelfen.
Was ist few Shot Prompting? In der Praxis dieses Workshops werden wir Few Shot Prompting verwenden, um in dem System Prompt dem KI Modell einen grobe Situation vorgegen. Im Grunde nur darum geht, dem Modell einige Beispiele fr das zu zeigen bzw. Anweisungen zeigen (sogenannte Shots), was es tun soll. Few Shot Prompting in Langchain