📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Wie du einen KI-Agent erstellst, der deine Dokumente kennt (n8n & RAG für Anfänger)

Sebastian Claes | KI Automatisierung22:08

Transcription

Und dann gehen wir hier auf „Neu laden“, hier eine Datei hoch. Und dieses Dokument können wir jetzt verwenden.

Wann Sebastian die Ausbildung zum Fachinformatiker abgeschlossen hat, das können wir unseren Chatbot auch fragen, und hoffentlich liefert er uns hier die richtige Antwort. Sebastian hat seine Ausbildung zum Fachinformatiker im Juni 2022 abgeschlossen.

Und damit: Herzlich willkommen zu einem neuen Video! Ich freue mich, dass du hier bist. Heute zeige ich dir, wie du einen eigenen KI RAG Chatbot bauen kannst. R steht für „retrieval argumented Generation“ und beschreibt im Prinzip einen Chatbot, der neben seiner trainierten Datenquelle auch noch weitere Daten mit aufnehmen kann. In unserem Fall werden wir hier persönliche Dokumente hochladen. Du kannst das Ganze aber auch für deine Firma einsetzen; beispielsweise, wenn du Dokumentation hast oder Kundeninformationen, oder im Allgemeinen einfach Daten, wo du möchtest, dass die KI dir Fragen zu beantworten kann.

Wir gucken, was wir brauchen für diesen Bot: n8n, wie im letzten Video – das ist das Tool, mit dem wir diesen KI Chatbot bauen werden. Dann brauchen wir Google Drive. Google Drive benutzen wir, um unsere Dokumente hochzuladen. Wir brauchen Pinecone; das ist eine Vektor Datenbank. Diese Datenbank benutzt unser Chatbot. Und letzten Endes werden wir Informationen von Google Drive auf unsere Pinecone Datenbank ziehen. Und zu guter Letzt noch Chat GPT für die Interpretation, also für das „Gehör“ unseres Chatbots.

Wir gucken uns die Abläufe an. Der erste Ablauf, den wir bauen werden, ist der Ablauf, wo wir Dokumente aus Google Drive in unsere Vektor Datenbank ziehen. Und der zweite Ablauf ist der Ablauf, wo wir dann unseren ersten Workflow benutzen, um Informationen aus dieser Datenbank zu ziehen, damit unser Chatbot uns dann zuverlässig Antworten zu unseren hochgeladenen Dokumenten geben kann.

Das erste, was wir brauchen, ist ein Dokument, dass wir auf unseren Google Drive hochladen, damit wir dann letzten Endes auch ein Dokument haben, was unser KI Chatbot durchsuchen kann. Hierfür gehen wir einfach auf Google Drive. Jeder, der ein Google Konto hat, hat auch automatisch Zugang zu Google Drive. Und dann gehen wir hier auf „Neu“ und laden hier eine Datei hoch. Wenn wir die Bewerbung hochgeladen haben, dann seht ihr die hier. Und dieses Dokument können wir jetzt verwenden.

Unser erster Workflow wird wie folgt aussehen: Wir werden diese Daten, die wir in Google Drive haben – in dem Fall diesen Lebenslauf – in unsere Pinecone Vektor Datenbank einbringen. Das Ganze passiert programmatisch. Hierfür brauchen wir einen Account bei Pinecone; den haben wir schon im letzten Video erstellt. Ich werde jetzt nicht noch mal auf alles eingehen. Oben rechts solltet ihr irgendwo einen Link sehen, der zu meinem letzten Video führt. Und wenn ihr da in die Beschreibung guckt, dort findet ihr Zeitstempel, und dann sollte es kein Problem sein, die Stelle ganz schnell zu finden, wo wir diesen Pinecone Account erstellt haben und auch den Index. Wir werden jetzt hier trotzdem einen neuen Index erstellen. Dafür geht ihr auf „Database“, „Indexes“, und dann auf „Create Index“. Und den geben wir dann einen Namen; den nennen wir mal „RAG Chatbot“. Und wichtig ist, dass wir hier „Text embedding 3 small“ auswählen. Der Rest bleibt so, wie er ist. Wir erstellen den Index.

Der nächste Punkt ist jetzt, dass wir in unser n8n reingehen. Ihr seht hier noch die ganzen verschiedenen Workflows aus dem letzten Video. Und wir wollen hier einen neuen Workflow erstellen. Das erste, was wir tun, nachdem wir den Workflow angelegt haben, ist, ihm einen Namen zu geben. Ich werde ihn hier „R Chatbot“ nennen und in Klammern „Pinecone“, denn das ist die erste Aktion, die wir durchführen wollen: nämlich aus Google Drive das Ganze in unsere Vektor Datenbank kriegen. Und wer aufgepasst hat, wird gesehen haben, dass ich hier die Workflows aus dem letzten Video umbenannt habe in „E-Mail Agent“ und in Klammern immer, was das Ganze dann genau ist; einfach, dass wir eine gewisse Übersicht haben. Ihr könnt hier auch dann spezifisch nach den Workflows suchen, wenn ihr mehrere Workflows habt.

Wir gehen wieder in unseren „REC Chatbot Pinecone“ Workflow rein. Und das erste, was wir hier tun wollen, ist einen Trigger hinzuzufügen. Und auch hier in diesem Video werden wir einen manuellen Trigger verwenden. Das heißt, wir wählen hier „Manuellen Trigger“ aus. Und dann drücken wir auf das kleine Plus, um eine Note hinzuzufügen, und suchen hier oben nach „Google Drive“. Ihr seht hier „Google Drive“, und es gibt eine Menge an verschiedenen Aktionen, die man mit Google Drive ausführen kann. Was wir machen wollen, ist, wir wollen „Download File“ ausführen, um im Prinzip dann unseren Lebenslauf, oder was auch immer für ein Dokument ihr da benutzen wollt, bekommen zu können. Dann öffnet sich hier diese leere Maske, und wir müssen, wie auch im letzten Video, Credentials hinzufügen. Wir gehen hier ganz schnell durch. „Credentials“ öffnen wir. Wir haben hier OAuth 2; das ist empfohlen, das werden wir auch benutzen. Und leider müssen wir, ähnlich wie im letzten Video, das Ganze auch hier anlegen. Dafür gehen wir in unsere Google Cloud Console rein. Und jetzt werden wir erstmal ein neues Projekt erstellen. Wir nennen das Projekt „R Chatbot“, weisen es keiner Organisation zu, erstellen es. Und sind jetzt hier dann gleich in dem entsprechenden Projekt drin. Das dauert kurz. Wir wählen das Projekt aus. Und das allererste, was wir tun wollen, ist, wir wollen Google Drive aktivieren. Dafür können wir hier „Google Drive“ eingeben – nicht „DVE“, sondern „drive“ – und sehen hier „Google Drive API“. Da drücken wir drauf und aktivieren uns das Ganze.

Nachdem wir Google Drive aktiviert haben, gehen wir hier auf „OAuth-Zustimmungsbildschirm“. Und hier sehen wir tatsächlich, im Vergleich zum letzten Video, dass Google den Workflow etwas verändert hat. Das sollte aber kein Problem sein; im Gegenteil, das sollte tatsächlich jetzt sogar einfacher funktionieren oder verständlicher sein. Wir klicken auf „Erste Schritte“ und geben uns einen Anwendungsnamen. Auch hier sage ich „R-Chatbot“. Und dann müssen wir eine E-Mailadresse auswählen. Das kennen wir. Wir klicken auf „Weiter“. Das Ganze ist extern. Wir klicken auf „Weiter“. Dann müssen wir hier noch mal eine Kontakt-E-Mailadresse angeben. Ich nehme hier wieder die gleiche. Und dann klicken wir wieder auf „Weiter“. Dann akzeptieren wir das Ganze, klicken auf „Weiter“ und erstellen unser Projekt.

Als nächstes klicken wir auf „Client erstellen“, wählen einen Anwendungstyp. Das Ganze ist eine Webanwendung. Den Namen „Webclient 1“ lassen wir hier auch wieder so. Und dann brauchen wir eine autorisierte Weiterleitungs-URL. Hier drücken wir auf „Hinzufügen“, und wir können in unseren n8n Tab reingehen und sehen hier die OAuth Redirect URL. Die kopieren wir uns und fügen sie hier hinzu. Dann klicken wir auf „Erstellen“ und sehen hier: Wir haben eine OAuth-Client-ID hinzugefügt. Die Client-ID können wir uns schon mal kopieren und in n8n einfügen. Und dann suchen wir noch unser Client Secret raus. Dafür können wir auf „Bearbeiten“ drücken und sehen hier „Client-Schlüssel“. Den kopieren wir uns ebenfalls. Zeigt diesen kleinen Schlüssel niemanden! Fügt ihr hier ein. Und jetzt haben wir hier den Button „Sign in with Google“. Bevor wir uns hier aber mit Google anmelden können, müssen wir noch eine autorisierte Domain hinzufügen. Hierfür kopieren wir oben „n8n.cloud“, gehen wieder in unsere Google Cloud Console rein, befinden uns hier gerade auf der Übersichtseite, und dann gehen wir auf „Branding“, scrollen etwas runter und fügen hier mit einem Plus eine autorisierte Domain hinzu. Hier nehmen wir „n8n.cloud“, und das Ganze speichern wir dann noch mal ab. Und nachdem wir die autorisierte Domain hinzugefügt haben, gehen wir noch auf „Zielgruppe“ und sehen hier, dass der Veröffentlichungsstatus auf „Test“ steht. Hierfür drücken wir einmal auf „Anwendung veröffentlichen“, dann auf „Bestätigen“. Und jetzt sollten wir in unserem n8n Workflow uns mit Google anmelden können. Wir drücken auf „Sign in with Google“. Hier öffnet sich ein Modal. Ich füge euch Screenshots ein, weil das Modal nicht seht. Ich wähle meinen Account aus. Und dann kommt: „Google hat diese App nicht überprüft.“ Das ist kein Problem. Wir klicken auf „Weiter“ und dann auf den Link unten „n8n Cloud öffnen“. Dann müssen wir auswählen, welche Berechtigungen n8n hat. Ich drücke auf „Weiter“. Und dann seht ihr: Wir wurden erfolgreich verbunden. Dann können wir das Ganze hier auch schließen. In den Credentials wurden die Credentials jetzt hier hinzugefügt und auch schon ausgewählt. „Resource“ ist ein „File“, das ist richtig. „Operation“ ist „Download“, das ist auch richtig. Und jetzt, wo wir Zugriff haben, können wir hier unsere Datei auswählen. Wir sehen hier „From List“, das ist wunderbar, und können hier jetzt dann einfach suchen nach „Lebenslauf“, oder wie auch immer eure Datei heißt. Und dann seht ihr hier „Lebenslauf.pdf“. Anschließend drücken wir auf „Test Step“ und sehen, ob das Ganze funktioniert. Hier steht: „Note executed successfully“. Und wir sehen hier schon Daten. Er hat ein Item gefunden mit dem Filename „Lebenslauf“. Es ist ein PDF, und wir sehen, der Mimetype ist auch „application/pdf“. Wir sehen hier auch die Dateigröße und könnten uns das Dokument jetzt hier angucken oder downloaden. Wir können jetzt das Modal schließen und drücken hier auf das Plus, um eine weitere Note hinzuzufügen. Und jetzt wählen wir „Pinecone“. Seht das hier. Und können hier aus einer Auswahl von Aktionen auswählen. Wir wollen „Add Document to Vector Store“ wählen. Und auch hier müssen wir uns mit Credentials anmelden. In dem Fall hat er die Credentials von unserem letzten Tutorial noch. Könntet ihr hier auch euch noch mal bearbeiten. Und hier braucht ihr letzten Endes den API Key, den wir bei der Erstellung des Pinecone Kontos bekommen haben. Wenn ihr hier auf „API Keys“ geht, seht ihr den. Ihr könnt den hier nicht mehr kopieren; das ging früher. Das heißt, speichert euch die Sachen immer gut ab. Solltet ihr den Key nicht mehr haben, könnt ihr hier auf „Create API Key“ gehen. Wir sind aber schon verbunden. Die Operation ist „Insert Documents“, das ist richtig. Und jetzt haben wir hier „From List“, da können wir wieder auswählen. Und wir nehmen unseren neuen Index, nämlich den „RAG Chatbot“. Dann wollen wir noch eine Option hinzufügen, nämlich einen Namespace, genau wie auch im letzten Video. Und den nennen wir einfach nur „R“. Der Namespace ist wieder da, um, wenn ihr einen Index habt, das Ganze unter dem Index gruppieren zu können. Das heißt, wir hätten hier auch einen gemeinschaftlichen Index für beide Projekte – also sowohl für den E-Mail Agent aus dem letzten Video und für diesen R Chatbot – benutzen können. Und dann hätten wir hier die Möglichkeit gehabt, das nämlich untereinander zu gruppieren. Anschließend haben wir unseren Pinecone Vector Store hier. Und jetzt wollen wir einen Default DataLoader hinzufügen, um die Daten letzten Endes auch zu laden. Wir drücken hier drauf. Das Ganze können wir exakt so lassen, wie es ist. Wir gehen hier wieder raus und gehen auf „Text Splitter“. Und diesmal wählen wir den „Recursive Character Text Splitter“ aus. Die Chunk Size sind 1000; das lassen wir so, denn PDF kann relativ groß sein. Und den Chunk Overlap den lassen wir auch auf Null. Und im Anschluss brauchen wir noch ein Chatmodell. Wir nehmen hier „Embeddings OpenAI“. Ihr müsst auch hier wieder eure Credentials hinzufügen. Die haben wir in dem Fall auch wieder. Das ist hier ein API Key. „Organization ID“ ist optional. Wenn ihr wissen wollt, wie man an den API Key kommt, guckt ins letzte Video. Und genau „Text Embedding ada-002“ haben wir ausgewählt. Wunderbar. Den Rest können wir so lassen. Das heißt, wir gehen auch hier wieder rauf, ziehen uns das entsprechend etwas zur Seite, dass wir das besser betrachten können, und können einmal auf „Speichern“ drücken.

Jetzt können wir den ganzen Workflow auch einmal testen. Und ihr seht: „Workflow executed successfully“. Wir haben also alles richtig konfiguriert. Eine Sache, die mir gerade aufgefallen ist: Wir müssen doch noch mal in unseren Default DataLoader reingehen und statt „Type of Data: JSON“ hier „Binary“ auswählen. Ich zeige euch warum. Wenn wir hier rausgehen und jetzt auf unsere Google Drive Note klicken, dann sehen wir hier, dass das File, was wir bekommen haben, als Binary ausgegeben wird. Wenn wir hier oben das Ganze mal auf JSON umwandeln, umändern, dann sehen wir hier: Steht nichts drin. Das Ganze können wir uns nur hier als Binary anzeigen lassen. Und dementsprechend muss unser Default DataLoader auch „Binary“ ausgewählt haben. Den Mode „Load all input data“ und „Data Format“ können wir genau so lassen. Wir können jetzt hier noch mal auf „Test Workflow“ drücken und um sicherzustellen, dass das dann auch funktioniert hat, können wir in unseren Pinecone Account reingehen. Wir gehen auf „Database“, „Indexes“, auf unseren „Chatbot“, und dann klicken wir auf „Namespace“, und wir sollten hier sehen „R“. Das ist im Prinzip der Namespace, den wir hinzugefügt haben. Und „Number of records“ sind eins. Damit haben wir dann unseren „R Chatbot Pinecone“ Workflow abgeschlossen. Wir speichern das Ganze, wenn es noch nicht gespeichert ist, klicken auf „Overview“ und legen noch einen weiteren an.

Das hier wird jetzt der tatsächliche Chatbot. Ich nenne das Ganze also „Chatbot“. Und als Trigger, als ersten Step, wählen wir, ähnlich wie beim letzten Mal, „On Chat Message“ aus. Wir können hier direkt wieder aus dem Modal rausgehen, drücken auf unser Plus und wählen „Advanced AI“, dann wählen wir den „AI Agent“ aus und kommen jetzt hier in dieses Modal. In dies können wir prinzipiell fast alles so lassen, wie es ist. Wir wollen aber noch eine Option hinzufügen, nämlich eine „System Message“. Und auch hier können wir, wie beim letzten Mal, dann unseren Prompt einfügen. Um den können wir uns aber später kümmern. Ich hoffe nur, dass ich das Ganze nicht vergesse. Wir schließen das Ganze und sehen jetzt hier unseren AI Agent und können dann noch weitere Tools und Notes hinzufügen. Wir starten mit der ersten Note, nämlich dem Chatmodell. Wir drücken hier auf Plus und wählen „OpenAI Chat Model“. Unser Account ist schon verknüpft. Dann gehen wir „From List“, scrollen ganz runter und wählen „ChatGPT 4“. Wir können das Ganze schließen und die Note hier ein bisschen zur Seite ziehen und drücken dann als nächstes auf „Memory“. Hier wählen wir „Window Buffer Memory“. Das ist die einfachste Variante. Wir können hier alles genauso lassen, wie es ist. „Context Window Length“ ist im Prinzip die Länge des Kontextes, was sich unser Chat dann merken kann; in dem Fall fünf Chatnachrichten. Wir können aber auch hier wieder rausgehen, müssen nichts weiter konfigurieren und drücken dann auf „Tool“. Bei „Tool“ wählen wir „Vector Store“, drücken einmal hier drauf, und dann müssen wir dem einen Namen geben. Ich nenne das Ganze hier „REC Information“. Es spielt letzten Endes keine große Rolle. Wir müssen dem auch eine Beschreibung geben, sagen hier: „Call tool to access information“. „Level“ ist 4; das lassen wir alles so. Und auch hier können wir wieder rausgehen. Auch dieser Vector Store benötigt ein Chatmodell. Wir drücken hier wieder auf „OpenAI“, wählen auch hier „gpt-4“, und vielleicht ganz interessant: Ihr könnt hier auch andere Modelle nutzen. Ihr müsst nicht gpt-4 benutzen. Es gehen auch GPT 3.5 oder letzten Endes alle, die hier angezeigt werden. Ich persönlich habe die besten Erfahrungen mit gpt-4 gemacht; ist aber von den Credits, die ihr verbraucht, oder von der Balance ein klein bisschen teurer. Im Allgemeinen, wenn ihr das nur für euch nutzt, ist das Ganze aber grundsätzlich relativ günstig. Wir schließen auch dieses Fenster wieder. Dann müssen wir hier noch ein Vector Store Model hinzufügen. Wir wählen „Pinecone Vector Store“. Unser Pinecone Account ist verbunden. Diesmal wollen wir „Documents“ retrieven, also bekommen. Und von der Liste wählen wir dann wieder unseren „RAG Chatbot“ aus. Und wenn ihr einen Namespace hinzugefügt habt, dann müsst ihr auch hier wieder diesen Namespace angeben. Das ist ganz wichtig. Das tun wir. Und dann können wir diesen Workflow, oder bzw. dieses Modal, auch wieder schließen. Wir ziehen uns das Ganze hier noch einmal rüber. Und auch dieser Pinecone Vector Store benötigt wieder ein Embedding, nämlich OpenAI. Wir wählen hier „Text embedding ada-002“ aus. Ganz wichtig: Dieses Modell muss auch übereinstimmen mit dem, was ihr bei Pinecone ausgewählt habt. Und genau, „Options“ brauchen wir hier keine weitere. Wir haben jetzt alle Notes für unseren RAG Chatbot AI Agent hinzugefügt. Und was jetzt noch fehlt, bevor wir das Ganze testen können, ist der Prompt für unseren AI Agent; das, was wir hier bei „System Message“ reinschreiben. Was wir dafür machen können – ich zeige euch diesmal den Schritt – ist: Wir machen einen Screenshot von diesem gesamten Workflow. Dann gehen wir auf chatgpt.com, einen neuen Chat, posten hier das Bild rein. Und dann fügen wir diesen Prompt hier rein, und zwar: „Prompt the agent to answer questions from the user. Include background context and instructions. Also tell the agent to answer concisely.“ Das ist im Prinzip ein Prompt, den wir hier benutzen können. Und ChatGPT wird uns jetzt helfen, einen ausführlicheren Prompt für unseren n8n Agenten zu schreiben. Er macht das Ganze hier tatsächlich auch schon auf Deutsch; das ist für mich nicht unbedingt schlecht, weil wir das Ganze hier ja auch auf Deutsch haben wollen. Wir können uns jetzt das Ganze kopieren. Und dann gehen wir in unser n8n rein und fügen das Ganze hier bei „System Message“ ein. Wie immer findet ihr den Prompt auch unten in der Videobeschreibung bzw. einen Link zu einer Readme Datei auf Github. Da könnt ihr dann einfach euch den Prompt kopieren; dann müsst ihr das Ganze nicht selber über ChatGPT machen. So. Und jetzt kommt der spaßigste Teil: Wir testen unseren Chatbot. Hierfür gehen wir in unseren „REC Chatbot“, klicken auf „Chat“, können uns hier das Fenster etwas größer ziehen und können jetzt Fragen zu unserem Dokument stellen. Wir fragen einfach mal als allererstes: „Wann wurde Sebastian K. geboren?“ Ich drücke drauf. Der Ablauf läuft durch. „Sebastian Klese wurde am 27.11.198 geboren.“ Das ist korrekt. Als nächstes interessiert mich: „Wann Sebastian die Ausbildung zum Fachinformatiker abgeschlossen hat.“ Das können wir unseren Chatbot auch fragen, und hoffentlich liefert er uns hier die richtige Antwort. „Sebastian hat seine Ausbildung zum Fachinformatiker im Juni 2022 abgeschlossen.“ Ist ebenfalls korrekt. Wie ihr seht, kann uns der R Chatbot unsere Fragen zuverlässig beantworten, und das Ganze basierend auf unserer eigenen PDF-Datei. In den nächsten Videos werden wir uns auch noch genauer angucken, wie wir mehr Dateien hochladen können. Momentan haben wir das Ganze ja nur mit einer einzigen Datei gemacht. Für richtige Anwendungsfälle braucht ihr da aber bestimmt auch noch Zugriff auf ein paar mehr Dateien, gerade wenn es um Unternehmen geht. Ich glaube, ihr habt aber ein gutes Verständnis dafür bekommen, was so ein R Chatbot kann. Und die Grenzen sind, wie immer, unendlich. Also als Unternehmen haben wir hier die Möglichkeit, Dokumentation hochzuladen, Kundeninformationen, ganze Workflows. Aber auch für den privaten Bereich: Es könnten auch Gesundheitsdokumente hochgeladen werden. Es gibt eine Menge Möglichkeiten, wo ihr solche R Chatbots anwenden könnt. Und sei das nur, dass ihr eure ganzen Anleitungen, die ihr bei der Lieferung von irgendwelchen Maschinen – wie Kaffeemaschinen, Fernseher – digitalisiert und dort hochladet. Dann braucht ihr das Ganze nicht mehr, weil ihr euren eigenen Chatbot habt, der euch zuverlässig Fragen zu diesen Geräten beantworten kann. Wenn euch das Video gefallen hat, dann würde ich mich über einen Daumen nach oben freuen. Abonniert doch auch gerne meinen Kanal und aktiviert die Glocke, wenn ihr keine weiteren Videos verpassen wollt. In den nächsten Wochen werden wir uns eine Menge spannende Dinge angucken, und ich würde mich freuen, wenn du dabei bist. Bis dahin viel Spaß!