Werk:AI mit Arnie/Firecrawl für Daten aus Webseiten
- Open-Source LLMs (AKIR-Kurs):
- KI-Agenten (AKIR-Kurs): "AKIR/Tipps für bessere RAG-Apps - Firecrawl!"
- Ergänzungen eingerückt
In diesem Video sehen wir uns die Probleme der RAG-Technologie an, denn wir haben massive Probleme bei der RAG-Technologie. Das Vorbereiten der Daten ist richtig, richtig wichtig, denn wenn du Links gibst zu Webseiten, dann kann es wirklich sein, dass diese Links nicht perfekt verarbeitet werden können. Und auch wenn du PDFs hast, in diesen PDFs sind natürlich ab und zu Bilder drinnen, ab und zu Tabellen und vieles, vieles mehr. Und es ist natürlich entscheidend, dass du gute Daten hast, wenn du ein LLM trainieren willst mit der RAG-Technologie. Nur so können wir sicher sein, dass die Embeddings in der Vector Database auch Sinn machen, und sie müssen Sinn machen für das LLM und nicht unbedingt für uns.
Zum Glück haben wir zwei verschiedene Tools. Ein Tool ist perfekt, um Webseiten vorzubereiten für LLMs, und das andere Tool ist perfekt für alles andere, z.B. für CSV-Files, für PDFs, für PowerPoint-Präsentationen, für was auch immer. Ich will erstmal einen ganz, ganz kurzen Überblick geben.
Das Erste, was ich dir zeigen will, ist Firecrawl. Mit Firecrawl kannst du jede Webseite umwandeln in Markdown oder JSON. Und Markdown und JSON funktioniert richtig, richtig gut für LLMs. Danach bekommst du ganz einfach solchen oder ähnlichen Text von deinen Webseiten.
Und das zweite Tool, das ist der LlamaParser von LlamaIndex direkt. Das ist Open Source auf GitHub. Und hier drinnen kannst du bei beiden Dingen erstmal gratis starten. Du kannst hier, glaube ich, sogar 1.000 Seiten pro Tag tatsächlich umwandeln, komplett gratis.
Ich muss gestehen, der LlamaParser, der ist etwas komplexer zu verwenden. Nicht wirklich komplex, ich habe hier ein komplettes Google Colab Notebook. Keine Sorge, du musst hier nur Play klicken bei ein paar Zellen. Das ist viel, viel, viel einfacher, als du denkst.
Ich will aber damit starten mit Firecrawl, weil Firecrawl viel, viel, viel einfacher zu verwenden ist, bzw. es ist unglaublich einfach. Firecrawl ist auf GitHub. Auch das kannst du natürlich in einem separaten Link öffnen. Du kannst es hier anklicken. Du kannst dir die gesamte Dokumentation ansehen. Du siehst auch hier einen Haufen guter Sternebewertungen. Das heißt, das Ding ist richtig, richtig praktisch. Und jetzt zeige ich dir, wie wir das Ding verwenden.
Firecrawl wandelt uns Webseiten um, damit sie perfekt sind für die RAG-Technologie. Das heißt, wir sehen uns irgendeine Webseite an. Das hier ist die Dokumentation von LangChain. Und du siehst hier natürlich, das ist ein Chaos. Wir haben Bilder mit drinnen, die Bilder sind komisch mit eingebettet. Wir haben einen Haufen Sublinks, wir haben solche Notes mit drinnen. All das ist natürlich wahnsinnig suboptimal für ein LLM. Aber das können wir unglaublich einfach umwandeln, damit es für ein LLM auch richtig gut zu lesen ist.
- Übrigens, LangChain. LangChain ist richtig praktisch. Mit LangChain können wir Applications bauen, auch mit Open-Source-LLMs. Und wenn wir LangChain und z.B. LangChain kombinieren, dann können wir sogar KI-Agenten bauen.
- Flowise baut z.B. auf LangChain auf, ähnlich wie LangFlow Flow sogar auch noch. Es gibt also ganz, ganz viele Frameworks, die auf LangChain aufbauen.
Alles, was wir machen müssen, ist einfach nur hier diesen Link zu kopieren. Wir können in Firecrawl reingehen. Und du siehst auch hier, du bekommst erstmal 500 Kredite komplett gratis. Übrigens, du musst dir hier einen Account machen. Ich habe hier schon einen Account. Danach kannst du ganz einfach nur die Dinge hier reinkopieren. Das ist hier jetzt die LangChain-Dokumentation. Du klickst hier drauf, und danach wird alles umgewandelt, nachdem du hier drüben Run klickst.
Und du siehst, es wird gecrawlt erstmal. Und was haben wir hier? Wenn du runterscrollst, haben wir hier Markdown und JSON. Markdown ist eigentlich perfekt. Und hier haben wir jetzt alles so aufgeschlüsselt, wie es für unser LLM perfekt ist.
Das heißt, ja, das funktioniert so tatsächlich am besten. Ja, diese Webseite wurde natürlich etwas länger, aber wir haben natürlich die ganzen Sub-Links und das ganze Ding hier mit dabei. Das heißt, wir würden diesen Code hier kopieren. Danach würden wir uns hier oben zum Beispiel ein neues Textdokument eröffnen. Ich klicke das kurz an und ziehe das hier rüber. Und hier könntest du danach das alles reinkopieren. Das heißt, jetzt hast du hier die gesamte Webseite in Markdown in einem Textfile. Und mit diesem Textfile kannst du jetzt natürlich die RAG-Technologie anwenden und deinen Chatbot trainieren.
Das heißt, du speicherst dieses Textfile und du lädst dieses Textfile hoch. Und die RAG-Technologie sollte danach natürlich viel, viel, viel besser funktionieren. Das ist einer der größten und meiner Meinung nach wichtigsten Tipps, die wir nur haben können, damit diese Dinge viel, viel, viel besser werden.
Und jetzt will ich noch ein klein wenig tiefer eintauchen in die Chunksizes. Denn das ist der zweite große Trick, den wir verwenden können, um die Dinge zu verbessern. Ich will hierfür in Paint reingehen. Ich habe das schon mal angerissen. Wenn du hier ein Textdokument hast, so wie wir es eben gerade hier vorhin hatten, und wir haben hier diese Schrift drinnen, genauso wie du es halt eben gesehen hast, dann weißt du ja, dass sich LLMs generell immer verschiedene Blöcke ansehen. Das heißt, schmeißt du alles auf einmal hoch und du gibst die Chunksize nicht wirklich an, dann wird sich das LLM vor allem den ersten Block der PDF oder was auch immer ansehen und den letzten Block. Und die Dinge mittendrin, die sind schwammig. Das heißt, die Dinge mittendrin sind nicht gut.
Aber du weißt ja, die Chunksize, die können wir so auf ungefähr 600 bis 1.000 einstellen. Und dadurch sieht sich das LLM immer solche kleinen Chunks an, die ganz einfach immer so um die 1.000 Tokens groß sind. Und dementsprechend wird das ganze Dokument viel, viel, viel besser durchgescannt, sozusagen.
Und wichtig: Nicht vergessen, auch den Chunk Overlap aktivieren. Das haben wir ja schon besprochen, damit diese Dinge auch bei der nächsten Suche aktiviert werden. Das heißt, erstmal sucht das LLM diese Abteilung hier durch. Und zwar genau bis hier drunter. Und danach geht das LLM her und als nächstes sucht es danach diese Abteilung durch. Und da wird hier das bis hier oben mit begutachtet.
Das heißt, wenn wir hier 1.000 Tokens haben und der Overlap ist z.B. 20 Tokens, dann werden wir uns die 20 Tokens von hier oben beim nächsten Mal durchcrawlen auch noch mal besser ansehen.
Das heißt, das sind hier die wichtigsten Dinge, die wir machen können. Wir müssen die Dokumente vorbereiten. Und dafür, wenn es eine Webseite ist, verwenden wir hier natürlich Firecrawl. Das heißt, du schmeißt ganz einfach nur die Dinge hier in Firecraw rein. Du bekommst alles als Markdown. Dieses Markdown kannst du in ein Textfile einfügen, wie z.B. das hier. Und das kannst du danach hochladen.
Damit das alles noch besser funktioniert, nicht vergessen, die Chunksize einzustellen, damit eben die ersten 1.000 Tokens z.B. angesehen werden. Danach den Chunk Overlap, damit die letzten paar Tokens noch mal angesehen werden. Und so funktioniert die RAG-Technologie viel, viel besser.
Wenn du das nicht machst, dann wird dein gesamtes Dokument sozusagen auf einmal angesehen. Und die Dinge aus der Mitte, die werden nicht gut sein. Die Dinge von ganz unten werden immer sehr, sehr stark begutachtet. Und die Dinge von ganz, ganz oben werden stark begutachtet. Mit der Chunksize auf 1.000 und einem kleinen Overlap kannst du das umgehen, dass sich das LLM danach die Dinge immer in diesen kleinen Chunks ansieht.
- Und noch ein paar generelle Tipps zu der Chunk Size und dem Overlap: Wenn du Geschichten hast, also Stories, dann kannst du die Chunk Size mittlerweile auf 1.000 bis 5.000 einstellen, weil die LLMs ein ganz, ganz großes Kontextfenster haben. Wenn du kurze Geschichten hast, dann würde ich zwischen 500 und 1.000 arbeiten. Bei kurzen Geschichten ist es nicht nötig, eine große Chunk Size zu verwenden.
- Wenn du hingegen Listen hast oder Links oder Dinge, wo Sachen aufgezählt werden, z. B. Preislisten von einem Shopify-Store oder etwas in die Richtung, dann würde ich hier tatsächlich geringe Chunk Sizes verwenden, z. B. 100 bis 500. Denn du musst dir vorstellen, wenn du Listen hast, wo irgendetwas steht, z. B. „Rot kostet 50 €“, wenn solche Sachen stehen, dann hast du die Chunks natürlich ganz, ganz klein. Wenn du im LLM fragst, was kostet Rot, dann kann sich das LLM einen winzig kleinen Chunk suchen: „Rot kostet 50 €“. Und dann ist es natürlich absolut nicht nötig, eine riesengroße Chunk Size zu haben.
- Und beim Overlap haben wir eine generelle Faustregel: 1 bis 5 % funktioniert relativ gut. Das wären z. B. bei 1.000 Tokens 10 bis 50. 20 ist ein guter Mittelwert. Ich weiß, im Flowise wird automatisch 200 verwendet. Wenn du große Geschichten hast, dann kannst du auch ein hohes Chunk Overlap verwenden. Aber wie gesagt, ich persönlich bin eher der Meinung, 1 bis 5 % funktioniert gut. Und in Flowise ist 20 % als die Default Settings mit drinnen. Hier kannst du auch ein klein wenig rumspielen.
- Das würde dann heißen, wenn du bei deinem RAG-Bot Dinge einbauen willst, dann solltest du bei den Document Loaders natürlich vielleicht nicht immer die Dinge verwenden, die direkt die Webseiten durchsuchen. Ja, ich weiß, es ist unglaublich einfach, irgendwas wie einen solchen Web Scraper zu verwenden. Aber den Output wirst du besser bekommen, wenn du dir die Zeit nimmst, alles durch Firecrawl zu jagen. Danach gehst du runter, und du verwendest hier natürlich danach das Textfile.
- Das heißt, du verwendest dieses Ding hier und auch hier danach den Text Splitter dazu. Und Chunk Size mit Chunk Overlap einstellen, genau wie wir es hier gemacht haben. Hier sind wir jetzt auf 10 % hochgegangen. Ich denke, das ist da auch noch okay. Wie gesagt, mit dem Overlap solltest du auch ein klein wenig spielen.
- Dementsprechend, wenn du bei Plus auf die Document Loaders gehst, mach dir vielleicht etwas mehr Gedanken, ob du nicht meistens das normale Textfile verwenden solltest und deine Daten im Voraus anständig vorbereiten solltest.
In diesem Video hast du gesehen, wie wir unsere Dokumente verbessern können. Ist es eine Webseite, dann solltest du tatsächlich Firecrawl verwenden. Du kopierst einfach nur den Link rein. Du bekommst die Dinge als Markdown. Das schmeißt du in ein Textfile. Nicht vergessen, danach die Chunksize und den Overlap ein klein wenig einzustellen. Das habe ich dir schon mal gezeigt.
Und wenn du PDFs hast oder andere Files, dann verwenden wir das Google Colab Notebook, das ich dir im nächsten Video vorstellen will. Und keine Sorge, das funktioniert viel, viel einfacher, als du dir das denkst.