
In Teil 1 haben wir gesehen, wie entscheidend eine saubere Dokumentenaufbereitung und ein durchdachtes Chunking für die Qualität von Retrieval Augmented Generation sind. Diese Grundlagen bilden den Startpunkt für eine ganze Reihe weiterer Optimierungen, die den gesamten Prozess prägen. In Teil 2 setzen wir die Reihe fort und widmen uns den nächsten Bausteinen, die auf dieser Basis aufbauen und den Einsatz von RAG im Unternehmen weiterentwickeln.
Embedding
Domänenspezifische Embeddings
Domänenspezifische Embeddings bedeuten, dass Vektordarstellungen von Texten nicht mit allgemein trainierten Embeddingmodellen erzeugt werden, sondern mit Modellen, die auf die Fachsprache und Inhalte einer bestimmten Branche oder eines Unternehmens angepasst wurden. Allgemeine Modelle sind auf sehr große, unspezifische Textmengen trainiert, darunter Bücher, Webseiten, Wikipedia und weitere Quellen. Sie verstehen Alltagssprache und viele Standardkonzepte, verfehlen aber oft die Feinheiten in z.B. juristischen Verträgen, technischen Handbüchern oder medizinischen Befunden. Domänenspezifische Embeddings entstehen durch Feintuning eines vorhandenen Modells mit Daten aus der jeweiligen Fachdomäne oder durch Training eines eigenen Modells auf einem Korpus aus internen Dokumenten, Richtlinien, Protokollen und Handbüchern.
Ein Beispiel ist der medizinische Bereich. Wenn ein allgemeines Modell das Wort „Blutung“ verarbeitet, erkennt es nur die allgemeine Bedeutung. In medizinischen Dokumenten ist jedoch entscheidend, ob es sich um eine innere Blutung, eine postoperative Blutung handelt. Ein auf medizinische Texte feinjustiertes Embedding Modell bildet diese Unterschiede präzise im Vektorraum ab.
Ohne domänenspezifische Embeddings bleiben Fachbegriffe unscharf, Abkürzungen werden missverstanden und wichtige Zusammenhänge nicht erfasst. Das Retrieval findet dann zwar formal ähnliche Textstellen, verfehlt aber oft die inhaltlich relevanten Passagen. Die Antwortgenerierung verliert an Präzision, weil der semantische Raum die Fachsprache nicht richtig abbildet. Mit domänenspezifischen Embeddings dagegen wird das System belastbarer, die Trefferqualität steigt und Antworten können mit höherer Genauigkeit auf den tatsächlichen Kontext des Unternehmens eingehen.
Multilinguale Embeddings
Multilinguale Embeddings bedeuten, dass Texte in verschiedenen Sprachen in einen gemeinsamen Vektorraum abgebildet werden. Ein solches Modell versteht, dass ein deutscher, englischer oder französischer Satz mit gleichem Inhalt dieselbe semantische Bedeutung hat, auch wenn die Wörter und die Grammatik völlig unterschiedlich sind. Der Vorteil liegt darin, dass Nutzer unabhängig von ihrer Sprache suchen können und das System dennoch die passenden Dokumente findet. Gleichzeitig können Dokumente in mehreren Sprachen verarbeitet werden, ohne dass für jede Sprache ein eigenes Modell gepflegt werden muss.
Ein Beispiel ist ein international tätiges Unternehmen, das Handbücher auf Englisch, Protokolle auf Deutsch und Verträge auf Französisch speichert. Wenn ein Mitarbeiter auf Deutsch nach „Lieferverzug“ fragt, soll das System auch englische „delivery delay“ und französische „retard de livraison“ korrekt erkennen und zurückgeben. Multilinguale Embeddings stellen sicher, dass alle drei Varianten im Vektorraum nah beieinander liegen und damit als semantisch gleich behandelt werden.
Ohne diese Maßnahme entstehen Sprachinseln. Eine Suche deckt nur Dokumente in derselben Sprache ab, obwohl andere Sprachen dieselben Inhalte enthalten. Das Retrieval verpasst relevante Treffer, die Antwortgenerierung wirkt unvollständig und Nutzer verlieren Vertrauen in die Vollständigkeit des Systems. Mit multilingualen Embeddings dagegen wird Wissen sprachübergreifend verknüpft und allen Nutzern zugänglich, unabhängig davon, in welcher Sprache die Frage gestellt oder das Dokument abgelegt ist.
Dimensionale Reduktion
Dimensionale Reduktion bedeutet, die Anzahl der Dimensionen in Embeddings zu verringern, ohne den semantischen Kern der Information zu verlieren. Embedding Modelle erzeugen für jeden Textvektor typischerweise mehrere hundert bis tausend Dimensionen. Diese hohe Dimensionalität verbessert zwar die Ausdruckskraft, macht die Suche und die Speicherung jedoch aufwendig. Die Reduktion verringert die Größe der Vektoren, sodass sie in Vektordatenbanken schneller verglichen und mit weniger Speicherbedarf abgelegt werden können.
Ein Beispiel ist ein Embedding Modell mit 1024 Dimensionen, das alle Unternehmensdokumente abbildet. Wenn diese Vektoren vor dem Speichern auf 256 Dimensionen reduziert werden, sinkt der Speicherbedarf auf ein Viertel und die Ähnlichkeitssuche läuft deutlich schneller. Verfahren wie Principal Component Analysis (PCA) sorgen dafür, dass die wichtigsten Informationsachsen erhalten bleiben, während Rauschen oder wenig relevante Dimensionen entfernt werden.
Ohne diese Maßnahme steigen Latenz und Kosten mit der Größe des Index. Abfragen dauern länger, weil jeder Vergleich mehr Rechenoperationen benötigt, und die Datenbank skaliert schlechter, da unnötig viele Dimensionen gespeichert werden. Mit dimensionaler Reduktion bleiben die Embeddings handhabbar, Retrieval und Ranking werden effizienter und die Ergebnisse bleiben trotzdem präzise.
Embedding Normalisierung
Embedding Normalisierung bedeutet, dass Embedding Vektoren nach ihrer Berechnung auf eine einheitliche Länge gebracht werden, bevor sie in der Vektordatenbank gespeichert oder für das Retrieval genutzt werden. Sprachmodelle erzeugen Vektoren mit numerischen Werten über viele Dimensionen. Diese Vektoren können unterschiedlich lange sein, auch wenn ihre Bedeutung ähnlich ist. Die Länge ist dabei ein technisches Nebenprodukt der Berechnung.
Der Nutzen zeigt sich beim verwendeten Ähnlichkeitsmaß. Bei Cosine Similarity spielt nur der Winkel zwischen den Vektoren eine Rolle, nicht ihre Länge. Damit dieses Maß korrekt arbeitet, werden die Vektoren auf eine Einheitslänge normiert. Auch bei Distanzmaßen wie dem euklidischen Abstand verhindert die Normalisierung, dass zwei inhaltlich ähnliche Texte weit auseinanderliegen, nur weil ihre Embeddings unterschiedlich skaliert sind.
Ohne Normalisierung können die Ergebnisse des Retrievals verfälscht werden. Inhalte, die sich semantisch stark ähneln, erscheinen weiter voneinander entfernt als sie tatsächlich sind. Mit einer einheitlichen Normierung auf Einheitsvektoren bleibt die semantische Nähe erhalten und die Vergleiche werden stabil und zuverlässig.
Hybrid Embeddings (Text + Metadaten)
Hybrid Embeddings mit Text und Metadaten bedeuten, dass nicht nur der reine Dokumententext in einen Vektor überführt wird, sondern dass zusätzlich beschreibende Informationen einfließen. Metadaten sind zum Beispiel Dokumenttyp, Erstellungsdatum, Autor, Abteilung, Projektzuordnung, Sprache oder Sicherheitsstufe. Diese Angaben werden mit dem Text kombiniert und als gemeinsamer Vektor eingebettet. Ziel ist, dass sich nicht nur die inhaltliche Bedeutung, sondern auch die organisatorischen Merkmale im semantischen Raum widerspiegeln.
Technisch geschieht dies, indem Text und Metadaten zu einer einheitlichen Eingabe zusammengeführt werden.
„[Dokumenttyp: Richtlinie] [Gültig ab: 2024] Der eigentliche Text der Richtlinie…“
Der Metadatenanteil wird etwa als Präfix oder strukturierte Zusatzinformation in den Eingabetext eingefügt, bevor das Embedding Modell den Vektor berechnet. Alternativ können getrennte Vektoren für Text und Metadaten erzeugt und anschließend fusioniert werden, etwa durch Konkatenation oder gewichtetes Mittel.
Ohne Hybrid Embeddings bleiben Metadaten vom eigentlichen Vektorraum getrennt und können nur als zusätzliche Filter in der Datenbank genutzt werden. Dadurch muss jede Abfrage zweigleisig laufen, einmal über die semantische Ähnlichkeit der Texte und zusätzlich über Bedingungen wie Dokumenttyp oder Abteilung. Mit Hybrid Embeddings werden Textinhalte und Metadaten in einem gemeinsamen Vektor zusammengeführt. So entsteht eine einheitliche Repräsentation, die sowohl Bedeutung als auch Kontext trägt. Das Retrieval kann dadurch direkter und präziser arbeiten und die Ergebnisse passen nicht nur semantisch, sondern auch organisatorisch besse
Spezielle Embeddings für Tabellen und Code
Spezielle Embeddings für Tabellen und Code bedeuten, dass für diese Inhalte nicht dieselben Modelle wie für normalen Fließtext verwendet werden, sondern speziell trainierte Modelle, die die jeweilige Struktur erfassen können. Tabellen bestehen aus Zellen, die in Zeilen und Spalten angeordnet sind, und ihre Bedeutung ergibt sich aus der Beziehung zwischen Kopfzeilen, Werten und Einheiten. Ein allgemeines Sprachmodell interpretiert eine Tabelle lediglich als eine Abfolge von Wörtern und Zahlen. Ein tabellenspezifisches Embedding dagegen erkennt, dass eine Zahl in einer bestimmten Spalte zu einer Überschrift gehört und dadurch inhaltlich als Kennzahl verstanden werden kann. Dadurch werden Abfragen wie Umsatz pro Quartal oder durchschnittliche Laufzeit korrekt beantwortet, weil die Vektorrepräsentation diese Zusammenhänge abbildet.
Bei Quellcode gilt ein ähnliches Prinzip. Normale Sprachmodelle verarbeiten Code wie beliebigen Text und sehen Variablen, Klammern und Schlüsselwörter nur als Zeichenketten. Codespezifische Embeddings berücksichtigen dagegen die Syntax, die Hierarchie der Funktionsaufrufe und die Abhängigkeiten zwischen Variablen und Modulen. Das ermöglicht es, gezielt nach Funktionsdefinitionen, Parametern oder genutzten Bibliotheken zu suchen und Antworten zu generieren, die den logischen Aufbau des Codes widerspiegeln.
Ein wichtiger Aspekt dabei ist, dass Embeddings aus verschiedenen Modellen nicht direkt miteinander vergleichbar sind. Jeder Vektorraum hat seine eigene Geometrie, sodass eine Cosine Similarity nur innerhalb eines Modells zuverlässig funktioniert. Um diese Schwierigkeit zu umgehen, gibt es mehrere Ansätze. Entweder nutzt man ein einheitliches Modell, das sowohl Text als auch Tabellen und Code verarbeitet, oder man trennt die Inhalte in verschiedene Indizes und führt die Ergebnisse erst nach dem Retrieval zusammen. Alternativ lassen sich Embedding-Räume über zusätzliche Mapping-Modelle oder Adapter aufeinander abbilden, damit sie in einem gemeinsamen Raum vergleichbar werden. Ohne eine dieser Maßnahmen wären die Vektoren aus unterschiedlichen Modellen unvereinbar und das Retrieval würde zufällige oder irrelevante Treffer liefern.
Ohne spezielle Embeddings für Tabellen und Code gehen die zugrunde liegenden Strukturen verloren. Das Retrieval liefert dann unscharfe Treffer, weil Zahlen oder Funktionsnamen ohne ihren Bezug zum Kontext verarbeitet werden. Antworten wirken unpräzise, verweisen auf falsche Werte oder geben unvollständige Codefragmente zurück. Mit spezialisierten Embeddings bleiben Struktur und Logik erhalten, und mit einem konsistenten Umgang mit den verschiedenen Vektorräumen können diese Inhalte zuverlässig gesucht und für belastbare Antworten genutzt werden.
Evaluation und Feintuning der Embeddings
Evaluation und Feintuning der Embeddings bedeutet, die Qualität der erzeugten Vektoren regelmäßig zu überprüfen und sie bei Bedarf an die Anforderungen der eigenen Domäne anzupassen. Embeddings sind die Grundlage des Retrievals, sie bestimmen, welche Chunks als ähnlich gelten und welche nicht. Wenn die Vektoren nicht zuverlässig die semantischen Beziehungen im Unternehmenskontext abbilden, entstehen falsche Treffer und unpräzise Antworten.
Die Evaluation erfolgt über Testdatensätze mit bekannten Paaren von Fragen und relevanten Dokumenten. Typische Metriken sind Recall at K oder MRR. So lässt sich messen, ob relevante Inhalte tatsächlich in den obersten Treffern erscheinen. Zusätzlich werden qualitative Tests mit Fachanwendern durchgeführt, die bewerten, ob die Ergebnisse ihrem Informationsbedarf entsprechen.
Feintuning schließt an die Evaluation an. Dabei wird ein bestehendes Embedding Modell mit zusätzlichen Beispielen aus der eigenen Domäne nachtrainiert. Dadurch lernt es, Begriffe, Abkürzungen oder Zusammenhänge zu berücksichtigen, die in allgemeinen Trainingsdaten nicht vorkommen. In der Medizin könnten das etwa spezifische Diagnosen sein, in der Finanzbranche Fachbegriffe aus Verträgen und Bilanzen.
Ohne Evaluation und Feintuning bleibt unklar, ob die Embeddings im jeweiligen Fachkontext wirklich tragen. Ein Modell, das in allgemeinen Benchmarks gute Werte zeigt, kann in einem Unternehmen trotzdem schwache Ergebnisse liefern, weil branchenspezifische Konzepte nicht erfasst werden. Das Retrieval zeigt dann irrelevante Treffer, wichtige Dokumente rutschen nach unten und die Antwortgenerierung stützt sich auf unpassende Grundlagen. Mit regelmäßiger Evaluation und gezieltem Feintuning lässt sich die Treffergenauigkeit systematisch verbessern und die Zuverlässigkeit des gesamten RAG-Systems absichern.
Pooling Strategie dokumentieren
Pooling Strategie dokumentieren bedeutet, klar festzuhalten, wie die Repräsentation eines Textes aus den Token Embeddings des Modells gebildet wird. Gängige Verfahren sind das Verwenden des CLS Tokens oder das Mittelwert Pooling über alle Token. Die Wahl dieser Methode hat direkte Auswirkungen auf die entstehenden Vektoren, da sie bestimmt, welche Informationsebene das Embedding stärker abbildet.
Werden diese Unterschiede nicht dokumentiert, entstehen Inkonsistenzen, sobald verschiedene Teams oder Pipelines unterschiedliche Strategien nutzen. In großen Unternehmen mit mehreren Fachbereichen entwickeln oft verschiedene Teams eigene RAG Strecken, teilweise mit unterschiedlichen Frameworks oder Modellversionen. Wenn ein Team CLS Pooling einsetzt und ein anderes Mean Pooling, entstehen zwar jeweils gültige Embeddings, sie sind aber nicht mehr direkt vergleichbar. Das führt dazu, dass Benchmarks ihre Aussagekraft verlieren, gemeinsame Indizes uneinheitliche Daten enthalten und Retrieval Ergebnisse je nach Quelle variieren.
Auch beim Wechsel einer Modellversion kann sich die Standardeinstellung für Pooling ändern. Ohne Dokumentation fällt dies oft nicht auf, die Vektoren verändern sich jedoch subtil und erzeugen Brüche in der Repräsentation.
Mit einer klar dokumentierten und verbindlich vorgegebenen Pooling Strategie bleiben Embeddings konsistent, nachvollziehbar und reproduzierbar. Benchmarks sind belastbar, Vergleiche zwischen Teams möglich und das Retrieval liefert stabile Ergebnisse unabhängig davon, in welcher Pipeline ein Dokument eingebettet wurde.
Out of Distribution Erkennung für Eingaben, die außerhalb des Trainingsbereichs liegen
Out of Distribution Erkennung für Eingaben, die außerhalb des Trainingsbereichs liegen bedeutet, dass das System überprüft, ob ein Text oder Chunk überhaupt in den Bereich fällt, den das Embedding Modell während des Trainings abgedeckt hat. Embedding Modelle sind immer auf bestimmten Datensätzen trainiert, zum Beispiel Nachrichten, Wikipedia Artikel oder technische Dokumentationen. Inhalte, die stark davon abweichen, wie juristische Klauseln, medizinische Diagnosen oder interne Fachabkürzungen, können vom Modell zwar verarbeitet werden, die resultierenden Vektoren bilden aber nicht unbedingt die semantische Bedeutung korrekt ab.
Technisch geschieht die Erkennung über Methoden wie Distanzmessungen im Vektorraum, Unsicherheitsmetriken oder zusätzliche Klassifikatoren, die speziell auf OOD Erkennung trainiert wurden. Wenn ein Chunk sehr weit von allen bekannten Trainingsvektoren entfernt liegt, deutet das darauf hin, dass das Modell keine zuverlässige Repräsentation liefern kann.
Ein Beispiel ist ein Embedding Modell, das auf Alltagsenglisch trainiert wurde und plötzlich chemische Strukturformeln oder juristische Paragraphen verarbeiten soll. Die Vektoren für diese Inhalte landen in Bereichen des Vektorraums, die während des Trainings nie vorkamen. Das Retrieval kann dann falsche Nachbarn auswählen, weil die Abstände keine echte semantische Nähe widerspiegeln.
Zur Erkennung von Out of Distribution Eingaben bei Embeddings gibt es drei etablierte Ansätze. Distanzbasierte Verfahren prüfen, wie weit ein neuer Vektor von bekannten Trainings- oder Referenzvektoren entfernt liegt. Liegt der Abstand zum nächsten Nachbarn oder zu mehreren Nachbarn deutlich über dem üblichen Bereich, gilt die Eingabe als verdächtig. Dichte- oder Wahrscheinlichkeitsbasierte Verfahren modellieren die Verteilung der Trainingsvektoren und bewerten, ob eine neue Eingabe mit hoher Wahrscheinlichkeit aus derselben Verteilung stammt. Hierbei kommen Methoden wie Gaussian Mixture Models, Kernel Density Estimation oder Likelihood Scores zum Einsatz. Eine dritte Möglichkeit sind Klassifikatoren, die gezielt für OOD Detection trainiert wurden. Sie unterscheiden zwischen in-distribution und out-of-distribution, indem sie mit Negativbeispielen aus fremden Domänen lernen und Unsicherheiten über Verfahren wie Softmax-Entropie oder Monte Carlo Dropout messen. Diese drei Ansätze können einzeln oder kombiniert eingesetzt werden, um problematische Eingaben zuverlässig zu erkennen.
Ohne Out of Distribution Erkennung werden solche problematischen Embeddings in den Index übernommen. Das führt zu unpräzisem Retrieval, unpassenden Antworten und im schlimmsten Fall zu Fehlinformationen. Mit einer konsequenten OOD Kontrolle kann das System diese Chunks entweder kennzeichnen, gezielt mit spezialisierten Modellen nachbearbeiten oder von der Einbettung ausschließen. Damit bleibt die Qualität der Vektordatenbank hoch und das RAG System liefert verlässlichere Ergebnisse.
Sprach und Format Normalisierung Zahlen, Datumsangaben, Einheiten
Sprach und Format Normalisierung von Zahlen, Datumsangaben und Einheiten bedeutet, dass diese Angaben vor der Einbettung in eine konsistente und vergleichbare Form gebracht werden. Der Hintergrund ist, dass identische Inhalte sehr unterschiedlich notiert werden können, zum Beispiel 1.000 € versus EUR 1000, 12.03.2025 versus 2025-03-12 oder „5 kg“ versus „5 Kilogramm“. Für ein Sprachmodell sind diese Schreibweisen zunächst verschiedene Zeichenfolgen, auch wenn sie inhaltlich dasselbe bedeuten. Durch Normalisierung werden sie in ein einheitliches Format überführt, sodass Embeddings die semantische Gleichheit korrekt abbilden können.
Technisch geschieht dies über Parser und Umwandlungsregeln, die Zahlenformate, Währungen, Maßeinheiten und Datumsangaben erkennen und in standardisierte Darstellungen konvertieren. So kann zum Beispiel das ISO-Format für Datumsangaben oder das SI-System für Einheiten als Ziel gewählt werden. Die Normalisierung unterscheidet sich klar von Named Entity Recognition, da es nicht um die Identifikation einer Entität geht, sondern um die Vereinheitlichung der Darstellung bereits erkannter Werte.
Ohne diese Maßnahme entstehen fehlerhafte oder verzerrte Embeddings. Das Retrieval behandelt semantisch gleiche Angaben als unterschiedliche Werte, Abfragen wie „alle Rechnungen aus März 2025“ verfehlen Treffer, wenn Datumsangaben nicht vereinheitlicht wurden. Auch in der Antwortgenerierung kann es zu widersprüchlichen Zitaten kommen, weil ein Dokument „3/12/2025“ schreibt, ein anderes „12.03.2025“. Mit konsistenter Normalisierung bleiben Bedeutungen klar erkennbar und die Ergebnisse präzise und belastbar.
Vektor Indexierung und Speicherung
Nach dem Embedding werden Chunks in einer Vektordatenbank abgelegt und indiziert. Die Wahl des Index und seiner Parameter beeinflusst Qualität und Latenz des Retrievals.
Ein Index ist eine Datenstruktur, die den Zugriff auf Daten beschleunigt, ähnlich wie das Inhaltsverzeichnis in einem Buch. Indizieren bedeutet, dass neue Vektoren beim Einfügen so einsortiert werden, dass sie später schneller gefunden werden.
In einer Vektordatenbank passiert das so: Jeder Chunk eines Dokuments wird in einen Vektor umgewandelt. Statt diese Vektoren einfach nur als lange Liste abzuspeichern, werden sie in einem Index organisiert. Ein Beispiel ist der IVF Index (Inverted File Index). Er bildet Cluster, also Gruppen von ähnlichen Vektoren. Wenn später eine Suchanfrage gestellt wird, durchsucht das System nur die relevanten Cluster, nicht alle Daten. Ein anderes Beispiel ist HNSW (Hierarchical Navigable Small World Graph). Dabei werden die Vektoren als Knoten in einem Netzwerk verbunden. Die Suche läuft dann durch dieses Netzwerk wie durch ein Straßennetz, wobei man von einem Vektor zum nächsten „springt“, bis man die ähnlichsten gefunden hat.
Ohne Indexierung müsste das System jede Suchanfrage mit allen gespeicherten Vektoren vergleichen. Bei einigen tausend Einträgen wäre das noch machbar, bei Millionen oder gar Milliarden aber praktisch unmöglich. Ein RAG System würde dann Minuten statt Millisekunden brauchen, um eine Antwort zu liefern. Der Index macht den Unterschied zwischen einem theoretisch richtigen, aber unbenutzbaren System und einer schnellen, produktiv einsetzbaren Lösung.
Indexart passend zum Suchprofil wählen
Indexart passend zum Suchprofil wählen bedeutet, dass die Art des Vektorindex so gewählt wird, dass sie zu den Anforderungen des Systems an Genauigkeit, Geschwindigkeit und Datenvolumen passt. Unterschiedliche Indexarten haben unterschiedliche Stärken. Ein Hierarchical Navigable Small World (HNSW) Index bietet zum Beispiel sehr schnelle und präzise Abfragen, benötigt aber viel Speicher. Ein IVF Index (Inverted File Index) ist speichereffizienter und eignet sich besonders für sehr große Datenmengen, arbeitet jedoch mit approximativen Verfahren, die bei falscher Konfiguration Treffer übersehen können.
Das Suchprofil beschreibt, welche Anforderungen das RAG System an das Retrieval stellt. Ein System, das häufig kleine Datenbestände mit hoher Präzision durchsucht, profitiert eher von HNSW. Ein System, das Milliarden von Vektoren indexieren muss, benötigt dagegen skalierbare Verfahren wie IVF oder hybride Varianten mit Quantisierung. Auch Faktoren wie Abfragehäufigkeit, Antwortlatenz und verfügbare Hardware spielen eine Rolle.
Ohne die Wahl einer passenden Indexart entstehen systematische Probleme. Ein zu komplexer Index verlangsamt Abfragen und verursacht unnötig hohe Speicher- und Betriebskosten. Ein zu grob vereinfachender Index verliert relevante Treffer, sodass die Antwortgenerierung auf falschen oder unvollständigen Informationen basiert. Die Auswahl der Indexart ist daher ein Grundpfeiler für die Balance zwischen Effizienz, Genauigkeit und Kosten im RAG System.
HNSW Parameter systematisch abstimmen
HNSW Parameter systematisch abstimmen bedeutet, die Stellschrauben des HNSW Index gezielt so einzustellen, dass eine gute Balance zwischen Suchgeschwindigkeit, Genauigkeit und Speicherverbrauch erreicht wird. HNSW steht für Hierarchical Navigable Small World Graph und ist einer der am häufigsten genutzten Algorithmen für Annäherungssuche in Vektorräumen. Er baut ein mehrschichtiges Netzwerk aus Vektoren auf, in dem jeder Vektor mit seinen Nachbarn verbunden ist. Die Suche läuft wie eine Navigation durch dieses Netzwerk: man startet grob und bewegt sich dann schrittweise zu den nächstgelegenen Nachbarn, bis die besten Treffer gefunden sind.
Wichtige Parameter sind M, das die maximale Zahl an Verbindungen pro Knoten steuert, und efSearch, das die Anzahl der Kandidaten festlegt, die bei einer Suche betrachtet werden. Ein hohes M bedeutet mehr Verbindungen und damit bessere Genauigkeit, kostet aber mehr Speicher und verlängert den Indexaufbau. Ein hohes efSearch erhöht die Wahrscheinlichkeit, die besten Nachbarn zu finden, macht die Suche aber langsamer. efConstruction ist ein weiterer Parameter, der beim Aufbau des Index bestimmt, wie sorgfältig Nachbarn ausgewählt werden. Ein höherer Wert verbessert die Qualität des Index, verlängert aber den Aufbau.
IVF Parameter kalibrieren
Ein Inverted File Index, kurz IVF, ist eine Methode, um in sehr großen Vektordatenbanken schneller suchen zu können. Die Grundidee ist, dass nicht alle Vektoren einzeln miteinander verglichen werden, sondern dass die Daten zuerst in Gruppen, sogenannte Cluster, aufgeteilt werden. Jeder Vektor gehört zu genau einem Cluster, und diese Cluster haben eine Art Mittelpunkt. Wenn eine Suchanfrage kommt, wird zuerst geschaut, welche Cluster dem Anfragevektor am ähnlichsten sind, und nur in diesen Clustern wird weitergesucht. Dadurch wird die Suche deutlich schneller, weil nicht mehr alle Vektoren geprüft werden müssen.
Die Kalibrierung der IVF Parameter bedeutet, dass man sorgfältig festlegt, wie viele Cluster es geben soll und wie tief innerhalb dieser Cluster gesucht wird. Sind es zu wenige Cluster, sammeln sich sehr viele Vektoren in jedem Cluster und die Suche wird ungenau, weil zu viel zusammengeworfen wird. Gibt es zu viele Cluster, muss die Anfrage sehr viele Gruppen durchsuchen, was die Suche langsamer und speicherintensiver macht.
Ein Beispiel ist eine Datenbank mit 500 Millionen Dokumenten. Wenn man nur 1.000 Cluster anlegt, landen im Schnitt 500.000 Vektoren in jedem Cluster, und die Suche verliert Präzision. Wenn man dagegen 10 Millionen Cluster anlegt, sind die Gruppen zwar klein, aber das System braucht sehr lange, um sie zu verwalten und bei jeder Anfrage genug relevante Cluster zu prüfen. Ein Mittelweg, etwa 100.000 Cluster mit einer gut gewählten Suchstrategie, sorgt dafür, dass die Suche gleichzeitig schnell und präzise bleibt.
Ohne eine solche Kalibrierung arbeitet der IVF Index entweder zu grob oder zu aufwendig. Das führt zu fehlenden Treffern oder zu langen Antwortzeiten. Für große RAG Systeme ist eine sorgfältige Abstimmung daher entscheidend, damit die Vektorsuche zuverlässig und effizient funktioniert.
Quantisierung und Kompression sinnvoll einsetzen
Quantisierung und Kompression sinnvoll einsetzen bedeutet, Vektoren platzsparend abzulegen, ohne dass die Suchqualität dabei unnötig stark leidet. Embeddings bestehen oft aus hunderten oder tausenden Fließkommazahlen mit hoher Genauigkeit. Diese Genauigkeit ist für die semantische Suche aber meist nicht vollständig nötig. Stattdessen können die Werte reduziert oder verdichtet werden, sodass weniger Speicher verbraucht wird und Abfragen schneller laufen.
Ein häufig genutztes Verfahren ist die Produktquantisierung (PQ). Dabei wird der Vektor in kleinere Teile zerlegt und jedes Teilstück durch einen kompakten Code aus einem Wörterbuch repräsentiert. So sinkt der Speicherbedarf drastisch, gleichzeitig bleibt die semantische Nähe im Vektorraum weitgehend erhalten. Eine Variante davon ist Optimized Product Quantization (OPQ), bei der die Vektoren vorher durch eine Rotation besser auf die Teilstücke verteilt werden, was die Genauigkeit verbessert.
Ein Beispiel: Eine Datenbank mit 500 Millionen Vektoren in 768 Dimensionen würde im Rohformat viele Terabyte Speicher belegen. Mit Produktquantisierung kann derselbe Bestand auf einen Bruchteil schrumpfen, oft um mehr als 90 Prozent, ohne dass die Trefferqualität unbrauchbar wird. So lassen sich selbst extrem große Wissensbasen noch performant durchsuchen.
Ohne Quantisierung und Kompression stoßen RAG Systeme schnell an technische Grenzen. Speicherbedarf und Kosten steigen massiv, Backups werden unhandlich und Abfragen dauern zu lange. Mit einer passenden Kompressionsstrategie können große Vektormengen effizient verwaltet werden, wobei Genauigkeit und Effizienz in ein sinnvolles Verhältnis gebracht werden.
Filterfreundliche Payload Indizes pflegen
Filterfreundliche Payload Indizes pflegen bedeutet, dass nicht nur die Vektoren selbst gespeichert werden, sondern auch zusätzliche Metadaten so organisiert werden, dass sie schnell und zuverlässig für Filter genutzt werden können. In der Praxis reicht es selten aus, nur semantisch ähnliche Chunks über Vektorsuche zu finden. Meist müssen Ergebnisse zusätzlich nach Attributen eingegrenzt werden, zum Beispiel nach Abteilung, Dokumenttyp, Veröffentlichungsdatum oder Berechtigungsstufe. Damit das performant funktioniert, braucht die Vektordatenbank eigene Strukturen, die solche Filter mit möglichst wenig Rechenaufwand unterstützen.
Ein Beispiel: Ein Unternehmen möchte Antworten nur aus Dokumenten einer bestimmten Fachabteilung erhalten, etwa Rechnungswesen. In der Vektordatenbank sind die Chunks aller Abteilungen enthalten, aber jeder Chunk trägt ein Metadatum „Abteilung“. Ein filterfreundlicher Payload Index sorgt dafür, dass diese Information direkt beim Index abgelegt und für jede Abfrage effizient berücksichtigt wird. Ohne solche Indizes müsste das System zuerst alle Treffer aus der Vektorsuche laden und dann nachträglich aussortieren, was Speicher und Zeit stark belastet.
Ohne filterfreundliche Payload Indizes geraten Abfragen bei wachsenden Datenmengen ins Stocken. Nutzer bekommen irrelevante Treffer aus anderen Bereichen angezeigt oder müssen lange auf Antworten warten, weil die Filterung erst spät erfolgt. Mit einem sauber gepflegten Payload Index lassen sich Attribute schon beim Retrieval berücksichtigen, die Treffermenge wird schlanker, die Qualität steigt und die Antwortgenerierung arbeitet auf einer viel gezielteren Basis.
Vorfilterung vor ANN konsequent erzwingen
Vorfilterung vor Approximate Nearest Neighbor (ANN) konsequent erzwingen bedeutet, dass Einschränkungen wie Dokumenttyp, Sprache, Projektbezug oder Zugriffsrechte bereits angewendet werden, bevor die eigentliche Vektorsuche mit ANN Verfahren startet. Approximate Nearest Neighbor ist sehr effizient darin, aus Millionen von Vektoren die ähnlichsten zu finden, wird aber umso langsamer und unpräziser, je größer die zu durchsuchende Menge ist. Deshalb ist es entscheidend, die Kandidatenmenge von Anfang an auf die wirklich relevanten Vektoren zu begrenzen.
Ein Beispiel: Ein Unternehmen speichert Verträge, Support Tickets und Handbücher gemeinsam in einer Vektordatenbank. Ein Nutzer sucht nach Informationen zu einem Produktfehler, die nur in den Support Tickets enthalten sind. Wird die Vorfilterung konsequent vor der ANN Suche angewendet, durchsucht das System ausschließlich die Vektoren mit Metadatum „Dokumenttyp = Support Ticket“. Ohne diese Maßnahme würde die ANN Suche über den gesamten Korpus laufen und erst nachträglich aussortieren. Das führt zu höherem Rechenaufwand, längerer Antwortzeit und der Gefahr, dass irrelevante Treffer wie Vertragsklauseln in der Kandidatenliste auftauchen.
Ohne konsequente Vorfilterung entstehen unnötige Kosten, das System verliert Geschwindigkeit und Nutzer riskieren den Zugriff auf unpassende Informationen. Mit sauber umgesetzter Vorfilterung bleiben die Abfragen schlank, die Trefferqualität steigt und Vorgaben zur Relevanz und Compliance werden zuverlässig eingehalten.
Sharding und Replikation sauber gestalten
Das Ausgangsproblem bei Vektordatenbanken ist, dass ein einzelner Server bei wachsender Datenmenge und Nutzung schnell an physische und technische Grenzen stößt. Mit Millionen oder gar Milliarden von Embeddings reicht der Arbeitsspeicher nicht mehr aus, Indexstrukturen wie HNSW oder IVF werden zu groß für eine einzelne Maschine und parallele Anfragen verursachen Engpässe bei CPU und I/O. Zusätzlich entsteht ein Verfügbarkeitsproblem: Fällt der einzige Server aus, ist die gesamte Vektorsuche nicht mehr nutzbar.
Sharding löst dieses Problem, indem der gesamte Datenbestand in Teilmengen zerlegt wird. Jede Teilmenge enthält einen Teil der Embeddings und wird auf einem eigenen Server oder Clusterknoten gespeichert. Kein Server muss mehr den kompletten Index halten, Speicher- und Rechenlast werden auf viele Knoten verteilt. Eine Suchanfrage muss allerdings über alle relevanten Shards laufen, da sich die ähnlichsten Vektoren theoretisch in jedem Shard befinden können. Die Teilergebnisse werden anschließend zusammengeführt. Das bedeutet auch, dass ein Ausfall einzelner Shards ohne Replikation zu Qualitätsverlusten führt, weil die dort gespeicherten Embeddings bei der Suche fehlen.
Replikation ergänzt Sharding, indem jede Teilmenge zusätzlich auf mehreren Servern vorliegt. Das bedeutet, dass es für jeden Shard mindestens eine Kopie gibt. Diese Redundanz hat zwei Vorteile. Erstens bleibt die Datenbasis vollständig erhalten, selbst wenn ein Server oder Shard ausfällt, weil eine Kopie einspringen kann. Zweitens lassen sich parallele Leseanfragen auf die Replikate verteilen, was die Leistung bei hoher Last steigert. Damit wird verhindert, dass ein Ausfall einzelner Shards direkt zu unvollständigen oder fehlerhaften Suchergebnissen führt.
Der Unterschied ist also klar: Sharding verteilt, Replikation dupliziert. Beides zusammen ergibt ein skalierbares und fehlertolerantes System.
Der Vergleich mit RAID bei Festplatten macht das anschaulich. Sharding entspricht einer Art „Datenstreifenbildung“ wie bei RAID 0, wo Daten in Blöcke zerlegt und auf mehrere Platten verteilt werden, um mehr Geschwindigkeit zu erreichen. Replikation ähnelt dagegen RAID 1, wo jede Platte eine exakte Kopie der anderen hält, um Ausfallsicherheit zu gewährleisten. In Vektordatenbanken wird oft beides kombiniert, um sowohl große Datenmengen effizient zu verwalten als auch hohe Verfügbarkeit zu sichern.
Ohne Sharding und Replikation stößt eine Vektordatenbank bei großen Projekten sehr schnell an Skalierungs- und Verfügbarkeitsgrenzen. Mit beiden Konzepten bleibt sie auch bei Milliarden von Vektoren leistungsfähig, fehlertolerant und konsistent, ohne dass einzelne Ausfälle sofort zu Qualitätsverlusten führen.
Konsistenz und Lese Isolation definieren
Konsistenz und Lese Isolation definieren bedeutet, in einem verteilten Vektordatenbanksystem festzulege, wie Abfragen und Aktualisierungen miteinander interagieren und welchen Datenstand Nutzer bei einer Suche garantiert sehen. Da Embeddings über mehrere Shards und Replikate verteilt werden, können neue Einträge oder Änderungen zeitversetzt auf den einzelnen Servern ankommen. Konsistenz beschreibt, ob eine Abfrage überall denselben Datenstand liefern muss oder ob zeitweise Abweichungen erlaubt sind. Strenge Konsistenz garantiert, dass nach einem Update sofort alle Knoten denselben Stand haben, während bei eventueller Konsistenz vorübergehend Unterschiede zwischen den Replikaten bestehen können.
Lese Isolation bezieht sich darauf, ob Abfragen während eines laufenden Schreibvorgangs Zwischenergebnisse sehen dürfen. Bei niedriger Isolation kann eine Suche auf Daten zugreifen, die gerade geändert werden und noch nicht vollständig stabil sind. Hohe Isolation stellt sicher, dass Abfragen entweder den alten oder den neuen Zustand erhalten, aber niemals eine Mischung.
Ohne definierte Regeln für Konsistenz und Isolation liefert die Vektorsuche widersprüchliche Treffer. Nutzer erhalten bei identischen Anfragen unterschiedliche Ergebnisse, die Antwortgenerierung basiert auf unvollständigen Daten und Nachweise in Audits werden unsicher. Klare Vorgaben sichern dagegen Vorhersagbarkeit, Nachvollziehbarkeit und Vertrauen in das System.
Inkrementelles Index Update
Inkrementelles Index Update bedeutet, dass neue oder geänderte Embeddings nicht den kompletten Vektorindex neu aufbauen, sondern gezielt in den bestehenden Index eingefügt oder dort ersetzt werden. Bei großen Datenmengen ist ein vollständiger Neuaufbau extrem rechenintensiv und dauert oft Stunden oder Tage. Ein inkrementelles Verfahren aktualisiert dagegen nur die betroffenen Bereiche des Index, während der Rest unverändert bleibt und sofort weiter nutzbar ist.
Der Ablauf funktioniert so: Sobald ein neues Dokument verarbeitet und eingebettet wird, wird sein Vektor an der passenden Stelle in den Index eingefügt. Wenn ein Dokument ersetzt oder gelöscht wird, werden die betroffenen Vektoren ebenfalls markiert oder entfernt. Techniken wie Hintergrundprozesse oder Delta-Indizes stellen sicher, dass diese Änderungen kontinuierlich eingespielt werden, ohne den Betrieb der Vektorsuche zu unterbrechen.
Ohne inkrementelles Index Update müsste der Index regelmäßig komplett neu aufgebaut werden. Das führt zu langen Ausfallzeiten, veralteten Suchergebnissen und hohen Betriebskosten. Mit inkrementellen Updates bleibt der Index aktuell, die Vektorsuche leistungsfähig und das System kann auch bei kontinuierlich wachsenden Datenmengen stabil betrieben werden.
Ergebnis und Zentroid Caches nutzen
Ergebnis und Zentroid Caches nutzen bedeutet, Berechnungen zwischenzuspeichern, die bei der Vektorsuche besonders häufig wiederholt auftreten. So lassen sich Abfragen beschleunigen, ohne die Qualität der Ergebnisse zu verändern. Dabei gibt es zwei Ebenen, auf denen Zwischenergebnisse nützlich sind.
Auf der ersten Ebene betrifft es komplette Suchanfragen. Wenn viele Nutzer dieselbe oder eine sehr ähnliche Frage stellen, entstehen identische oder nahezu identische Trefferlisten. Ein Beispiel ist ein internes Supportportal, in dem Mitarbeiter regelmäßig nach „VPN Anleitung“ suchen. Ohne Cache wird die Nachbarschaftssuche bei jeder Anfrage neu durchgeführt, obwohl immer dieselben fünf Dokumente gefunden werden. Mit einem Ergebnis Cache wird diese Trefferliste beim ersten Mal berechnet und danach direkt wiederverwendet.
Auf der zweiten Ebene betrifft es interne Berechnungsschritte innerhalb des Index. Bei Indexarten wie IVF müssen Abfragen zunächst den nächstgelegenen Clusterzentren (Zentroiden) zugeordnet werden, bevor die Feinsuche innerhalb der Cluster startet. Diese Distanzberechnungen zu den Zentroiden wiederholen sich bei vielen ähnlichen Abfragen. Mit einem Cache können die Distanzwerte oder die Auswahl der Cluster sofort abgerufen werden, anstatt sie jedes Mal neu zu berechnen.
Ohne diese Caches muss das System selbst triviale Abfragen oder interne Schritte immer wieder vollständig ausführen. Das führt zu unnötiger Latenz und steigender Last bei hohem Anfragevolumen. Mit durchdachtem Caching lassen sich signifikante Leistungsgewinne erzielen, insbesondere in Szenarien mit häufig wiederkehrenden Abfragen oder thematisch konzentrierten Suchen.
Speicherlayout optimieren
Speicherlayout optimieren bedeutet, die Art und Weise zu gestalten, wie Embeddings und Indexstrukturen physisch im Speicher abgelegt werden. Ziel ist es, dass Suchoperationen möglichst schnell und ressourcenschonend ablaufen. In Vektordatenbanken hängt die Leistung stark davon ab, wie Daten im Arbeitsspeicher oder auf der Festplatte organisiert sind.
Ein zentrales Konzept ist die Frage, ob Daten zeilenweise oder spaltenweise gespeichert werden. Werden Embeddings zeilenweise gespeichert, enthält jede Zeile den vollständigen Vektor. Das beschleunigt die Berechnung von Abständen, weil alle Werte eines Vektors zusammenhängend im Speicher liegen und in einem einzigen Zugriff geladen werden können. Spaltenweise Speicherung kann dagegen vorteilhaft sein, wenn nur bestimmte Dimensionen benötigt oder komprimiert werden sollen.
Auch die Ausrichtung der Daten im Speicher spielt eine Rolle. Prozessoren und GPUs laden Daten nicht Byte für Byte, sondern in Blöcken fester Größe, zum Beispiel 64 Bit bei CPUs oder 256 Bit bei GPUs. Wenn ein Vektor nicht genau an einer solchen Grenze beginnt, muss die Hardware mehrere Speicherblöcke laden und zusammensetzen, obwohl der Inhalt eigentlich in einem Block passen würde. Das nennt man Speicheralignment. Vektoren, die exakt auf diesen Grenzen beginnen, können in einem einzigen Zugriff geladen und dadurch deutlich schneller verarbeitet werden. Zusätzlich werden Techniken wie Memory Mapping genutzt, bei denen große Indexstrukturen direkt in den Speicher eingeblendet werden, ohne dass sie komplett kopiert werden müssen.
Ohne eine Optimierung des Speicherlayouts entstehen unnötige Flaschenhälse. Abfragen dauern länger, weil Speicherzugriffe fragmentiert sind, und die Hardware wird schlechter ausgelastet. Mit einem optimierten Layout steigt die Geschwindigkeit der Vektorsuche deutlich, und selbst sehr große Datenbestände können effizient verarbeitet werden.
Datenlebenszyklus im Index steuern
Datenlebenszyklus im Index steuern bedeutet, dass Einträge in einer Vektordatenbank nicht statisch für immer bestehen bleiben, sondern einem klar definierten Lebenszyklus folgen. Embeddings repräsentieren immer den Stand des Wissens zum Zeitpunkt der Erzeugung. Ändern sich Dokumente, werden korrigiert oder verfallen, dann müssen die zugehörigen Vektoren aktualisiert oder entfernt werden. Sonst bleibt im Index veraltetes oder sogar falsches Wissen, das später beim Retrieval zu unpassenden Treffern führt.
Technisch wird der Lebenszyklus über Metadaten gesteuert. Jeder Vektor erhält Attribute wie Erstellungsdatum, Versionsnummer, Gültigkeitszeitraum oder Verfallsdatum. Eine Aktualisierung ersetzt alte Embeddings durch neue, wenn sich das Quelldokument geändert hat. Veraltete Chunks können automatisiert archiviert oder gelöscht werden. Auch Löschpflichten nach gesetzlichen Vorgaben, etwa DSGVO, werden über diese Steuerung umgesetzt.
Ohne Steuerung des Datenlebenszyklus wächst der Index unkontrolliert, Retrieval-Qualität verschlechtert sich durch widersprüchliche oder veraltete Treffer und Compliance-Risiken entstehen, weil gelöschte oder abgelaufene Inhalte weiterhin auffindbar bleiben. Ein aktives Lebenszyklusmanagement stellt sicher, dass nur aktuelle, konsistente und gültige Inhalte im Index stehen und verbessert damit die Präzision und Vertrauenswürdigkeit des gesamten RAG Systems.
Korpus Routing und Index Auswahl pro Anfrage
Korpus Routing und Index Auswahl pro Anfrage bedeutet, dass nicht jede Suchanfrage blind über den gesamten Datenbestand läuft, sondern gezielt auf den relevanten Teilkorpus oder den passenden Index gelenkt wird. In großen Unternehmen existieren oft verschiedene Datenwelten parallel, zum Beispiel ein Index für technische Handbücher, einer für juristische Verträge, einer für Supporttickets und einer für Marketingmaterialien. Alle diese Daten zu einem einzigen gigantischen Index zusammenzufassen, macht das Retrieval unpräzise und ineffizient.
Das Routing entscheidet anhand der Anfrage, welcher Index angesprochen wird oder ob mehrere Indizes parallel genutzt werden müssen. Dafür können Merkmale der Anfrage ausgewertet werden, etwa erkannte Schlagwörter, die Sprache, die Dokumentart oder organisatorische Hinweise wie Abteilung oder Projekt. Auch manuell gesetzte Parameter oder Metadaten der Nutzeranfrage spielen eine Rolle. Ein Routing-Modul leitet die Anfrage dann nur an die relevanten Indizes weiter und spart dadurch Ressourcen und Suchzeit.
Ein Beispiel ist eine Anfrage wie „Zeige mir die Wartungsintervalle für Maschine X“. Das System erkennt, dass die Frage technisch ist und routet sie ausschließlich an den Index für Handbücher und Wartungsdokumentationen. Der Index für Marketingtexte oder Verträge wird nicht durchsucht. Dadurch verkürzt sich die Antwortzeit, irrelevante Treffer werden vermieden und die Qualität der Ergebnisse steigt deutlich.
Ohne Korpus Routing muss jede Anfrage alle Indizes durchsuchen. Das führt zu unnötiger Last, höheren Latenzen und vielen unpassenden Treffern. Zudem steigt die Gefahr, dass irrelevante Chunks im Ranking nach oben rutschen und die Antwort verfälschen. Mit einem gezielten Routing bleibt die Suche fokussiert, effizient und liefert relevantere Antworten.
Hybrid Landschaft mit synchronisierten IDs
Das Ausgangsproblem bei Suchsystemen in großen Unternehmen ist, dass keine einzelne Technologie alle Anforderungen gleichzeitig abdeckt. Ein Benutzer benötigt oft Ergebnisse aus verschiedenen Quellen, weil eine Fragestellung selten nur eine Ebene betrifft. Bei einer Suche nach „ISO 27001“ reicht es nicht, nur ähnliche Inhalte zu finden. Fachliche Erläuterungen aus Richtlinien liefern die Vektorsuche, exakte Wortnennungen werden durch Volltextsuche sichtbar, und organisatorische Informationen wie Freigabestatus oder betroffene Abteilungen stammen aus Metadatensuchen. Erst wenn diese Ergebnisse kombiniert werden, entsteht ein vollständiges Bild. Die Antwort ist dadurch sowohl semantisch präzise, textgenau belegt als auch organisatorisch korrekt eingeordnet.
RAG im engeren Sinn arbeitet nur mit Vektorsuche und Sprachmodell. In der Praxis wird es jedoch oft erweitert, indem auch Volltext- und Metadatensuchen einbezogen werden. Damit bleiben alle relevanten Aspekte abgedeckt: semantische Nähe, exakte Textstellen und organisatorische Kontextinformationen. Damit diese Ergebnisse nicht doppelt oder widersprüchlich erscheinen, braucht es eine Hybrid Landschaft mit synchronisierten IDs. Jede Quelle verweist dabei über eine gemeinsame Kennung auf denselben Ursprung, sodass Treffer konsolidiert und konsistent in die Antwortgenerierung eingehen. Ohne diese Synchronisierung entstehen doppelte oder unvollständige Ergebnisse, die die Qualität der Antworten mindern.
Ohne synchronisierte IDs entstehen doppelte, widersprüchliche oder unvollständige Ergebnisse. Mit einer Hybrid Landschaft bleibt die Suche präzise, vollständig und konsistent.
Distanzfunktion festlegen Cosinus, L2, Inneres Produkt und dokumentieren
Distanzfunktion festlegen bedeutet, dass die Regel bestimmt wird, nach welchem mathematischen Kriterium die Ähnlichkeit zwischen zwei Embeddings berechnet wird. Drei etablierte Verfahren sind Cosinus Distanz, L2 Distanz und Inneres Produkt. Cosinus Distanz misst den Winkel zwischen zwei Vektoren und ist besonders geeignet, wenn die Richtung der Vektoren entscheidend ist und ihre Länge keine Rolle spielt. L2 Distanz, auch euklidische Distanz genannt, berücksichtigt den geometrischen Abstand im Raum und bezieht sowohl Richtung als auch Länge der Vektoren ein. Inneres Produkt oder Skalarprodukt bewertet, wie stark zwei Vektoren in dieselbe Richtung zeigen, wobei auch die Länge der Vektoren Einfluss hat.
Der Einsatz dieser Funktionen hängt stark vom Anwendungsfall und vom verwendeten Embedding Modell ab. Manche Modelle sind explizit für Cosinus Ähnlichkeit trainiert, andere für euklidische Distanz oder Skalarprodukte. Wird eine unpassende Distanzfunktion gewählt, kann die Suche relevante Nachbarn übersehen oder irrelevante Treffer bevorzugen. Deshalb ist es entscheidend, die Distanzfunktion klar zu dokumentieren und konsistent über alle Komponenten des Systems hinweg zu verwenden.
Ohne eine dokumentierte und konsistente Festlegung der Distanzfunktion entstehen Inkonsistenzen. Zwei Teams könnten denselben Index mit unterschiedlichen Methoden abfragen und zu unterschiedlichen Ergebnissen kommen. Benchmarks würden ihre Aussagekraft verlieren und die Qualität der Antworten wäre nicht mehr reproduzierbar. Mit einer klar gewählten und dokumentierten Distanzfunktion bleibt die Suche verlässlich und Ergebnisse sind nachvollziehbar.
Fazit
In Teil 2 wurde deutlich, dass die Qualität eines RAG Systems nicht allein vom Sprachmodell abhängt, sondern in hohem Maße von den Embeddings und der Art ihrer Speicherung bestimmt wird. Domänenspezifische Anpassungen, mehrsprachige Abbildung, Normalisierung, Out of Distribution Erkennung und die Wahl geeigneter Indexstrukturen entscheiden darüber, wie zuverlässig und effizient die semantische Suche arbeitet und welche Grundlage die Antwortgenerierung hat. Ohne saubere Embeddings und eine robuste Indexierung bleibt selbst das leistungsfähigste Modell unpräzise.
In den nächsten Teilen der Reihe rückt der Retrieval Prozess in den Mittelpunkt. Dort geht es darum, wie die Auswahl und Gewichtung der relevanten Chunks verbessert werden kann, welche Strategien für Re Ranking und hybride Verfahren genutzt werden und wie Metadaten und Kontext systematisch in die Suche einfließen. Schritt für Schritt entsteht so ein vollständiges Bild, wie RAG Systeme von der Datenbasis bis zur fertigen Antwort gezielt optimiert werden können.