document-ai-workshop

A german workshop where you learn how to build RAGs with Langchain

Stars
2
Committers
4

document-ai-workshop

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:

  • Chat mit Dokumenten (ChatBot der Wissen aus Dokumenten ziehen kann)
  • (Chat Historie) Fertig
  • (Graphical Chat Interface) Fertig

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.

Environment Setup

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 correct_directory

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! Aktives venv (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:

  • Azure OpenAI basierte KI Applikation (nutzt GPT-4o-mini - Key gibt es von uns) python run_ai_azure_open_ai_model.py
  • OpenAi Playground basierte Ki Applikation (KI Modell von OpenAI - Hier brauchst du einen eigenen Key) python run_ai_gpt_model.py
  • Ollama basierte Ki Applikation (lokales KI Modell) => python run_ai_ollama_model.py

Azure OpenAI KI Applikation

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

OpenAi Ki Applikation (Cloud)

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.

Get an OpenAI API Key

  • First, navigate to https://platform.openai.com/account/api-keys
  • Then, sign up for or sign into your OpenAI account.
  • Click the Create new secret key button. It will pop up a modal that contains a string of text like this:
    GPT API Key Example
  • Last, create in project-root a new file 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

Lokales KI-Modelle starten mit Ollama

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.

Anforderungen an deinen Computer

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):

  • Guter Prozessor (Intel i7), sonst generiert die KI mglicherweise ein Wort in 30s
  • Groer Arbeitsspeicher (RAM) (Minimum 8GB, besser 16 und 32 GB); KI-modelle werden in den RAM geladen, ein 8GB groes Modell lsst sich nicht 8GG RAM laden, kein Platz; selbst 4Gb groe Modelle sind dann schon kritisch.
    Ressourcen hunger steigt mit der Gre des Modells. Es gilt Llama3 7B => Kleines Modell, Llama3 70B => groes Modell. 70b steht fr 70 Mrd Parameter. Viele Modelle haben eine groe und eine kleine Ausfhrung, wie Llama3 von Meta.

Ollama

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.

  1. Install Ollama: https://ollama.com/download
  2. Browse Models for your use Case or use a recommendation model
  3. Load Model herunter via ollama pull <model> (optional)
  4. Start Modell via ollama run <model> (ldt auch runter, wenn nicht existent)
  5. Run Ollama KI Application python run_ai_ollama_model.py

Modell Empfehlungen

Applikation startet eine simple GUI

Applikation im Terminal starten: alt text Gradio Web GUI ffnen: http://localhost:7860 alt text

Einfhrung KI

Was sind Ki-modelle und wie entsteht diese knstliche "Intelligenz"

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. alt text 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.

Begriffe: Was erhlt die KI als Eingabe? (Prompt)

alt text 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.

Retrieval Augmented Generation (RAG) Application

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. img_1.png Das Bild oben veranschaulicht den grundlegenden Ablauf einer RAG Applikation:

  1. Dokumente vorbereiten: Zunchst werden interne Dokumente des Unternehmens in kleine Stcke (Chunks) aufgeteilt.
  2. Erstellung von Embeddings: Diese Chunks werden dann durch ein Embedding-Modell in Vektoren (Embeddings) umgewandelt.
  3. Speicherung und Abruf: Die erzeugten Vektoren werden in einer Vektordatenbank gespeichert. Wenn ein Prompt eingegangen ist, werden hnliche Dokumente aus der Vektordatenbank abgerufen.
  4. Erweiterung des Prompts: Die abgerufenen Dokumente werden genutzt, um den ursprnglichen Prompt mit zustzlichen Informationen anzureichern.
  5. Generierung der Antwort: Der angereicherte Prompt wird an das generative KI-Modell (GenAI-Model) weitergeleitet, welches daraufhin eine optimierte Antwort generiert.

Embeddings: Dokumente fr das KI Modell aufbereiten

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. alt text 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!

Tools & RAG Technologien

Langchain:

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.

Dokumenten einlesen & Embeddings in Langchain

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

Langchain Historie with Retriever: https://python.langchain.com/v0.2/docs/how_to/qa_chat_history_how_to/#adding-chat-history

Langchain Tools

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

Langchain mit Ollama Links

Hier ist die Dokumentation zur Ollama Konfiguration. Anleitung Chat Einrichtung Multi Modal Support Using Model Tools (if exist) Tooling with few Shoot Ansatz

Gradio: Simple Web GUI for via Python Commands for AI interactions

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

Prompt Engeneering: Wie interagiere ich effektiv mit der KI

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.

Few Shot Prompting

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

Rollen Prompting

Techniken Kominieren

ChatBot Grundlagen & Priming Chatbots