Werk:AI mit Arnie/Individuelles Wissen durch RAG
In diesem Video sehen wir uns an, wie wir Variablen hinzufügen. Und dank diesen Variablen können wir danach unser Custom Knowledge hochladen. Und das Custom Knowledge, das kann kommen von wo auch immer du willst. Also, das Ganze geht sofort los.
Wir sind natürlich immer noch hier, und da bei „Prompt“, da können wir ein klein wenig umbauen, und dann funktioniert das Ganze besser. Ich würde sowas vorschlagen: Hier bei „Prompt“ müssen wir etwas eingeben, und du siehst, das funktioniert aktuell nicht. Und du siehst auch, wie das funktioniert: „Remove handle to edit Text“. Das heißt, wir müssen das nochmal kurz trennen. Und ich würde vorschlagen, dass man hier sowas einträgt: „Question:“, und danach fügen wir eine Variable hinzu. Die Variablen, die können wir hier oben hinzufügen: „Insert variable“. Wir klicken kurz darauf, und dann siehst du, das ist hier sofort schon mit dabei. Diese Variable, die können wir übrigens auch umbenennen. Machen wir einfach mal „Question“. Und dann sollte das Ganze schon funktionieren.
Wir machen folgendes: Wir verbinden die zwei Dinge nochmal. Du wirst gleich sehen, warum das Ganze hier wertvoll ist. Denn wir müssen jetzt natürlich unser Custom Knowledge hinzufügen. Sonst macht dieser Bot natürlich so überhaupt keinen Sinn. Und ich denke, wenn du bis jetzt mitgedacht hast, dann weißt du, wie das geht: General LLM. Und als Nächstes „Knowledge Base“. Wir klicken auf „Knowledge Base“ und wir klicken danach natürlich hier drauf, und wir bekommen hier unsere Knowledge Base dazu. Das funktioniert wirklich alles so einfach. Und wie gehen wir hier mit um? Wir können das natürlich umherziehen. Das heißt, wir können das zum Beispiel hier rübersetzen. Ich will das etwas hübscher machen, Moment. Und wir haben hier „Query“ und „Result“. Und „Query“, das verbinden wir ganz einfach hier mit unserem Input. Das heißt, unser Input ist hier jetzt verbunden mit dem Knowledge Base Reader und gleichzeitig natürlich noch mit unserem LLM. Natürlich. Und das sieht mittlerweile schon relativ gut aus.
Allerdings müssen wir natürlich ein Knowledge hinzufügen. Wir können entweder schon bereits vorhandenes Knowledge hinzufügen, wenn wir denn schon was hochgeladen haben. Falls wir das nicht haben, dann klicken wir natürlich „Create New Knowledge Base“. Und wir müssen dem ganzen Ding einen Namen geben. Was macht das Ding nochmal? Es beantwortet Fragen zu LLMs. Also ist der Name von unserem Knowledge „LLM Wissen“. Natürlich. Und die Description, also die Beschreibung: „LLM Wissen“. Also, ich denke, das können wir schon so lassen.
Jetzt brauchen wir die Advanced Settings. Das heißt, wir klicken darauf, und wir haben hier die „Chunk Size“, „Adjust the Overlap Size in Tokens“. Und hier unten „Hybrid“. Ich will was ganz, ganz Kurzes hier aufreißen: Wir verwenden hier natürlich die RAG-Technologie. Und du weißt natürlich noch, wie die RAG-Technologie funktioniert. Du weißt ja noch, wir haben die RAG-Technologie auch hier bei diesem Paper verwendet. Und ich will dir jetzt zeigen, was die „Chunk Size“ ist. Wenn wir ein solches Paper, also das gesamte Paper, reinwerfen würden in unsere Knowledge Base, dann weiß ChatGPT natürlich nicht so wirklich, wie es hier durchsuchen soll. Du weißt, die speichern alles in der Vector Database. Und das ist einfach ein klein wenig schwierig für das LLM, alles auf einmal zu lesen. Token Limit und so weiter. Du kennst die ganzen Dinge. Und so ist es meistens, dass die Dinge von ganz unten am meisten berücksichtigt werden und die Dinge von ganz oben von so einem ganzen Paper.
Mit der „Chunk Size“ können wir das tatsächlich umgehen. Wir können die „Chunk Size“ einstellen, dass sich das LLM immer gewisse Stückchen ansieht. Das heißt, die „Chunk Size“ wäre hier: Wenn wir 400 eingeben, dann heißt das, dass sich das LLM immer jeweils 400 Tokens ansieht. Danach lässt es das aus, sieht sich den nächsten 400 Tokens an, danach sieht es sich wieder die nächsten 400 Tokens an, und es sucht immer dort die relevanten Wörtchen raus. Und wenn es einen Abschnitt gefunden hat, einen sogenannten „Chunk“, wo viele Tokens sind, die höchstwahrscheinlich dazu passen für eine gute Antwort, dann bekommen wir hier auch eine gute Antwort.
Ich würde dir raten, diese „Chunk Size“ nicht zu groß einzustellen. Also 4000 ist so groß. Auch wenn unser GPT-Modell mit GPT-4o natürlich ein ganz, ganz großes, ein großes Token-Limit hat. Ich würde die „Chunk Size“ ungefähr bei 500 bis 600 lassen. So bekommen wir einen anständigen Output. Den „Chunk Overlap“, hier sieht man sich ganz einfach an: Wie viel sollen die Dinge überlappen? Viele sagen, den sollte man auf Null lassen. Ich bin hier anderer Meinung. Ich denke, den Overlap sollte man ein klein wenig hochstellen, so ungefähr 1 bis 10 % von der gesamten „Chunk Size“. Ich denke, mit 30 fahren wir hier relativ gut.
Das „Text Embeddings“-Modell: Das „Text Embeddings“-Modell ist hier „Text Embeddings 3 Small“. Wir können aber auch stärkere Modelle verwenden. Diese ganzen Modelle kommen tatsächlich von OpenAI. Je stärker das Modell, natürlich, umso desto besser werden die Embeddings. Für diesen Test lassen wir einfach mal „Text Embedding 3 Small“ hier. Das „Text Embedding 3 Large“ ist meiner Meinung nach, soweit ich das jetzt noch gerade im Kopf habe, das beste Modell. Wir klicken einfach mal „Confirm“. Ich denke, so ist dieses LLM-Wissen relativ gut.
Was machen wir als Nächstes? Wir müssen natürlich auch noch Wissen hochladen, denn sonst war das natürlich alles komplett ohne Sinn. Jetzt müssen wir natürlich die Dinge hinzufügen. Wir klicken „Edit Knowledge Base“. Und jetzt können wir hier natürlich Informationen hinzufügen. Und das können wir machen mit verschiedenen Möglichkeiten. Wir klicken einfach mal auf „Add Document“. Und wir können jetzt den „Loader Type“ auswählen. Das heißt, wir klicken hier drauf: Es kann ein File sein, eine Integration, eine URL, eine „Recursive URL“. Es kann ein Wikipedia-Artikel sein. Es kann sogar von YouTube kommen, hier werden wir automatisch das Transkript verwenden. Es kann von ArXiv kommen, und es kann sogar von Git gehen. Du kannst hier sogar ein gesamtes GitHub-Repo mit einfügen.
Was ist das Ding, was wir hier haben? Das ist hier ein, ich würde mal sagen, ein Link. Das heißt, wir kopieren diesen Link ganz einfach. Wir gehen zurück in unsere Pipeline. Das ist hier tatsächlich die URL. Ganz einfach, die URL können wir hier jetzt mit einfügen. Und danach: „Rescrape URLs“. Das lassen wir ganz einfach auf „Never“. Und wir können „Add“ klicken, und das Ding wird hinzugefügt. Das ist jetzt wirklich sofort dabei. Und du kannst sogar noch mehr Dinge hier hinzufügen. Wir könnten nochmal auf „Document“ klicken, wir klicken nochmal das. Du könntest sogar Integrationen hinzufügen. Und bei den Integrationen, da könntest du wirklich verschiedenste Dinge hinzufügen, also „Add Integrations“. Du könntest Dinge hinzufügen von Discord, von Gmail, vom Google-Kalender und so weiter, von Google Sheets. Ich werde hier jedoch aktuell zumindest nicht alles sofort verbinden. Ich denke, erstmal reichen uns die Dinge aus, die wir hier hinzugefügt haben.
Wenn der Status so ist, dann hat das Ganze nicht funktioniert. Es könnte jetzt am Link liegen, also lösche ich das Ganze nochmal. Das heißt „Delete“. Wir machen jetzt nochmal natürlich „Add Document“. Diesmal versuche ich, eine File hinzuzufügen. Das File soll jetzt natürlich auf meinem PC sein. Das heißt, ich habe inzwischen das File runtergeladen. Ich klicke „Plus“, und das ist das File. Ich klicke „Öffnen“, und ich muss auch nochmal hier „Add“ klicken. Und du siehst, jetzt ist der Status okay. Wir haben alles hinzugefügt.
Und ich will dir noch was Cooles zeigen: Du kannst hier natürlich mehrere Dinge hinzufügen. Und etwas vom Coolsten ist folgendes: Das hier ist jetzt ein Artikel, und dieser Artikel hat Unterlinks. Und sagen wir, dieser Artikel wird auch ab und zu abgedatet. All das kann passieren. Wie würde man sowas einbauen, sodass es auch wirklich immer topaktuell ist? Natürlich: Man klickt wieder „Document“. Was verwenden wir diesmal? Diesmal sollte es natürlich eine URL sein, aber eine „Recursive URL“. Das heißt, auch Unterlinks sind hier mit dabei. Jetzt, das da ist die URL. Das heißt, wir kopieren diese URL. Ich werde die URL danach rauslöschen. Es ist natürlich nicht korrekt, dass ich hier einfach fremde Artikel durchsuche, denn ich kenne diesen Typen hier nicht. Danach werde ich das da ganz einfach einfügen. Und nun das da: „Rescrape URLs“. Wir können das, damit es wirklich immer up-to-date bleibt, zum Beispiel auf „Weekly“ setzen. Danach wird hier unser Tool hergehen und das jede Woche updaten. Wir klicken jetzt „Add“. Dann wäre hier unsere Webseite hinzugefügt, und auch all die Unterlinks werden hinzugefügt. Du siehst, alles okay mit unseren sieben Unterlinks. Und jede Woche wird das jetzt abgedatet.
Das ist natürlich wahnsinnig praktisch, wenn du zum Beispiel einen Onlineshop hast, und der Onlineshop wechselt die Preise, zum Beispiel jede Woche. Dann ist unser Chatbot immer automatisch up-to-date. Und was machen wir jetzt? Wir haben unsere zwei Files hinzugefügt. Wir klicken einfach mal „Save“ hier mittlerweile. Und das ist tatsächlich schon gespeichert. Wir können es zumachen. Und jetzt haben wir hier unser LLM-Wissen mit integriert. Aber das ist natürlich erst der erste Schritt.
Wir müssen natürlich, nachdem unsere Anfrage gestellt wurde, auch Zugriff bekommen auf unser Wissen. Und zwar auf die Resultate, auf die „Results“. Und die würden wir natürlich gerne anschließen auf das OpenAI LLM. Jedoch funktioniert das aktuell nicht. Wir haben hier ja nichts frei, wo wir einstöpseln können. Und das müssen wir ändern. Und das funktioniert auch ganz, ganz einfach. Wir gehen nochmal hier auf diesen „Prompt“. Wir machen eine neue Zeile, zum Beispiel. Wir schreiben hier: „Kontext:“. Danach natürlich eine neue Variable. Wir löschen das und nennen das „Kontext“. Und jetzt haben wir hier was Neues, wo wir einstöpseln können. Und diese zwei Dinge müssen wir jetzt zusammenführen. Und das war's tatsächlich schon.
Damit das übersichtlicher wird, kannst du dir die Blöcke natürlich hinziehen, wo auch immer du willst. Und jetzt könnten wir natürlich den Systemprompt noch besser anpassen: „Du bist ein Assistent namens Dudel, der Fragen zu LLMs beantwortet.“ Das ist schon mal korrekt. Hier jetzt fügen wir noch sowas hinzu: „Du beantwortest die Fragen, indem du dein Wissen durchsuchst. Halte dich kurz.“ Und jetzt können wir diesen Bot testen, ob er tatsächlich unser Wissen hat. Und zwar das Wissen von unserem gesamten Paper, eingeteilt in Chunks, die Sinn machen für unser LLM. Und natürlich auch von dieser Webseite mit den ganzen Unterlinks. Und die Webseite wird wöchentlich abgedatet. Das ist wirklich ein nützlicher Chatbot, würde ich einfach mal behaupten.
Deshalb: „Run Pipeline.“ Und wir stellen jetzt bei „Message“ die Frage: Ich muss irgendwas raussuchen, damit wir etwas Spezielles fragen können. „Welche Arten von Fine-Tuning gibt es?“ Ich glaube, das war auch sonst schon mal die Frage an unser Wissen hier. Und du wirst danach sehen, welche Dinge hier alles getriggert werden. Das dauert jetzt natürlich ein paar Sekunden, da hier natürlich viel nötig ist. Und wir bekommen hier unsere Antwort. Ich kann das auch größer machen, dass wir das besser sehen können. Und du siehst: „Volles Fine-Tuning“, „Parameter effizientes Fine-Tuning“, „Instruction Tuning“, „Reinforcement Learning with Human Feedback“. Und das sind zu 99 % die Dinge, die aus unserem Wissen hier durchsucht wurden.
Wir können auch hier sehen, die Dinge, die getriggert worden sind. Und bei diesen Outputs sehen wir natürlich auch, was geantwortet wurde. Und hier sehen wir sogar diese Sternchen. Das heißt natürlich, dass die Dinge gefunden worden sind in unserem Wissen. Ich will einfach mal „P-E-F-T“ hier suchen, zum Beispiel in diesem Paper. Steuerung-F. „PEFT“. Und du siehst hier schon: „Parameter effizientes Fine-Tuning“. Die Abkürzung ist hier dieses „PEFT“. Das ist hier natürlich auf Englisch. Unser Bot hat alles auf Deutsch übersetzt, aber er verwendet hier natürlich die Dinge, die korrekt sind bei „Parameter effizientes Fine-Tuning (PEFT)“. Also, der Bot scheint richtig, richtig effizient und gut zu funktionieren.
Und tadaa! Schon haben wir hier unseren KI-Agenten stehen. Unser KI-Agent durchsucht natürlich unsere PDF-Datei. Und gleichzeitig durchsucht er auch noch unseren Webartikel. Diesen Blogpost. Beim Blogpost geht er auch noch in die Unterlinks rein und sucht sich von hier die wertvollen Informationen. Die „Chunk Size“ ist so gewählt, dass das LLM sich leichter zurechtfindet. Und ich habe auch den „Chunk Overview“* ein klein wenig erhöht, damit es auch bestimmt keine Dinge hier auslässt. Das ist zwar etwas token-uneffizient, ich will aber sichergehen, dass die Antworten gut sind. In der Vector Database und in den Embeddings-Modellen werden wir hier natürlich ein klein wenig mehr bezahlen müssen, da wir mehr Tokens verbrauchen. Aber meiner Meinung nach ist es das auf alle Fälle wert, da wir die besseren Antworten bekommen.
*Overlap
Das ist unser Chatbot. Das ist generell gut. Das ist eigentlich relativ ähnlich, wie wir es in GPTs machen können, aber alles natürlich mit API-Calls. Aber die Magie passiert natürlich, weil wir diese Chatbots einbauen können in verschiedenste Applications. Und du kannst hier sogar Links zu YouTube-Videos und zu ganz, ganz ganz vielen verschiedenen Dingen mit integrieren. Also, im nächsten Video sehen wir uns an, wie wir diesen Chatbot verwenden können und wie wir ihn einbauen können in verschiedene Dinge drinnen. Und dann haben wir wirklich eine App, die läuft. Zum Beispiel auf einer Webseite, zum Beispiel in WhatsApp, zum Beispiel in Slack, zum Beispiel wo auch immer du willst. Und du kannst die Knowledge Base auch immer selbst updaten. Du kannst Links rauswerfen, Links hinzufügen. Links werden automatisch abgedatet von unserem KI-Agenten. Und ich denke, das ist wirklich ein mächtiges, mächtiges Tool.
Also, wir sehen uns natürlich im nächsten Video.