{"id":348,"date":"2026-09-09T18:45:45","date_gmt":"2026-09-09T18:45:45","guid":{"rendered":"https:\/\/www.fabricioruch.ch\/?p=348"},"modified":"2026-09-25T21:17:34","modified_gmt":"2026-09-25T21:17:34","slug":"rag-von-grund-auf-teil-4-information-retrieval-und-hybrid-search","status":"publish","type":"post","link":"https:\/\/www.fabricioruch.ch\/?p=348","title":{"rendered":"RAG von Grund auf \u2013 Teil 4: Information Retrieval und Hybrid Search"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In Teil 3 ging es um <strong>Embeddings und Vektorsuche<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir haben gesehen, dass Dense Retrieval besonders stark darin ist, semantisch \u00e4hnliche Inhalte zu finden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Frage:\nWie kann ich meinen Vertrag w\u00e4hrend der Probezeit beenden?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>W\u00e4hrend der Probezeit betr\u00e4gt die K\u00fcndigungsfrist sieben Tage.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die W\u00f6rter stimmen nur teilweise \u00fcberein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Bedeutung ist jedoch sehr \u00e4hnlich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Embeddings k\u00f6nnen genau diese Beziehung modellieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber Dense Retrieval hat Grenzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Was passiert bei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CVE-2026-12345\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Artikel 17.4\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>QX-9107-B\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist nicht prim\u00e4r die semantische Bedeutung entscheidend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier z\u00e4hlt die <strong>exakte Zeichenfolge<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit kommen wir zur zweiten grossen Welt des Retrievals:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>lexikalische beziehungsweise sparse Suche.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Und genau aus der Kombination von semantischer und lexikalischer Suche entsteht eines der wichtigsten Konzepte moderner RAG-Systeme:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hybrid Search.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">1. Information Retrieval ist \u00e4lter als RAG<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">RAG wird h\u00e4ufig behandelt, als h\u00e4tte die Suche nach relevanten Informationen erst mit Large Language Models begonnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist nat\u00fcrlich nicht der Fall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Forschungsgebiet <strong>Information Retrieval<\/strong>, kurz <strong>IR<\/strong>, besch\u00e4ftigt sich seit Jahrzehnten mit Fragen wie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Welche Dokumente sind f\u00fcr eine Suchanfrage relevant?<\/li>\n\n\n\n<li>Wie werden Dokumente indexiert?<\/li>\n\n\n\n<li>Wie werden Suchbegriffe gewichtet?<\/li>\n\n\n\n<li>Wie ordnet man Treffer nach Relevanz?<\/li>\n\n\n\n<li>Wie misst man die Qualit\u00e4t einer Suche?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Klassische Websuchmaschinen, Bibliothekskataloge, Enterprise Search und Dokumentensuchsysteme basieren auf diesen Grundlagen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RAG \u00fcbernimmt einen grossen Teil dieser Konzepte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das LLM kommt erst sp\u00e4ter hinzu.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Retrieval ist ein Ranking-Problem<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, wir besitzen 100&#8217;000 Chunks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Benutzer fragt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie lange ist die K\u00fcndigungsfrist w\u00e4hrend der Probezeit?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das Suchsystem muss nicht bloss entscheiden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>relevant\noder\nnicht relevant\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Es muss eine Reihenfolge bilden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zum Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. K\u00fcndigungsfrist w\u00e4hrend der Probezeit\n2. Dauer der Probezeit\n3. K\u00fcndigung nach Probezeit\n4. Ferien w\u00e4hrend der Probezeit\n5. Allgemeine Arbeitsvertragsbestimmungen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Retrieval ist deshalb typischerweise ein <strong>Ranking-Problem<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jeder Kandidat erh\u00e4lt einen Score.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Danach werden die Kandidaten sortiert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Lexical Retrieval<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lexical Retrieval<\/strong> sucht anhand von W\u00f6rtern, Tokens oder Zeichenfolgen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Die K\u00fcndigungsfrist w\u00e4hrend der Probezeit betr\u00e4gt sieben Tage.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>W\u00e4hrend der ersten drei Monate gelten besondere Regeln zur Beendigung des Arbeitsverh\u00e4ltnisses.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eine rein lexikalische Suche bevorzugt sehr wahrscheinlich Dokument A.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Denn dort kommen die Suchbegriffe direkt vor.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Exact Match<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Der einfachste Fall ist ein <strong>Exact Match<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Incident INC-847291 wurde am Montag geschlossen.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist die exakte \u00dcbereinstimmung extrem aussagekr\u00e4ftig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval kann diesen Zusammenhang ebenfalls erfassen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber ein klassischer Suchindex kann solche exakten Tokens h\u00e4ufig noch zuverl\u00e4ssiger und transparenter behandeln.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Tokenisierung<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor klassische Suchverfahren W\u00f6rter bewerten k\u00f6nnen, muss Text in kleinere Einheiten zerlegt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Vorgang heisst <strong>Tokenisierung<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Die K\u00fcndigungsfrist betr\u00e4gt sieben Tage.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">k\u00f6nnte werden zu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  \"die\",\n  \"k\u00fcndigungsfrist\",\n  \"betr\u00e4gt\",\n  \"sieben\",\n  \"tage\"\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Tokens bilden die Grundlage vieler lexikalischer Suchverfahren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Suchmaschinen-Tokens und LLM-Tokens sind nicht dasselbe<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Der Begriff <strong>Token<\/strong> kommt sowohl bei Suchmaschinen als auch bei Sprachmodellen vor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Er bezeichnet aber nicht zwingend dieselbe Zerlegung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein LLM-Tokenizer k\u00f6nnte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">in mehrere Subword-Tokens zerlegen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein klassischer Suchindex behandelt das Wort m\u00f6glicherweise als einzelnes Term.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb sollte man unterscheiden zwischen:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>LLM Tokenization<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">und:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>IR Tokenization<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beide dienen unterschiedlichen Zwecken.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Normalisierung von Suchbegriffen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Suchsysteme normalisieren Text h\u00e4ufig vor der Indexierung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00dcNDIGUNGSFRIST\nK\u00fcndigungsfrist\nk\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">werden zu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00f6gliche Normalisierungsschritte sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lowercasing,<\/li>\n\n\n\n<li>Unicode-Normalisierung,<\/li>\n\n\n\n<li>Entfernen bestimmter Sonderzeichen,<\/li>\n\n\n\n<li>Sprachnormalisierung.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die konkrete Strategie beeinflusst direkt, welche Begriffe sp\u00e4ter matchen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Stopwords<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Stopwords<\/strong> sind sehr h\u00e4ufig vorkommende W\u00f6rter, die bei klassischen Suchverfahren h\u00e4ufig wenig Unterscheidungskraft besitzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiele:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>der\ndie\ndas\nund\noder\nist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Historisch wurden solche W\u00f6rter oft vollst\u00e4ndig entfernt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Moderne Suchsysteme k\u00f6nnen differenzierter damit umgehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Denn Stopwords k\u00f6nnen in bestimmten Queries durchaus Bedeutung tragen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>To be or not to be\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein blindes Entfernen w\u00e4re hier offensichtlich problematisch.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Stemming<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Stemming<\/strong> reduziert W\u00f6rter auf einen k\u00fcnstlich erzeugten Wortstamm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielhaft:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndigen\nk\u00fcndigt\ngek\u00fcndigt\nk\u00fcndigung\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">k\u00f6nnten auf einen gemeinsamen Stamm reduziert werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der genaue Stamm muss sprachlich nicht korrekt sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ziel ist lediglich:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u00e4hnliche Wortformen sollen matchen.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Lemmatization<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lemmatization<\/strong> verfolgt ein \u00e4hnliches Ziel, versucht aber die linguistische Grundform eines Wortes zu bestimmen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ging\ngeht\ngegangen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gehen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lemmatization ist sprachlich anspruchsvoller als einfaches Stemming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beide Verfahren dienen dazu, Flexionsvarianten besser zusammenzuf\u00fchren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. N-Grams<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein <strong>N-Gram<\/strong> ist eine Folge von n Elementen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei W\u00f6rtern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"K\u00fcndigungsfrist Probezeit\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">als Bigram.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Zeichen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ABC\nBCD\nCDE\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">als Character Trigrams.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N-Grams k\u00f6nnen hilfreich sein f\u00fcr:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tippfehler,<\/li>\n\n\n\n<li>Teilbegriffe,<\/li>\n\n\n\n<li>Komposita,<\/li>\n\n\n\n<li>Produktcodes,<\/li>\n\n\n\n<li>Namen.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Deutsche Komposita<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Deutsch stellt klassische Suchsysteme vor eine besondere Herausforderung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">enth\u00e4lt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigung\n+\nFrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Suche nach:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Frist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">soll m\u00f6glicherweise trotzdem matchen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sprachspezifische Analyzer k\u00f6nnen solche Komposita ber\u00fccksichtigen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. Inverted Index<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die zentrale Datenstruktur vieler klassischer Suchmaschinen ist der <strong>Inverted Index<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Statt f\u00fcr jedes Dokument zu speichern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dokument \u2192 W\u00f6rter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">speichert man:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wort \u2192 Dokumente\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndigungsfrist\n\u2192 Dokument 2\n\u2192 Dokument 7\n\u2192 Dokument 12\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>probezeit\n\u2192 Dokument 1\n\u2192 Dokument 2\n\u2192 Dokument 9\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit kann das System sehr schnell herausfinden, welche Dokumente bestimmte Begriffe enthalten.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Warum \u201einverted\u201c?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein normaler Dokumentbestand k\u00f6nnte so gedacht werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dokument A:\nProbezeit, K\u00fcndigung, Frist\n\nDokument B:\nFerien, Urlaub, Anspruch\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der invertierte Index dreht die Perspektive um:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit \u2192 A\nK\u00fcndigung \u2192 A\nFrist \u2192 A\nFerien \u2192 B\nUrlaub \u2192 B\nAnspruch \u2192 B\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das macht Wortsuche extrem effizient.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. Posting List<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die Liste der Dokumente beziehungsweise Positionen zu einem Term wird h\u00e4ufig <strong>Posting List<\/strong> genannt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Term:\nk\u00fcndigungsfrist\n\nPosting List:\nDoc 3\nDoc 18\nDoc 41\nDoc 92\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Posting kann zus\u00e4tzlich enthalten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>H\u00e4ufigkeit,<\/li>\n\n\n\n<li>Position im Text,<\/li>\n\n\n\n<li>Feld,<\/li>\n\n\n\n<li>weitere Statistiken.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Term Frequency<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Term Frequency<\/strong>, kurz <strong>TF<\/strong>, beschreibt, wie h\u00e4ufig ein Term in einem Dokument vorkommt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit Probezeit K\u00fcndigung Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann gilt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TF(Probezeit) = 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Intuition:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Wenn ein Begriff h\u00e4ufiger vorkommt, ist er m\u00f6glicherweise wichtiger f\u00fcr dieses Dokument.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Aber allein reicht das nicht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Das Problem mit h\u00e4ufigen W\u00f6rtern<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, der Begriff:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mitarbeiter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kommt in fast jedem Dokument vor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dann hilft er kaum dabei, relevante Dokumente voneinander zu unterscheiden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dagegen k\u00f6nnte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">nur in wenigen Dokumenten vorkommen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Begriff ist wesentlich informativer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Daf\u00fcr ben\u00f6tigen wir <strong>Document Frequency<\/strong> und <strong>Inverse Document Frequency<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Document Frequency<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die <strong>Document Frequency<\/strong>, kurz <strong>DF<\/strong>, beschreibt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">In wie vielen Dokumenten kommt ein Term vor?<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1000 Dokumente insgesamt\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"mitarbeiter\"\nkommt in 900 Dokumenten vor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">w\u00e4hrend:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"k\u00fcndigungsfrist\"\nkommt in 30 Dokumenten vor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann besitzt \u201eK\u00fcndigungsfrist\u201c eine h\u00f6here Unterscheidungskraft.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. Inverse Document Frequency<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die <strong>Inverse Document Frequency<\/strong>, kurz <strong>IDF<\/strong>, gewichtet seltene Begriffe h\u00f6her.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eine vereinfachte Form lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IDF(t) = log(N \/ DF(t))\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>N\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">die Anzahl der Dokumente und:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DF(t)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">die Anzahl der Dokumente, in denen Term t vorkommt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je seltener ein Begriff:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>h\u00f6here IDF\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Je h\u00e4ufiger:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>niedrigere IDF\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">20. TF-IDF<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TF-IDF<\/strong> kombiniert:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Term Frequency\n\u00d7\nInverse Document Frequency\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">also vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TF-IDF(t,d) = TF(t,d) \u00d7 IDF(t)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Term erh\u00e4lt dadurch einen hohen Score, wenn:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>er im Dokument h\u00e4ufig vorkommt,<\/li>\n\n\n\n<li>aber im gesamten Korpus relativ selten ist.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">21. TF-IDF intuitiv<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, Dokument A enth\u00e4lt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit K\u00fcndigungsfrist K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und Dokument B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit Ferien\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn \u201eProbezeit\u201c in sehr vielen Dokumenten vorkommt, erh\u00e4lt es eine geringere Gewichtung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201eK\u00fcndigungsfrist\u201c k\u00f6nnte dagegen sehr spezifisch sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument A erh\u00e4lt dadurch f\u00fcr die Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">einen h\u00f6heren Score.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">22. TF-IDF ist ein Vektormodell<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Interessanterweise erzeugt auch TF-IDF Vektoren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, das gesamte Vokabular lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  probezeit,\n  k\u00fcndigung,\n  ferien,\n  arbeitszeit\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann k\u00f6nnte ein Dokument dargestellt werden als:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  0.8,\n  1.4,\n  0,\n  0\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist ebenfalls ein Vektor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber ein <strong>Sparse Vector<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">23. Sparse Vector<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Sparse Vector besitzt sehr viele Dimensionen, von denen die meisten null sind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;\n  0,\n  0,\n  0,\n  1.2,\n  0,\n  0,\n  0.7,\n  0,\n  0,\n  ...\n]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das Vokabular kann zehntausende oder hunderttausende Dimensionen besitzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein einzelner Text verwendet davon nur wenige.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Daher:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>sparse = d\u00fcnn besetzt.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">24. Dense versus Sparse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Embedding:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;0.12, -0.74, 0.21, 0.55, ...]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fast jede Dimension hat einen Wert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse Representation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;0, 0, 1.2, 0, 0, 0.7, 0, ...]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die meisten Dimensionen sind null.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist die grundlegende technische Unterscheidung.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">25. Sparse bedeutet nicht automatisch BM25<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Punkt ist wichtig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>BM25 ist ein Sparse-Retrieval-Verfahren.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber nicht jedes Sparse Retrieval ist BM25.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt auch <strong>Learned Sparse Retrieval<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei lernen neuronale Modelle gewichtete Sparse-Repr\u00e4sentationen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein bekanntes Konzept in dieser Familie ist beispielsweise SPLADE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Repr\u00e4sentation bleibt sparse, wird aber nicht ausschliesslich mit klassischen Termstatistiken erzeugt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">26. BM25<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>BM25<\/strong> ist eines der wichtigsten klassischen Ranking-Verfahren im Information Retrieval.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es baut auf \u00e4hnlichen Ideen wie TF-IDF auf, ber\u00fccksichtigt aber weitere Faktoren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eine typische Form lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>score(D,Q)\n=\n\u03a3 IDF(qi) \u00d7<\/code><\/pre>\n\n\n<p>[f(qi,D) \u00d7 (k1 + 1)]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/<\/p>\n\n\n<p>[f(qi,D) + k1 \u00d7 (1 &#8211; b + b \u00d7 |D| \/ avgdl)]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Formel sieht zun\u00e4chst kompliziert aus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Grundidee ist jedoch gut verst\u00e4ndlich.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">27. Bestandteile von BM25<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 ber\u00fccksichtigt unter anderem:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Termh\u00e4ufigkeit<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie oft kommt der Suchbegriff im Dokument vor?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Termseltenheit<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie selten ist dieser Begriff im Korpus?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dokumentl\u00e4nge<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ist das Dokument ungew\u00f6hnlich lang?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit verbessert BM25 einige Schw\u00e4chen eines einfachen TF-IDF-Modells.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">28. Term Frequency Saturation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei einfachem TF k\u00f6nnte man implizit denken:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10 Vorkommen\n= doppelt so relevant wie\n5 Vorkommen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist oft unrealistisch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 verwendet eine <strong>S\u00e4ttigung<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die ersten Vorkommen eines Terms erh\u00f6hen den Score stark.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Weitere Wiederholungen bringen immer weniger zus\u00e4tzlichen Nutzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1 \u2192 grosser Gewinn\n2 \u2192 weiterer Gewinn\n3 \u2192 kleinerer Gewinn\n20 \u2192 kaum noch zus\u00e4tzlicher Nutzen\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">29. Parameter k1<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Der BM25-Parameter <strong>k1<\/strong> steuert, wie stark Term Frequency ges\u00e4ttigt wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kleiner k1\n\u2192 schnelle S\u00e4ttigung\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>gr\u00f6sserer k1\n\u2192 H\u00e4ufigkeit wirkt l\u00e4nger\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In der Praxis werden h\u00e4ufig etablierte Standardbereiche verwendet und anschliessend evaluiert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">30. Dokumentl\u00e4ngen-Normalisierung<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein langes Dokument enth\u00e4lt statistisch mehr W\u00f6rter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dadurch steigt die Wahrscheinlichkeit, dass ein Suchbegriff zuf\u00e4llig h\u00e4ufiger vorkommt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 ber\u00fccksichtigt deshalb die Dokumentl\u00e4nge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Dokument mit 10&#8217;000 W\u00f6rtern soll nicht allein deshalb h\u00f6her ranken als ein fokussierter Absatz mit 100 W\u00f6rtern.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">31. Parameter b<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Der Parameter <strong>b<\/strong> steuert die St\u00e4rke der L\u00e4ngennormalisierung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>b = 0\n\u2192 Dokumentl\u00e4nge spielt keine Rolle\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>b nahe 1\n\u2192 Dokumentl\u00e4nge wird stark ber\u00fccksichtigt\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der klassische Default liegt h\u00e4ufig ungef\u00e4hr bei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>b = 0.75\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Wert ist aber kein Naturgesetz.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">32. avgdl<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>avgdl<\/strong> steht f\u00fcr:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>average document length<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">also die durchschnittliche Dokumentl\u00e4nge im Index.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 vergleicht die L\u00e4nge eines Dokuments mit diesem Durchschnitt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Chunk-RAG bedeutet \u201eDokument\u201c in der BM25-Formel praktisch oft:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Chunk\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">weil Chunks die Retrieval-Einheiten sind.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">33. BM25 und Chunking<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Hier zeigt sich die Verbindung zu Teil 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Chunks extrem unterschiedlich gross sind:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Chunk A: 50 W\u00f6rter\nChunk B: 2'000 W\u00f6rter\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">spielt die L\u00e4ngennormalisierung eine gr\u00f6ssere Rolle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn alle Chunks \u00e4hnlich gross sind, reduziert sich dieser Effekt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Chunking beeinflusst also auch klassische Retrieval-Scores.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">34. Warum BM25 heute noch relevant ist<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 wirkt im Zeitalter neuronaler Modelle zun\u00e4chst altmodisch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber es besitzt Eigenschaften, die Dense Retrieval nicht zuverl\u00e4ssig ersetzt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 ist besonders stark bei:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>exakten Begriffen,<\/li>\n\n\n\n<li>seltenen W\u00f6rtern,<\/li>\n\n\n\n<li>Eigennamen,<\/li>\n\n\n\n<li>Produktcodes,<\/li>\n\n\n\n<li>IDs,<\/li>\n\n\n\n<li>Paragraphen,<\/li>\n\n\n\n<li>Akronymen,<\/li>\n\n\n\n<li>Fachterminologie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ZX-419-B\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eine exakte lexikalische \u00dcbereinstimmung ist hier extrem wertvoll.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">35. Beispiel Dense versus BM25<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie lange kann ich w\u00e4hrend der Probezeit k\u00fcndigen?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>W\u00e4hrend der Probezeit betr\u00e4gt die K\u00fcndigungsfrist sieben Tage.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>In den ersten Monaten kann das Arbeitsverh\u00e4ltnis\nmit kurzer Frist beendet werden.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval k\u00f6nnte beide stark finden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 bevorzugt m\u00f6glicherweise A, weil:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit\nK\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">direkt vorkommen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">36. Beispiel mit Identifier<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Incident INC-847291 wurde geschlossen.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ein schwerwiegender Incident wurde gestern geschlossen.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Semantisch sind beide \u00e4hnlich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr den Benutzer ist aber nur A relevant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 beziehungsweise Exact Matching besitzt hier einen klaren Vorteil.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">37. Beispiel mit Synonymen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie kann ich meinen Vertrag beenden?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Das Arbeitsverh\u00e4ltnis kann gek\u00fcndigt werden.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 sieht m\u00f6glicherweise wenig \u00dcberlappung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval erkennt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertrag beenden\n\u2248\nArbeitsverh\u00e4ltnis k\u00fcndigen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier hat Dense Retrieval den Vorteil.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">38. Keine Methode gewinnt immer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Damit ergibt sich:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Query-Typ<\/th><th>Dense<\/th><th>Sparse<\/th><\/tr><\/thead><tbody><tr><td>Paraphrase<\/td><td>stark<\/td><td>eher schw\u00e4cher<\/td><\/tr><tr><td>Synonym<\/td><td>stark<\/td><td>schw\u00e4cher<\/td><\/tr><tr><td>exakte ID<\/td><td>unsicherer<\/td><td>sehr stark<\/td><\/tr><tr><td>seltene Fachbezeichnung<\/td><td>unterschiedlich<\/td><td>stark<\/td><\/tr><tr><td>nat\u00fcrlicher Satz<\/td><td>stark<\/td><td>gut bis mittel<\/td><\/tr><tr><td>exakter Produktname<\/td><td>gut<\/td><td>sehr stark<\/td><\/tr><tr><td>semantische Umschreibung<\/td><td>sehr stark<\/td><td>schw\u00e4cher<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist der Grund f\u00fcr <strong>Hybrid Search<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">39. Hybrid Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hybrid Search<\/strong> kombiniert mehrere Retrieval-Signale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im einfachsten Fall:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Retrieval\n      +\nSparse Retrieval\n      \u2193\nkombiniertes Ranking\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit versucht man, die St\u00e4rken beider Welten zu nutzen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">40. Eine typische Hybrid-Pipeline<\/h1>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>                    Query\n                       \u2502\n             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n             \u25bc                   \u25bc\n        Dense Search        Sparse Search\n             \u2502                   \u2502\n             \u25bc                   \u25bc\n        Dense Top-k         Sparse Top-k\n             \u2502                   \u2502\n             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                       \u25bc\n                    Fusion\n                       \u2193\n                 Hybrid Ranking\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach kann zus\u00e4tzlich ein Reranker folgen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">41. Warum Fusion notwendig ist<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dense und Sparse Retrieval erzeugen unterschiedliche Scores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0.82\n0.76\n0.71\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 m\u00f6glicherweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>14.7\n9.3\n6.1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Zahlen haben v\u00f6llig unterschiedliche Bedeutungen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Man kann nicht einfach rechnen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0.82 + 14.7\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ohne die Score-R\u00e4ume zu ber\u00fccksichtigen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb braucht man eine <strong>Fusion Strategy<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">42. Score Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei <strong>Score Fusion<\/strong> werden die Scores verschiedener Retriever normalisiert und kombiniert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hybrid Score\n=\n0.5 \u00d7 Dense Score\n+\n0.5 \u00d7 Sparse Score\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das klingt einfach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber zun\u00e4chst m\u00fcssen beide Scores sinnvoll auf vergleichbare Skalen gebracht werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">43. Min-Max Normalization<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine einfache Normalisierung ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>normalized(x)\n=\n(x - min)\n\/\n(max - min)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit werden Scores ungef\u00e4hr in den Bereich:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 bis 1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">transformiert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Danach k\u00f6nnen sie kombiniert werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Normalisierung h\u00e4ngt stark von den aktuellen Trefferverteilungen ab.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">44. Z-Score Normalization<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine andere M\u00f6glichkeit ist eine Standardisierung anhand von Mittelwert und Standardabweichung.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>z = (x - \u03bc) \/ \u03c3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auch das kann Score-R\u00e4ume vergleichbarer machen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber auch hier entstehen praktische Fragen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Welche Kandidatenmenge?<\/li>\n\n\n\n<li>Welche Verteilung?<\/li>\n\n\n\n<li>Welche Ausreisser?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Score Fusion kann deshalb aufwendiger werden, als es zun\u00e4chst klingt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">45. Weighted Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei <strong>Weighted Fusion<\/strong> bekommen verschiedene Retriever unterschiedliche Gewichte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>score =\n0.7 \u00d7 dense\n+\n0.3 \u00d7 sparse\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das kann sinnvoll sein, wenn eine Retrieval-Art im jeweiligen Korpus zuverl\u00e4ssig st\u00e4rker ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Gewichte m\u00fcssen jedoch evaluiert werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">46. Query-Adaptive Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Noch flexibler ist eine queryabh\u00e4ngige Gewichtung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 Sparse st\u00e4rker gewichten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie kann ich meinen Vertrag w\u00e4hrend der ersten Monate beenden?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 Dense st\u00e4rker gewichten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das kann leistungsf\u00e4hig sein, erh\u00f6ht aber die Komplexit\u00e4t.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">47. Rank Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Alternative zur Score Fusion ist <strong>Rank Fusion<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei interessieren nicht die absoluten Scores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es z\u00e4hlt nur die Rangposition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. A\n2. B\n3. C\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. B\n2. D\n3. A\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Rank-Fusion-Methode kombiniert diese Ranglisten.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">48. Reciprocal Rank Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine der wichtigsten Methoden ist <strong>Reciprocal Rank Fusion<\/strong>, kurz <strong>RRF<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Formel lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RRF(d)\n=\n\u03a3 1 \/ (k + rank_i(d))\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rank_i(d)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">der Rang des Dokuments d in Retriever i.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Parameter k ist eine Konstante, die den Einfluss sehr hoher R\u00e4nge gl\u00e4ttet.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">49. RRF intuitiv<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A \u2192 Rang 1\nB \u2192 Rang 2\nC \u2192 Rang 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>B \u2192 Rang 1\nA \u2192 Rang 2\nD \u2192 Rang 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A und B werden von beiden Retrievern hoch eingestuft.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RRF belohnt genau diese \u00dcbereinstimmung.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">50. Warum RRF beliebt ist<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">RRF besitzt einen grossen praktischen Vorteil:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Es muss keine inkompatiblen Score-Skalen normalisieren.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Dense kann Scores zwischen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0.4 und 0.9\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">liefern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse kann:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>3 bis 25\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">liefern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RRF ignoriert die absoluten Werte und nutzt nur die Rangposition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das macht die Methode robust und einfach.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">51. Der RRF-Parameter k<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">In der RRF-Formel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1 \/ (k + rank)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">steuert k, wie stark Spitzenr\u00e4nge gegen\u00fcber niedrigeren R\u00e4ngen bevorzugt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein h\u00e4ufig zitierter klassischer Wert ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k = 60\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Wert stammt aus der Information-Retrieval-Literatur und ist kein universell optimaler Wert f\u00fcr jedes RAG-System.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">52. RRF-Beispiel<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Nehmen wir vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k = 60\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Rank = 1\nSparse Rank = 2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RRF(A)\n=\n1\/(60+1)\n+\n1\/(60+2)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument C:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Rank = 3\nSparse Rank = nicht vorhanden\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann erh\u00e4lt C nur den Beitrag aus einer Liste.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A wird dadurch st\u00e4rker bewertet.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">53. Dokument fehlt in einer Rangliste<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ein Dokument in einem Retriever nicht auftaucht, erh\u00e4lt es aus dieser Rangliste keinen Beitrag.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit bevorzugt RRF tendenziell Kandidaten, die:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>von mehreren Retrievern gefunden werden,<\/li>\n\n\n\n<li>oder in einem Retriever extrem hoch ranken.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">54. Candidate Union<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor Rankings fusioniert werden k\u00f6nnen, werden Kandidaten h\u00e4ufig vereinigt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Top 5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A\nB\nC\nD\nE\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse Top 5:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>B\nF\nA\nG\nH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Union:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A\nB\nC\nD\nE\nF\nG\nH\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Kandidaten erhalten anschliessend einen Fusionsscore.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">55. Duplicate Handling<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Da derselbe Chunk in beiden Suchwegen vorkommen kann, ben\u00f6tigt man stabile IDs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So wird:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense: Chunk 42\nSparse: Chunk 42\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">als derselbe Kandidat erkannt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ansonsten k\u00f6nnten identische Chunks mehrfach in der Ergebnisliste auftauchen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">56. Hybrid Search ist nicht einfach \u201emehr Treffer\u201c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Das Ziel lautet nicht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense 10\n+\nSparse 10\n=\n20 Treffer an LLM\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sondern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>verschiedene Retrieval-Signale\n        \u2193\nbessere Kandidatenmenge\n        \u2193\nbesseres Ranking\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach kann die Menge wieder reduziert werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">57. Candidate Generation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dense und Sparse Retrieval werden h\u00e4ufig als <strong>Candidate Generators<\/strong> eingesetzt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Top 50\nSparse Top 50\n      \u2193\nFusion\n      \u2193\n70 eindeutige Kandidaten\n      \u2193\nReranker\n      \u2193\nTop 10\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das Ziel der ersten Stufe ist hoher Recall.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">58. Recall First<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">In der Candidate-Generation-Phase ist es oft wichtiger, die richtige Passage \u00fcberhaupt im Kandidatenpool zu haben, als sofort perfekt zu sortieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Denn:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nicht retrieved\n=\nsp\u00e4ter nicht rerankbar\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Reranker kann einen Kandidaten nur verbessern, wenn er vorher gefunden wurde.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">59. Precision Later<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Nachdem gen\u00fcgend Kandidaten vorhanden sind, kann eine teurere zweite Stufe die Pr\u00e4zision erh\u00f6hen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hoher Recall\n      \u2193\nReranking\n      \u2193\nhohe Precision\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese zweistufige Denkweise ist zentral f\u00fcr modernes Retrieval.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">60. Keyword Search versus BM25<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht jede Keyword-Suche verwendet automatisch BM25.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt beispielsweise:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Boolean Search,<\/li>\n\n\n\n<li>Exact Match,<\/li>\n\n\n\n<li>Phrase Search,<\/li>\n\n\n\n<li>Prefix Search,<\/li>\n\n\n\n<li>Fuzzy Search,<\/li>\n\n\n\n<li>TF-IDF,<\/li>\n\n\n\n<li>BM25.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 ist ein Ranking-Modell innerhalb der gr\u00f6sseren Welt lexikalischer Suche.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">61. Boolean Retrieval<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei <strong>Boolean Retrieval<\/strong> arbeitet man mit logischen Bedingungen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>probezeit AND k\u00fcndigung\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>probezeit AND NOT ferien\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das System entscheidet prim\u00e4r anhand logischer Matches.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr klassische Suchinterfaces kann das sehr n\u00fctzlich sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr nat\u00fcrlichsprachliche RAG-Queries ist es allein meist zu starr.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">62. Phrase Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei <strong>Phrase Search<\/strong> wird eine exakte Wortfolge gesucht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"K\u00fcndigungsfrist w\u00e4hrend der Probezeit\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist st\u00e4rker als eine Suche nach den einzelnen Terms irgendwo im Dokument.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Phrase Matching kann besonders f\u00fcr:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Namen,<\/li>\n\n\n\n<li>Titel,<\/li>\n\n\n\n<li>Fachbegriffe,<\/li>\n\n\n\n<li>Zitate<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">hilfreich sein.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">63. Proximity Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Proximity Search<\/strong> ber\u00fccksichtigt, wie nahe Suchbegriffe im Text beieinander liegen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit ... K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">im selben Satz ist wahrscheinlich relevanter als:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">auf Seite 1 und:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">auf Seite 30.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Positionen im invertierten Index erm\u00f6glichen solche Signale.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">64. Field Boosting<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dokumente besitzen h\u00e4ufig Felder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>title\nheading\nbody\ntags\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Treffer im Titel kann st\u00e4rker gewichtet werden als derselbe Begriff im Body.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Title:\nK\u00fcndigung w\u00e4hrend der Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ist ein sehr starkes Signal f\u00fcr die Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigung Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Technik heisst h\u00e4ufig <strong>Field Boosting<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">65. Metadata Boosting<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Neben Textfeldern k\u00f6nnen auch Metadaten das Ranking beeinflussen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aktuelles Dokument\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">k\u00f6nnte gegen\u00fcber:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>archiviertes Dokument\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">bevorzugt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist allerdings kein rein textbasiertes Relevanzsignal mehr.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">66. Recency Boost<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei zeitabh\u00e4ngigen Wissensbest\u00e4nden kann <strong>Recency<\/strong> relevant sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Richtlinie 2026\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">soll m\u00f6glicherweise h\u00f6her ranken als:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Richtlinie 2023\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">wenn beide ansonsten \u00e4hnlich sind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das kann durch Filter oder Ranking-Boosts erfolgen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">67. Fuzzy Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fuzzy Search<\/strong> toleriert kleine Schreibabweichungen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigunsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eine exakte Suche w\u00fcrde scheitern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fuzzy Matching kann den Tippfehler \u00fcberbr\u00fccken.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">68. Edit Distance<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein h\u00e4ufig verwendetes Konzept hinter Fuzzy Search ist die <strong>Edit Distance<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie misst, wie viele Zeichenoperationen n\u00f6tig sind, um einen String in einen anderen umzuwandeln.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Haus\nMaus\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ben\u00f6tigt eine Ersetzung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die bekannteste Variante ist die <strong>Levenshtein Distance<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">69. Prefix Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Prefix Search kann eine Anfrage wie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndig\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Begriffe finden wie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndigung\nk\u00fcndigungsfrist\nk\u00fcndigen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist besonders f\u00fcr Suchfelder mit Autocomplete interessant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In RAG-Pipelines spielt es je nach Query-Typ eine kleinere, aber m\u00f6gliche Rolle.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">70. Analyzer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein <strong>Analyzer<\/strong> definiert in klassischen Suchmaschinen typischerweise eine Verarbeitungskette aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Character Filters\n      \u2193\nTokenizer\n      \u2193\nToken Filters\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Text\n \u2193\nLowercase\n \u2193\nGerman Tokenizer\n \u2193\nStemming\n \u2193\nIndex Terms\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Der Analyzer bestimmt wesentlich, welche Begriffe sp\u00e4ter matchen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">71. Index-Time Analysis<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der Indexierung wird Dokumenttext analysiert.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dokument\n \u2193\nAnalyzer\n \u2193\nTerms\n \u2193\nInverted Index\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist <strong>Index-Time Analysis<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">72. Query-Time Analysis<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Auch die Suchanfrage muss verarbeitet werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query\n \u2193\nAnalyzer\n \u2193\nQuery Terms\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Index- und Query-Analyse m\u00fcssen sinnvoll aufeinander abgestimmt sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Dokumente und Queries v\u00f6llig unterschiedlich tokenisiert werden, sinkt die Trefferqualit\u00e4t.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">73. Query Expansion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Query Expansion<\/strong> erweitert eine Suchanfrage um verwandte Begriffe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query:\nAuto\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">erweitert zu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Auto\nFahrzeug\nPKW\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das kann lexikalischen Recall erh\u00f6hen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei RAG kann Query Expansion regelbasiert, modellbasiert oder \u00fcber LLMs erfolgen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">74. Synonym Expansion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine spezielle Form ist <strong>Synonym Expansion<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndigen\n\u2194\nArbeitsverh\u00e4ltnis beenden\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dadurch kann Sparse Retrieval teilweise semantische Varianten abdecken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das zeigt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Sparse Search muss nicht zwingend auf exakte Wortgleichheit beschr\u00e4nkt bleiben.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">75. Expansion birgt Risiken<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Zu aggressive Expansion kann falsche Treffer erzeugen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Bank\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kann bedeuten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Finanzinstitut\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Sitzbank\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Kontextabh\u00e4ngige Bedeutungen machen Synonymregeln schwierig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval l\u00f6st solche Ambiguit\u00e4ten h\u00e4ufig besser.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">76. Learned Sparse Retrieval<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Klassische sparse Verfahren verwenden explizite Termstatistiken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neuere Ans\u00e4tze lernen Sparse-Repr\u00e4sentationen neuronaler Modelle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Text k\u00f6nnte dadurch Gewichte nicht nur f\u00fcr direkt vorkommende W\u00f6rter erhalten, sondern auch f\u00fcr semantisch verwandte Begriffe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Text:\nArbeitsverh\u00e4ltnis beenden\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">k\u00f6nnte zus\u00e4tzlich hohe Gewichte erhalten f\u00fcr:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>k\u00fcndigung\nk\u00fcndigen\nk\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das verbindet teilweise Vorteile von Sparse und semantischer Suche.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">77. SPLADE<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SPLADE<\/strong> ist eine bekannte Familie neuronaler Sparse-Retrieval-Modelle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Grundidee:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Text\n \u2193\nTransformer\n \u2193\ngewichtete Sparse-Term-Repr\u00e4sentation\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Repr\u00e4sentation bleibt kompatibel mit sparse Suchprinzipien, enth\u00e4lt aber gelernte semantische Expansion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr das Grundverst\u00e4ndnis gen\u00fcgt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Sparse Retrieval kann klassisch oder gelernt sein.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">78. Dense versus Learned Sparse<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Beide k\u00f6nnen semantische Information transportieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der strukturelle Unterschied bleibt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kleiner fester Vektorraum\nmit vielen Nichtnullwerten\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Learned Sparse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sehr grosser Vokabularraum\nmit wenigen gewichteten Terms\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das beeinflusst Indexierung, Speicher und Suchverfahren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">79. Hybrid kann mehr als zwei Retriever kombinieren<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Search muss nicht nur bedeuten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense + BM25\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Man k\u00f6nnte kombinieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Embedding Search\n+\nBM25\n+\nLearned Sparse\n+\nMetadata Signals\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder sogar weitere Suchkan\u00e4le.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je mehr Signale hinzukommen, desto wichtiger wird eine robuste Fusion.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">80. Multi-Retriever Systems<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein System mit mehreren unabh\u00e4ngigen Retrieval-Methoden wird h\u00e4ufig als <strong>Multi-Retriever<\/strong>-Ansatz beschrieben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query\n \u251c\u2500\u2500 Dense Retriever\n \u251c\u2500\u2500 BM25 Retriever\n \u251c\u2500\u2500 Metadata Retriever\n \u2514\u2500\u2500 Graph Retriever\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach werden Kandidaten kombiniert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Retrieval ist damit ein Spezialfall eines allgemeineren Multi-Retriever-Prinzips.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">81. Query Routing<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht jede Query ben\u00f6tigt zwingend alle Retriever.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein System k\u00f6nnte erkennen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query enth\u00e4lt exakte ID\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und Sparse Search st\u00e4rker einsetzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query ist konzeptionell\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und Dense Search bevorzugen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Entscheidung nennt man h\u00e4ufig <strong>Query Routing<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">82. Routing versus Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Routing entscheidet man:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Welcher Retriever soll verwendet werden?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Fusion entscheidet man:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie kombiniere ich mehrere Retriever-Ergebnisse?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beides sind unterschiedliche Strategien.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">83. Warum immer beide Retriever verwenden?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein einfacher Ansatz lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jede Query\n\u2192 Dense\n\u2192 Sparse\n\u2192 Fusion\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vorteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>einfach,<\/li>\n\n\n\n<li>robust,<\/li>\n\n\n\n<li>keine falsche Routing-Entscheidung.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nachteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mehr Suchaufwand,<\/li>\n\n\n\n<li>potenziell h\u00f6here Latenz,<\/li>\n\n\n\n<li>mehr Kandidaten.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr viele Systeme ist dieser Trade-off trotzdem attraktiv.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">84. Warum nicht nur BM25?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 kann erstaunlich stark sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber bei semantischer Umschreibung entstehen Grenzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Kann ich in den ersten Monaten kurzfristig aus dem Arbeitsvertrag raus?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Passage:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>W\u00e4hrend der Probezeit betr\u00e4gt die K\u00fcndigungsfrist sieben Tage.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die lexikalische \u00dcberschneidung ist gering.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval kann hier deutlich besser funktionieren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">85. Warum nicht nur Dense?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Umgekehrt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CVE-2026-12345\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval muss diese konkrete Zeichenfolge nicht zwingend perfekt priorisieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 sieht dagegen einen extrem seltenen, exakten Term.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist Sparse Retrieval strukturell besser geeignet.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">86. Hybrid Search als Robustheitsstrategie<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Search ist deshalb weniger eine exotische Optimierung als eine <strong>Robustheitsstrategie<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie reduziert die Abh\u00e4ngigkeit von einer einzigen Vorstellung von Relevanz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense sagt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Diese Texte bedeuten \u00c4hnliches.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse sagt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Diese Texte verwenden dieselben wichtigen Begriffe.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Beides zusammen liefert ein st\u00e4rkeres Signal.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">87. Lexical Match und Semantic Match<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Man kann zwei unterschiedliche Relevanztypen unterscheiden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lexical Match<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query:\nK\u00fcndigungsfrist\n\nPassage:\nK\u00fcndigungsfrist\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Semantic Match<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query:\nVertrag beenden\n\nPassage:\nArbeitsverh\u00e4ltnis k\u00fcndigen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Search versucht beide Arten gleichzeitig abzudecken.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">88. Score Calibration<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Score Fusion stellt sich die Frage, ob Scores verschiedener Retriever <strong>kalibriert<\/strong> sind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Dense Score von:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0.78\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und ein BM25 Score von:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>11.6\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">sind nicht direkt vergleichbar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Calibration versucht, Scores in eine interpretierbarere oder gemeinsame Skala zu bringen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist schwieriger als Rank Fusion.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">89. RRF versus Weighted Score Fusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Vereinfacht:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RRF<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vorteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>robust,<\/li>\n\n\n\n<li>einfach,<\/li>\n\n\n\n<li>keine Score-Normalisierung n\u00f6tig.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nachteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ignoriert Score-Abst\u00e4nde.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Weighted Score Fusion<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vorteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>kann St\u00e4rke einzelner Scores ber\u00fccksichtigen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nachteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ben\u00f6tigt Normalisierung beziehungsweise Calibration.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt keinen universellen Gewinner.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">90. Score-Abstand kann Information enthalten<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen Dense liefert:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = 0.91\nB = 0.90\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist ein sehr kleiner Unterschied.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = 0.91\nB = 0.55\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist der Unterschied wesentlich gr\u00f6sser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rank Fusion betrachtet in beiden F\u00e4llen nur:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A Rang 1\nB Rang 2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und verliert die Information \u00fcber den Score-Abstand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist eine der Grenzen von RRF.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">91. Trotzdem ist Rang oft stabiler als Score<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Absolute Scores k\u00f6nnen sich stark ver\u00e4ndern durch:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>anderes Embedding-Modell,<\/li>\n\n\n\n<li>andere Query,<\/li>\n\n\n\n<li>anderen Korpus,<\/li>\n\n\n\n<li>andere BM25-Statistiken.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e4nge sind oft leichter zu kombinieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb ist RRF als Baseline sehr beliebt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">92. Top-k pro Retriever<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei Hybrid Search ben\u00f6tigt jeder Retriever ein eigenes k.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Top 30\nSparse Top 30\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Top 50\nSparse Top 20\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Werte beeinflussen den Recall der fusionierten Kandidatenmenge.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">93. Warum ein zu kleines k gef\u00e4hrlich ist<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, die relevante Passage liegt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Rank 7\nSparse Rank 2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense k = 5\nSparse k = 5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">wird sie trotzdem \u00fcber Sparse gefunden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn sie aber:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Rank 7\nSparse Rank 9\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ist und beide Retriever nur Top 5 liefern, ist sie vollst\u00e4ndig verloren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">94. Warum ein zu grosses k teuer wird<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense k = 200\nSparse k = 200\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kann die Union hunderte Kandidaten enthalten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das belastet:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fusion,<\/li>\n\n\n\n<li>Reranking,<\/li>\n\n\n\n<li>Latenz,<\/li>\n\n\n\n<li>Speicher,<\/li>\n\n\n\n<li>eventuell LLM-basierte Rankingstufen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb muss k evaluiert werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">95. Candidate Recall<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine wichtige Metrik f\u00fcr diese Stufe ist:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Ist mindestens eine relevante Passage im Kandidatenpool?<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist <strong>Candidate Recall<\/strong> beziehungsweise Retrieval Recall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn die relevante Passage bereits hier fehlt, kann keine sp\u00e4tere Stufe sie retten.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">96. Search Recall versus Answer Quality<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein System kann hervorragenden Retrieval Recall haben und trotzdem schlechte Antworten erzeugen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Top 50 enth\u00e4lt richtigen Chunk\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">aber:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Reranker wirft ihn weg\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LLM ignoriert ihn\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb m\u00fcssen die Pipeline-Stufen separat gemessen werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">97. Search Precision<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Precision<\/strong> betrachtet den Anteil relevanter Treffer innerhalb der zur\u00fcckgegebenen Menge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vereinfacht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10 Treffer\ndavon 7 relevant\n\nPrecision = 0.7\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der ersten Candidate-Generation ist perfekte Precision oft weniger wichtig als guter Recall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sp\u00e4ter wird sie wichtiger.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">98. Recall und Precision stehen oft im Spannungsfeld<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein sehr breites Retrieval:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Top 100\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">erh\u00f6ht die Chance, relevante Dokumente zu finden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber es enth\u00e4lt m\u00f6glicherweise viele irrelevante Kandidaten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein sehr enges Retrieval:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Top 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kann hohe Precision besitzen, aber relevante Passagen verpassen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist der klassische Recall-Precision-Trade-off.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">99. Threshold Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Statt nur Top-k kann man Treffer auch anhand eines Mindest-Scores filtern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nur Similarity \u2265 0.70\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BM25 Score \u2265 X\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aber Thresholds sind problematisch, weil Scores query- und modellspezifisch sind.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">100. Top-k und Threshold kombinieren<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Man kann beide Strategien kombinieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hole maximal 20 Treffer\naber nur wenn Score \u2265 Threshold\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit verhindert man beispielsweise, dass bei v\u00f6llig irrelevanten Queries trotzdem 20 schlechte Treffer zur\u00fcckgegeben werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch hier muss der Threshold empirisch bestimmt werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">101. Null Result<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein gesundes Suchsystem muss zulassen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 brauchbare Treffer\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Es sollte nicht zwanghaft immer Ergebnisse liefern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Denn:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Top-k\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">bedeutet nur:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Die besten k aus dem vorhandenen Korpus.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Diese k sind gut.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">102. Das Top-k-Paradox<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn das Korpus \u00fcberhaupt nichts Relevantes enth\u00e4lt, liefert eine reine Top-k-Suche trotzdem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Top 5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese f\u00fcnf Treffer sind mathematisch die besten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber m\u00f6glicherweise alle ungeeignet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb ben\u00f6tigt ein RAG-System sp\u00e4ter zus\u00e4tzliche Answerability- oder Relevance-Pr\u00fcfungen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">103. Query Intent und Retrieval<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die Form einer Query beeinflusst, welche Suchart stark ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"INC-847291\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ist identifier-orientiert.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Welche Regeln gelten, wenn ich in den ersten Monaten k\u00fcndigen m\u00f6chte?\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ist semantisch.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Artikel 17 K\u00fcndigungsfrist\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ist gemischt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Search reduziert die Notwendigkeit, jede Query perfekt zu klassifizieren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">104. Filters versus Search Terms<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, die Query lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Was sagt das Personalreglement 2026 zur Probezeit?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Man k\u00f6nnte alles als Text suchen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Oder strukturierte Teile extrahieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>document_type = personalreglement\nyear = 2026\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und nur:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">retrieven.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das kann pr\u00e4ziser sein.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">105. Filter sind harte Bedingungen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Filter bedeutet typischerweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>muss erf\u00fcllt sein\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>year = 2026\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Dokument von 2025 wird ausgeschlossen, selbst wenn es semantisch perfekt passt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">106. Boosts sind weiche Bedingungen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Boost bedeutet dagegen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bevorzugen, aber nicht zwingend\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dokumente von 2026 h\u00f6her ranken\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Dokument von 2025 kann weiterhin auftauchen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Filter und Boosts d\u00fcrfen nicht verwechselt werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">107. Query Parser<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein <strong>Query Parser<\/strong> kann versuchen, strukturierte Bestandteile einer Anfrage zu erkennen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"Personalreglement 2026 Probezeit\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">wird zu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>text_query = \"Probezeit\"\ndocument_type = \"Personalreglement\"\nyear = 2026\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das kombiniert nat\u00fcrliche Sprache mit strukturierter Suche.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">108. Metadata-aware Retrieval<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Metadaten sauber w\u00e4hrend der Ingestion erzeugt wurden, kann Retrieval sie nutzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit zeigt sich wieder die Verbindung zu Teil 2:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gute Ingestion\n      \u2193\ngute Metadaten\n      \u2193\npr\u00e4zisere Filter\n      \u2193\nbesseres Retrieval\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">109. Retrieval ist ein System aus Signalen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Man sollte sich Retrieval nicht als einen einzelnen Score vorstellen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein modernes System kann viele Signale ber\u00fccksichtigen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Similarity\nBM25\nExact Match\nTitle Match\nMetadata\nRecency\nDocument Type\nPermissions\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach werden diese Signale kombiniert oder in mehreren Stufen verarbeitet.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">110. First-Stage Retrieval<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die erste Suchstufe wird h\u00e4ufig <strong>First-Stage Retrieval<\/strong> genannt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ihre Aufgabe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sehr viele Dokumente\n        \u2193\nkleine Kandidatenmenge\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sie muss:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>schnell,<\/li>\n\n\n\n<li>skalierbar,<\/li>\n\n\n\n<li>recall-stark<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dense ANN und BM25 sind typische First-Stage Retriever.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">111. Second-Stage Ranking<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Danach folgt h\u00e4ufig:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Second-Stage Ranking<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Reranking<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei werden nur noch die Kandidaten genauer bewertet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>100'000 Chunks\n      \u2193\nFirst Stage\n      \u2193\n50 Kandidaten\n      \u2193\nSecond Stage\n      \u2193\n5 Kandidaten\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Darum geht es ausf\u00fchrlich in Teil 5.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">112. Lexical Retrieval ist transparent<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Vorteil klassischer Suchverfahren ist ihre relative Erkl\u00e4rbarkeit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei einem Treffer kann man h\u00e4ufig nachvollziehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query-Term \"K\u00fcndigungsfrist\"\nkommt im Dokument vor\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ist im Korpus selten\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Embeddings sind wesentlich schwieriger direkt zu interpretieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Transparenz ist bei Debugging wertvoll.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">113. Dense Retrieval ist flexibler<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval kann dagegen Beziehungen erkennen, die lexikalisch nicht sichtbar sind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Query:\nWie verlasse ich meinen Arbeitgeber w\u00e4hrend der ersten Monate?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>W\u00e4hrend der Probezeit betr\u00e4gt die K\u00fcndigungsfrist sieben Tage.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist die grosse St\u00e4rke semantischer Repr\u00e4sentationen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">114. Hybrid Retrieval erh\u00f6ht Fehlertoleranz<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Dense Retrieval eine relevante Passage verpasst, kann Sparse sie finden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sparse wegen fehlender Wort\u00fcberschneidung scheitert, kann Dense sie finden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit entsteht Redundanz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense Failure\n   \u2193\nSparse kann retten\n\nSparse Failure\n   \u2193\nDense kann retten\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist ein wesentlicher Grund, warum Hybrid Retrieval so attraktiv ist.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">115. Hybrid Search l\u00f6st nicht alles<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Auch Hybrid Search kann scheitern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>relevante Information wurde schlecht gechunkt,<\/li>\n\n\n\n<li>OCR hat den Schl\u00fcsselbegriff zerst\u00f6rt,<\/li>\n\n\n\n<li>Query ist mehrdeutig,<\/li>\n\n\n\n<li>Antwort ben\u00f6tigt mehrere Dokumente,<\/li>\n\n\n\n<li>passende Passage liegt ausserhalb beider Top-k,<\/li>\n\n\n\n<li>\u00e4hnliche Versionen konkurrieren,<\/li>\n\n\n\n<li>der relevante Chunk enth\u00e4lt zu wenig Kontext.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Retrieval verbessert die Kandidatensuche.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es ersetzt nicht die restliche RAG-Pipeline.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">116. Beispiel einer vollst\u00e4ndigen Hybrid-Suche<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Angenommen, die Query lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Welche K\u00fcndigungsfrist gilt w\u00e4hrend der Probezeit?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Search:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. Dauer und K\u00fcndigung in der Probezeit\n2. K\u00fcndigung nach der Probezeit\n3. Allgemeine Regeln zum Arbeitsverh\u00e4ltnis\n4. Ferien w\u00e4hrend der Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">BM25:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. K\u00fcndigungsfrist w\u00e4hrend der Probezeit\n2. Allgemeine K\u00fcndigungsfristen\n3. Probezeit\n4. K\u00fcndigung von Arbeitsverh\u00e4ltnissen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">RRF k\u00f6nnte daraus erzeugen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. K\u00fcndigungsfrist w\u00e4hrend der Probezeit\n2. Dauer und K\u00fcndigung in der Probezeit\n3. Allgemeine K\u00fcndigungsfristen\n4. Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Danach kann ein Reranker die Kandidaten nochmals pr\u00e4ziser bewerten.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">117. Beispiel mit exakter ID<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Was steht zu INC-847291?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. allgemeines Incident-Dokument\n2. \u00e4hnliches Incident-Ticket\n3. INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. INC-847291\n2. anderer Text mit Incident-Begriffen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fusion:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier rettet das exakte lexikalische Signal das Ranking.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">118. Beispiel mit Paraphrase<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie kann ich in den ersten Monaten meinen Arbeitsvertrag beenden?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. K\u00fcndigung w\u00e4hrend der Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">BM25:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. Arbeitsvertrag allgemein\n2. erste Monate Besch\u00e4ftigung\n3. K\u00fcndigung\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fusion kann Dense stark ber\u00fccksichtigen und trotzdem zus\u00e4tzliche lexikalische Kandidaten behalten.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">119. Search Pipeline als Funnel<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Eine hilfreiche Darstellung ist ein Funnel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gesamter Index\n100'000 Chunks\n      \u2193\nDense + Sparse\n      \u2193\n100 Kandidaten\n      \u2193\nFusion\n      \u2193\n50 Kandidaten\n      \u2193\nReranking\n      \u2193\n10 Kandidaten\n      \u2193\nContext Selection\n      \u2193\n5 Chunks\n      \u2193\nLLM\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jede Stufe reduziert die Menge und erh\u00f6ht idealerweise die Qualit\u00e4t.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">120. Retrieval Quality beginnt bei Candidate Generation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Die wichtigste Frage der First Stage lautet:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Ist der richtige Chunk \u00fcberhaupt dabei?<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn nein:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Reranker\nLLM\nGrounding\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">k\u00f6nnen nichts mehr retten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Darum sollte Retrieval separat evaluiert werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">121. Query Set f\u00fcr Evaluation<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein guter Testbestand enth\u00e4lt unterschiedliche Query-Typen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zum Beispiel:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Exact Match<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INC-847291\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fachbegriff<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigungsfrist Probezeit\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paraphrase<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie schnell kann ich in den ersten Monaten k\u00fcndigen?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Synonym<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wie kann das Arbeitsverh\u00e4ltnis beendet werden?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mehrsprachig<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>What is the notice period during probation?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So zeigt sich, welche Retriever welche St\u00e4rken besitzen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">122. Ablation Testing<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Bei einem <strong>Ablation Test<\/strong> entfernt man gezielt eine Komponente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispielsweise:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense only\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">gegen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BM25 only\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">gegen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense + BM25 + RRF\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann vergleicht man die Retrieval-Metriken.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So l\u00e4sst sich messen, ob Hybrid Search tats\u00e4chlich einen Mehrwert bringt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">123. Warum Benchmarks allein nicht reichen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Embedding-Modell oder Retriever kann auf \u00f6ffentlichen Benchmarks hervorragend abschneiden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der eigene Korpus kann aber bestehen aus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>deutschen Vertr\u00e4gen,<\/li>\n\n\n\n<li>Abk\u00fcrzungen,<\/li>\n\n\n\n<li>internen IDs,<\/li>\n\n\n\n<li>Tabellen,<\/li>\n\n\n\n<li>Fachbegriffen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb muss Retrieval mit realistischen eigenen Queries evaluiert werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">124. Retrieval ist korpusabh\u00e4ngig<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Korpus voller nat\u00fcrlicher Fliesstexte stellt andere Anforderungen als:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>API-Dokumentationen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Support-Tickets\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Gesetzestexte\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">oder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Produktkataloge mit Artikelnummern\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die optimale Mischung aus Dense und Sparse kann deshalb unterschiedlich sein.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">125. Dokumentfrequenz ist korpusabh\u00e4ngig<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Auch IDF-Werte h\u00e4ngen direkt vom Korpus ab.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Begriff:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>K\u00fcndigung\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kann in einem allgemeinen Unternehmenswiki relativ selten sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In einer Sammlung arbeitsrechtlicher Dokumente kann er sehr h\u00e4ufig sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit ver\u00e4ndert sich seine IDF.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 ist deshalb intrinsisch korpusabh\u00e4ngig.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">126. Embeddings sind ebenfalls dom\u00e4nenabh\u00e4ngig<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval hat eine andere Art von Korpusabh\u00e4ngigkeit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein allgemeines Embedding-Modell kann gewisse Fachbegriffe schlechter repr\u00e4sentieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb gilt f\u00fcr beide Welten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nicht theoretisch entscheiden\nsondern\nmit echten Daten evaluieren\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">127. BM25 ist keine \u201ealte Version von Embeddings\u201c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Vorstellung ist falsch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 und Dense Retrieval modellieren Relevanz unterschiedlich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BM25 sagt im Kern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Welche wichtigen Query-Terme tauchen im Dokument auf?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval sagt eher:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Welche Passage liegt semantisch nahe an der Query?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Beide besitzen auch heute unterschiedliche St\u00e4rken.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">128. Sparse Retrieval ist kein Fallback<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse Search sollte nicht bloss als Notl\u00f6sung betrachtet werden, falls Dense Search versagt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In vielen Fachkorpora tr\u00e4gt Sparse Retrieval substanzielle Qualit\u00e4t bei.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Besonders bei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IDs\nNamen\nVersionen\nAkronymen\nFachterminologie\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">kann es der wichtigere Retriever sein.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">129. Dense Retrieval ist keine \u201eintelligentere Suche\u201c<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Es ist ebenfalls irref\u00fchrend, Dense Search pauschal als intelligentere Version klassischer Suche zu betrachten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie optimiert einen anderen Signaltyp.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein System, das:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AB-4711\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">nicht exakt findet, obwohl der String im Dokument steht, wirkt f\u00fcr den Benutzer nicht intelligent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Semantik ersetzt Pr\u00e4zision nicht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">130. Hybrid Search ist keine Magie<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Hybrid Search verbessert die Robustheit, erzeugt aber neue Designfragen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Welche Retriever?<\/li>\n\n\n\n<li>Wie grosses k?<\/li>\n\n\n\n<li>Welche Fusion?<\/li>\n\n\n\n<li>Welche Gewichte?<\/li>\n\n\n\n<li>Welche Filter?<\/li>\n\n\n\n<li>Welche Query-Normalisierung?<\/li>\n\n\n\n<li>Welche Kandidaten gehen ins Reranking?<\/li>\n\n\n\n<li>Wie werden Duplikate behandelt?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Auch Hybrid Search muss evaluiert werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">131. Begriffe dieses Teils<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Begriff<\/th><th>Bedeutung<\/th><\/tr><\/thead><tbody><tr><td><strong>Information Retrieval<\/strong><\/td><td>Fachgebiet zur Suche und Bewertung relevanter Informationen<\/td><\/tr><tr><td><strong>Lexical Retrieval<\/strong><\/td><td>Suche anhand von Begriffen beziehungsweise Textmerkmalen<\/td><\/tr><tr><td><strong>Sparse Retrieval<\/strong><\/td><td>Retrieval mit d\u00fcnn besetzten Repr\u00e4sentationen<\/td><\/tr><tr><td><strong>Inverted Index<\/strong><\/td><td>Term-zu-Dokument-Struktur f\u00fcr schnelle Textsuche<\/td><\/tr><tr><td><strong>Posting List<\/strong><\/td><td>Liste der Dokumente beziehungsweise Positionen eines Terms<\/td><\/tr><tr><td><strong>Term Frequency<\/strong><\/td><td>H\u00e4ufigkeit eines Terms in einem Dokument<\/td><\/tr><tr><td><strong>Document Frequency<\/strong><\/td><td>Anzahl der Dokumente, die einen Term enthalten<\/td><\/tr><tr><td><strong>IDF<\/strong><\/td><td>Gewichtung seltener Begriffe<\/td><\/tr><tr><td><strong>TF-IDF<\/strong><\/td><td>Kombination aus Termh\u00e4ufigkeit und Termseltenheit<\/td><\/tr><tr><td><strong>BM25<\/strong><\/td><td>klassisches probabilistisches Ranking-Verfahren<\/td><\/tr><tr><td><strong>k1<\/strong><\/td><td>BM25-Parameter f\u00fcr Term-Frequency-S\u00e4ttigung<\/td><\/tr><tr><td><strong>b<\/strong><\/td><td>BM25-Parameter f\u00fcr L\u00e4ngennormalisierung<\/td><\/tr><tr><td><strong>avgdl<\/strong><\/td><td>durchschnittliche Dokumentl\u00e4nge<\/td><\/tr><tr><td><strong>Analyzer<\/strong><\/td><td>Verarbeitungskette f\u00fcr Index- und Query-Text<\/td><\/tr><tr><td><strong>Stemming<\/strong><\/td><td>Reduktion auf Wortst\u00e4mme<\/td><\/tr><tr><td><strong>Lemmatization<\/strong><\/td><td>R\u00fcckf\u00fchrung auf linguistische Grundformen<\/td><\/tr><tr><td><strong>Stopwords<\/strong><\/td><td>sehr h\u00e4ufige, oft schwach unterscheidende W\u00f6rter<\/td><\/tr><tr><td><strong>N-Gram<\/strong><\/td><td>Folge von n W\u00f6rtern oder Zeichen<\/td><\/tr><tr><td><strong>Phrase Search<\/strong><\/td><td>Suche nach exakten Wortfolgen<\/td><\/tr><tr><td><strong>Fuzzy Search<\/strong><\/td><td>fehlertolerante Textsuche<\/td><\/tr><tr><td><strong>Edit Distance<\/strong><\/td><td>Mass f\u00fcr Zeichenunterschiede<\/td><\/tr><tr><td><strong>Field Boosting<\/strong><\/td><td>st\u00e4rkere Gewichtung bestimmter Dokumentfelder<\/td><\/tr><tr><td><strong>Query Expansion<\/strong><\/td><td>Erweiterung der Query um zus\u00e4tzliche Begriffe<\/td><\/tr><tr><td><strong>Learned Sparse Retrieval<\/strong><\/td><td>neuronales sparse Retrieval<\/td><\/tr><tr><td><strong>Hybrid Search<\/strong><\/td><td>Kombination mehrerer Retrieval-Verfahren<\/td><\/tr><tr><td><strong>Score Fusion<\/strong><\/td><td>Kombination numerischer Retriever-Scores<\/td><\/tr><tr><td><strong>Rank Fusion<\/strong><\/td><td>Kombination von Ranglisten<\/td><\/tr><tr><td><strong>RRF<\/strong><\/td><td>Reciprocal Rank Fusion<\/td><\/tr><tr><td><strong>Candidate Generation<\/strong><\/td><td>erste breite Erzeugung relevanter Kandidaten<\/td><\/tr><tr><td><strong>First-Stage Retrieval<\/strong><\/td><td>schnelle Retrieval-Stufe \u00fcber den gesamten Index<\/td><\/tr><tr><td><strong>Second-Stage Ranking<\/strong><\/td><td>genauere Bewertung einer kleineren Kandidatenmenge<\/td><\/tr><tr><td><strong>Query Routing<\/strong><\/td><td>Auswahl geeigneter Retriever f\u00fcr eine Query<\/td><\/tr><tr><td><strong>Filter<\/strong><\/td><td>harte Einschr\u00e4nkung des Suchraums<\/td><\/tr><tr><td><strong>Boost<\/strong><\/td><td>weiche Bevorzugung eines Kandidaten<\/td><\/tr><tr><td><strong>Top-k<\/strong><\/td><td>Anzahl der h\u00f6chsten Suchtreffer<\/td><\/tr><tr><td><strong>Threshold<\/strong><\/td><td>Mindestscore f\u00fcr akzeptierte Treffer<\/td><\/tr><tr><td><strong>Precision<\/strong><\/td><td>Anteil relevanter Ergebnisse unter den gelieferten Ergebnissen<\/td><\/tr><tr><td><strong>Recall<\/strong><\/td><td>Anteil gefundener relevanter Informationen<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">132. Dense und Sparse in einer \u00dcbersicht<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Eigenschaft<\/th><th>Dense Retrieval<\/th><th>Sparse Retrieval<\/th><\/tr><\/thead><tbody><tr><td>Grundlage<\/td><td>Embeddings<\/td><td>Terms \/ Sparse Weights<\/td><\/tr><tr><td>St\u00e4rke<\/td><td>Semantik<\/td><td>exakte Begriffe<\/td><\/tr><tr><td>Synonyme<\/td><td>stark<\/td><td>abh\u00e4ngig von Expansion<\/td><\/tr><tr><td>Paraphrasen<\/td><td>stark<\/td><td>eher schwach<\/td><\/tr><tr><td>IDs<\/td><td>potenziell schw\u00e4cher<\/td><td>sehr stark<\/td><\/tr><tr><td>Eigennamen<\/td><td>gut bis unterschiedlich<\/td><td>stark<\/td><\/tr><tr><td>Erkl\u00e4rbarkeit<\/td><td>geringer<\/td><td>h\u00f6her<\/td><\/tr><tr><td>Index<\/td><td>Vector Index<\/td><td>Inverted Index<\/td><\/tr><tr><td>typische Verfahren<\/td><td>ANN, HNSW<\/td><td>BM25, TF-IDF<\/td><\/tr><tr><td>typische Repr\u00e4sentation<\/td><td>Dense Vector<\/td><td>Sparse Vector<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Kombination lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dense\n   +\nSparse\n   \u2193\nHybrid Retrieval\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">133. Die vollst\u00e4ndige Retrieval-Landkarte bis hierhin<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wir k\u00f6nnen die ersten vier Teile jetzt zusammenf\u00fchren.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>                INGESTION\n\nDokument\n   \u2193\nParsing \/ OCR\n   \u2193\nStruktur\n   \u2193\nChunking\n   \u2193\nChunks\n   \u2502\n   \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n   \u2502               \u2502\n   \u25bc               \u25bc\nEmbedding      Sparse Index\n   \u2502               \u2502\n   \u25bc               \u25bc\nVector Index   Inverted Index\n\n\n                   QUERY\n\n                    Frage\n                      \u2502\n             \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n             \u25bc                 \u25bc\n      Query Embedding      Query Terms\n             \u2502                 \u2502\n             \u25bc                 \u25bc\n       Dense Search       Sparse Search\n             \u2502                 \u2502\n             \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                      \u25bc\n                  Fusion\n                      \u2193\n             Hybrid Candidates\n                      \u2193\n                 Reranking\n                      \u2193\n              Context Selection\n                      \u2193\n                    LLM\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Damit haben wir den Kern moderner Retrieval-Pipelines erreicht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">134. Die wichtigste Erkenntnis aus Teil 4<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dense Retrieval beantwortet grob:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Welche Texte bedeuten etwas \u00c4hnliches?<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Sparse Retrieval beantwortet grob:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Welche Texte enthalten die wichtigen gesuchten Begriffe?<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Keine dieser Fragen ist identisch mit:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Welche Passage beantwortet die Benutzerfrage am besten?<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Deshalb kombiniert man beide zun\u00e4chst zur Candidate Generation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Danach folgt eine neue Aufgabe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wir haben gute Kandidaten.\nWelche davon sind wirklich die besten?\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Genau hier beginnt <strong>Reranking<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Bi-Encoder kann Millionen Chunks schnell auf wenige Kandidaten reduzieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein BM25-Retriever kann exakte Begriffe zuverl\u00e4ssig erg\u00e4nzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RRF kann beide Ranglisten zusammenf\u00fchren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber eine Passage kann immer noch:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>semantisch \u00e4hnlich,<\/li>\n\n\n\n<li>lexikalisch passend,<\/li>\n\n\n\n<li>und trotzdem nicht die richtige Antwort<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die n\u00e4chste Stufe muss deshalb die Query und jeden Kandidaten wesentlich genauer miteinander vergleichen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit kommen wir zu:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cross-Encodern, Rerankern, MMR, Query Rewrite, Multi-Query und HyDE.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist Teil 5.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">RAG von Grund auf<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 1 \u2013 RAG verstehen<\/strong><br>LLM, parametrisches Wissen, Kontext, Retrieval, Augmentation, Generation und Grounding.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 2 \u2013 Dokumente, Parsing und Chunking<\/strong><br>Ingestion, Parser, OCR, Dokumentstruktur, Chunks, Overlap, Structured Chunking, Parent-Child und Small-to-Big.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 3 \u2013 Embeddings und Vektorsuche<\/strong><br>Embeddings, Dense Vectors, Bi-Encoder, Cosine Similarity, ANN, HNSW und Vector Stores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 4 \u2013 Information Retrieval und Hybrid Search<\/strong><br>Inverted Index, TF, IDF, TF-IDF, BM25, Sparse Retrieval, Hybrid Search, Score Fusion und Reciprocal Rank Fusion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 5 \u2013 Reranking und Retrieval-Strategien<\/strong><br>Cross-Encoder, Top-k, MMR, Query Rewrite, Multi-Query, HyDE und Context Selection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 6 \u2013 Kontext, Grounding und Antworten<\/strong><br>Kontextfenster, Token-Budget, Lost in the Middle, Answerability, Faithfulness und Citations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 7 \u2013 Advanced RAG<\/strong><br>Naive RAG, Modular RAG, Multi-Hop, Self-RAG, CRAG, RAPTOR, GraphRAG, ColBERT und Agentic RAG.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Teil 8 \u2013 Evaluation, Sicherheit und Abgrenzung<\/strong><br>Recall, Precision, Hit@k, MRR, nDCG, RAG-Evaluation, Prompt Injection, RAG Poisoning, Fine-Tuning und Tool Calling.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Teil 3 ging es um Embeddings und Vektorsuche. Wir haben gesehen, dass Dense Retrieval besonders stark darin ist, semantisch \u00e4hnliche Inhalte zu finden. Beispiel: Dokument: Die W\u00f6rter stimmen nur teilweise \u00fcberein. Die Bedeutung ist jedoch sehr \u00e4hnlich. Embeddings k\u00f6nnen genau diese Beziehung modellieren. Aber Dense Retrieval hat Grenzen. Was passiert bei: oder: oder: oder: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":363,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41,61],"tags":[201,192,200,194],"class_list":["post-348","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cost-aware-ai-systems","category-retrieval-augmented-generation","tag-hybrid-search","tag-rag","tag-rag-part-4","tag-series"],"_links":{"self":[{"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/posts\/348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348"}],"version-history":[{"count":1,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":349,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/posts\/348\/revisions\/349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=\/wp\/v2\/media\/363"}],"wp:attachment":[{"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fabricioruch.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}