Size matters: RAG & Data Ingestion

Size matters. Zumindest, wenn es um die Daten für deine KI geht. Wir erleben es in Projekten immer wieder: Das LLM (Large Language Model) ist State-of-the-Art (z.B. GPT-5), aber die Antworten sind ungenau oder verfehlen den Kontext. Der Schuldige ist oft nicht das Modell, sondern das „Chunking“.
 

Wer ein 100-seitiges PDF ungeschnitten in eine Vektordatenbank wirft, darf sich nicht wundern, wenn das Retrieval-System die Nadel im Heuhaufen nicht findet.
Hier ist unser Learning aus der Entwicklung unseres eigenen RAG-Chatbots – und warum wir uns von dem einen Standard verabschiedet haben.

Der Fehler: Fixed-Size Chunking
Der einfachste Weg ist das „Fixed-Size Chunking“. Man hackt den Text stur alle 500 Token ab (vielleicht mit etwas Overlap). Das Problem? Sätze oder logische Zusammenhänge werden gnadenlos zerschnitten.

Chunk A: „...der Preis für das Produkt beträgt“

Chunk B: „50 Euro, aber nur bei Abnahme von...“

Das Resultat: Die semantische Bedeutung geht im Schnitt verloren (Semantic Drift). Die Vektorsuche findet den Zusammenhang nicht mehr.

Der Gamechanger: Semantic Chunking & Context-Awareness
Wir setzen mittlerweile auf Semantic Chunking. Dabei analysieren wir die Struktur des Dokuments (Absätze, Umbrüche), bevor wir schneiden. 

Ein Beispiel für einen Text-Splitter ist RecursiveCharacterTextSplitter aus Langchain. Je nach Content gibt es weitere wie z.B. CodeSplitter für die Verarbeitung von Quellcodes in verschiedenen Programmiersprachen oder SemanticChunker, welcher die Ähnlichkeit zwischen Sätzen anhand von Embeddings überprüft. Ändert sich das durch die Embeddings dargestellte Thema, wird ein neuer Chunk erzeugt. 

Zudem gibt es kostenpflichtige APIs, welche spezialisierte Splitter für diverse Anwendungsfälle bereitstellen. Als Beispiele seien hier LlamaIndex, Jina AI oder Unstructured genannt.

Aber der eigentliche Pro-Tipp, der die Qualität massiv gesteigert hat: Header-Enrichment.

Ein einzelner Absatz („Die Kündigungsfrist beträgt 3 Monate“) ist nutzlos, wenn man nicht weiß, worauf er sich bezieht. 

Um den Prozess zu optimieren, ist es daher möglich, jeden Chunk mit Metadaten anzureichern. Metadaten können z.B. die Sprache des Inhaltes, Stichwörter, Jahreszahlen, Kategorien, regionale Hinweise oder Informationen über die Autoren sein. Diese Metadaten werden dann bei einer Suche mit einbezogen. Vor allem bei sehr großen Datenmengen, die sich inhaltlich ähneln, macht die Anreicherung der Metadaten einen großen Unterschied in der Qualität der Ergebnisse.

Vor allem bei PDFs können zusätzliche Metadaten einen großen Unterschied machen, da das Konvertieren dieser Daten in strukturierte Text oft schwierig und das Lesen selbst mit spezialisierten Tools wie Kreuzberg, Docling oder Unstructured oft keine zufriedenstellenden Ergebnisse liefert.

Fazit
Gutes RAG beginnt nicht beim Prompting, sondern bei der Datenaufbereitung. Wer beim Chunking spart, zahlt später mit Halluzinationen.
Wie geht ihr mit langen Dokumenten um? Fixed, Semantic oder Recursive Retrieval?

#RAG #DataEngineering #LLM #LangChain #Wissensmanagement #TechDeepDive #Agenturleben