[{"data":1,"prerenderedAt":722},["ShallowReactive",2],{"blog-embedding-model-selection-2026-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":27,"sources":37,"cover":74,"og":75,"expertise":76,"locales":77,"lang":79,"title":81,"description":82,"coverAlt":83,"metaTitle":84,"takeaways":85,"faq":91,"toc":107,"blocks":141,"others":496},"embedding-model-selection-2026","2026-10-17",9,"rag",[9,10,11,12,13],"Embeddings","RAG","MTEB","Vector search","Model selection",[15,16,17,18,19,20,21,22,23,24,25,26],"best embedding model 2026","how to choose an embedding model","embedding model comparison","MTEB leaderboard explained","RTEB benchmark","open source embedding model","multilingual embedding model","voyage-4 vs openai embeddings","Qwen3-Embedding","EmbeddingGemma","embedding model for RAG","switching embedding models re-embed",[28,31,34],{"name":29,"url":30},"Word embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWord_embedding",{"name":32,"url":33},"Information retrieval","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInformation_retrieval",{"name":35,"url":36},"Discounted cumulative gain","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDiscounted_cumulative_gain",[38,41,44,47,50,53,56,59,62,65,68,71],{"title":39,"url":40},"Enevoldsen et al.: MMTEB, Massive Multilingual Text Embedding Benchmark (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.13595",{"title":42,"url":43},"Hugging Face: Introducing RTEB, a new standard for retrieval evaluation (Oct 2025)","https:\u002F\u002Fhuggingface.co\u002Fblog\u002Frteb",{"title":45,"url":46},"OpenAI: Vector embeddings guide","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fembeddings",{"title":48,"url":49},"OpenAI: API pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fpricing",{"title":51,"url":52},"Voyage AI: The Voyage 4 model family, shared embedding space with MoE architecture (Jan 2026)","https:\u002F\u002Fblog.voyageai.com\u002F2026\u002F01\u002F15\u002Fvoyage-4\u002F",{"title":54,"url":55},"Voyage AI: Text embeddings documentation","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fembeddings",{"title":57,"url":58},"Voyage AI: Pricing","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fpricing",{"title":60,"url":61},"Google: Gemini API embeddings documentation","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fembeddings",{"title":63,"url":64},"Google: Gemini API pricing","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fpricing",{"title":66,"url":67},"Cohere: Embed models documentation","https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fcohere-embed",{"title":69,"url":70},"Qwen: Qwen3-Embedding-8B model card","https:\u002F\u002Fhuggingface.co\u002FQwen\u002FQwen3-Embedding-8B",{"title":72,"url":73},"Google Developers Blog: Introducing EmbeddingGemma (Sep 2025)","https:\u002F\u002Fdevelopers.googleblog.com\u002Fen\u002Fintroducing-embeddinggemma\u002F","\u002Fimages\u002Fblog\u002Fembedding-model-selection-2026\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fembedding-model-selection-2026\u002Fog.jpg","ai-engineer",[78,79,80],"en","de","hu","Embedding-Modell wählen 2026: Leaderboards, Kosten und ein Vergleichstest mit eigenen Daten","Wie man 2026 ein Embedding-Modell für RAG wählt: was MTEB und RTEB aussagen, API oder offene Gewichte, Preise, Dimensionen und ein einwöchiger Vergleichstest.","Drei Säulen aus gestapelten Blöcken, die mittlere am höchsten, jede mit kurzem Balken und weiter Klammer.","Embedding-Modell wählen 2026 · Balázs Csorba",[86,87,88,89,90],"Die Vektorräume verschiedener Modelle sind inkompatibel, ein Wechsel kostet also ein vollständiges Neu-Embedding; Google schreibt das für gemini-embedding-001 zu gemini-embedding-2 ausdrücklich.","Der MTEB-Rang ist ein Filter für die Shortlist, keine Entscheidung; RTEB ergänzt private Datensätze, weil auf öffentliche Benchmarks trainiert werden kann.","Die Preise liegen rund 10-fach auseinander, von 0,02 $ pro Million Tokens für text-embedding-3-small und voyage-4-lite bis 0,20 $ für gemini-embedding-2, doch die Zeit für Neuindexierung kostet meist mehr als die Tokens.","Modelle mit offenen Gewichten wie Qwen3-Embedding und EmbeddingGemma sind stark genug für eine ernsthafte Basislinie, besonders wenn Daten auf eigenen Servern bleiben müssen.","Entscheiden per Vergleichstest: 100 bis 300 echte Anfragen mit markierten relevanten Chunks, Recall@10 und nDCG@10 pro Kandidat, in etwa einer Woche.",[92,95,98,101,104],{"q":93,"a":94},"Was ist 2026 das beste Embedding-Modell?","Es gibt nicht das eine beste. Leaderboards ändern sich monatlich, und Anbieter veröffentlichen Benchmarks, die sie selbst durchgeführt haben. Drei bis fünf Kandidaten wählen, die Sprachen, Kontextlänge und Hosting-Vorgaben abdecken, und sie an eigenen Anfragen messen.",{"q":96,"a":97},"Ist das MTEB-Leaderboard verlässlich?","Es ist ein guter Ausgangspunkt für eine Shortlist. Seine Schwäche: Öffentliche Testsets können in Trainingsdaten gelangen. Deshalb haben die MTEB-Betreuer im Oktober 2025 RTEB mit privaten Datensätzen ergänzt, die sie selbst auswerten.",{"q":99,"a":100},"Kann ich das Embedding-Modell ohne Neu-Embedding wechseln?","Meist nicht. Vektoren verschiedener Modelle liegen in verschiedenen Räumen. Ausnahmen sind Modellfamilien mit gemeinsamem Raum wie die Voyage-4-Familie, bei der mit voyage-4-large eingebettete Dokumente mit voyage-4-lite-Anfragen durchsucht werden können.",{"q":102,"a":103},"Sollte ich ein Open-Source-Embedding-Modell nutzen?","Ja, wenn Daten auf eigener Infrastruktur bleiben müssen, wenn das Anfragevolumen API-Aufrufe teuer macht, oder als Basislinie im Vergleichstest. Modelle wie Qwen3-Embedding (Apache 2.0) und EmbeddingGemma sind klein genug für gewöhnliche Server.",{"q":105,"a":106},"Wie viele Dimensionen brauche ich?","Meist weniger als den Standardwert. Modelle mit Matryoshka-Training erlauben, Dimensionen beim Aufruf zu kürzen; Recall bei 256, 512 und 1024 Dimensionen messen und die kleinste Größe im Qualitätsbudget behalten.",[108,111,114,117,120,123,126,129,132,135,138],{"id":109,"title":110},"why-it-is-sticky","Warum ist das Embedding-Modell eine langfristige Entscheidung?",{"id":112,"title":113},"leaderboards","Was sagen MTEB und RTEB tatsächlich aus?",{"id":115,"title":116},"shortlist","Welche Modelle gehören 2026 auf die Shortlist?",{"id":118,"title":119},"criteria","Welche Kriterien zählen mehr als der Leaderboard-Rang?",{"id":121,"title":122},"hosted-or-open","Gehostete API oder offene Gewichte?",{"id":124,"title":125},"shared-spaces","Was ändern gemeinsame Embedding-Räume?",{"id":127,"title":128},"details","Welche API-Details kosten unbemerkt Qualität?",{"id":130,"title":131},"bake-off","Wie führt man einen Vergleichstest mit eigenen Daten durch?",{"id":133,"title":134},"migrations","Wie plant man für das nächste Modell?",{"id":136,"title":137},"my-defaults","Was sind Ende 2026 sinnvolle Standardwahlen?",{"id":139,"title":140},"sources","Quellen",[142,146,155,158,161,164,165,168,171,174,175,178,294,302,303,306,349,350,358,361,362,365,368,369,372,402,404,405,408,417,434,441,442,449,450,453,456,457],{"type":143,"content":144},"paragraph",[145],"Das Embedding-Modell ist der unsichtbarste Teil eines RAG-Systems und einer der am schwersten zu ändernden. Jeder Chunk im Index wurde von ihm erzeugt, jede Anfrage muss durch dasselbe Modell, und Vektoren eines anderen Modells sind nicht vergleichbar. Wer schlecht wählt, merkt es Monate später, wenn die Korrektur ein Neu-Embedding des ganzen Korpus bedeutet.",{"type":143,"content":147},[148,149,154],"Dieser Leitfaden zeigt, wie ich im Oktober 2026 eines auswähle: wofür Leaderboards taugen, welche Modelle auf eine Shortlist gehören, welche Eigenschaften wichtiger sind als der Rang und wie man einen kleinen Vergleichstest mit eigenen Daten durchführt. Er ergänzt die schrittweise ",{"tag":150,"to":151,"children":152},"link","\u002Fblog\u002Frag-pipeline-chunking-hybrid-search-reranking",[153],"produktive RAG-Pipeline",", die ein bereits gewähltes Modell voraussetzt.",{"type":156,"level":157,"id":109,"text":110},"heading",2,{"type":143,"content":159},[160],"Ein Embedding ist eine Position in einem Raum, den nur ein Modell definiert. Zwei Modelle können beide 1.024 Zahlen pro Text ausgeben und füreinander trotzdem bedeutungslos sein, weil jedes seine eigene Geometrie gelernt hat. Google sagt es für die eigenen Modelle deutlich: Die Räume von gemini-embedding-001 und gemini-embedding-2 sind inkompatibel, ein Wechsel erfordert das Neu-Embedding aller vorhandenen Daten.",{"type":143,"content":162},[163],"Die Token-Rechnung fürs Neu-Embedding ist selten das Problem. Ein Korpus von 50 Millionen Tokens kostet mit text-embedding-3-large bei 0,13 $ pro Million einmalig 6,50 $. Die echten Kosten sind Pipeline-Zeit: neu parsen, neu chunken, Indizes neu bauen, Evaluationen wiederholen und den Verkehr ohne Ausfall umstellen. Deshalb verdient die Wahl eine Woche Messung statt eines Blicks aufs Leaderboard.",{"type":156,"level":157,"id":112,"text":113},{"type":143,"content":166},[167],"MTEB ist der öffentliche Standard-Benchmark für Embedding-Modelle. Seine mehrsprachige Erweiterung MMTEB umfasst über 500 qualitätsgeprüfte Aufgaben in mehr als 250 Sprachen, darunter Retrieval, Klassifikation, Clustering, Befolgen von Anweisungen, lange Dokumente und Code. Ein Befund des MMTEB-Papers ist merkenswert: Modelle mit Milliarden Parametern führen bei manchen Teilmengen, doch das beste öffentlich verfügbare Modell der Studie war multilingual-e5-large-instruct mit nur 560 Millionen Parametern. Größe ist nicht dasselbe wie Eignung für die eigene Aufgabe.",{"type":143,"content":169},[170],"Die Schwäche eines öffentlichen Benchmarks ist, dass er öffentlich ist. Wenn Testsets sich mit Trainingsdaten überschneiden, schneiden Modelle gut ab, ohne zu generalisieren; das Team von Hugging Face nennt das Lernen für den Test. Die Antwort, RTEB, startete am 1. Oktober 2025 als Beta: ein Retrieval-Benchmark mit offenen und privaten Datensätzen, die nur die MTEB-Betreuer auswerten, für Recht, Gesundheit, Code und Finanzen in 20 Sprachen, gereiht nach nDCG@10.",{"type":143,"content":172},[173],"Anbieter-Benchmarks sind eine dritte Kategorie und brauchen die meiste Vorsicht. Voyage berichtet, dass voyage-4-large OpenAIs text-embedding-3-large im Schnitt über die RTEB-Datensätze um 14,05 % und Gemini Embedding 001 um 3,87 % schlägt, gemessen von Voyage selbst. Solche Zahlen helfen bei der Frage, was man testet, nicht, was man kauft.",{"type":156,"level":157,"id":115,"text":116},{"type":143,"content":176},[177],"Die Tabelle zeigt Modelle, die ich heute für ein neues RAG-Projekt in Betracht ziehen würde, mit Angaben aus der Dokumentation oder Model Card des jeweiligen Anbieters, Stand Oktober 2026. Preise pro Million Eingabe-Tokens zum Standardtarif.",{"type":179,"head":180,"rows":191},"table",[181,183,185,187,189],[182],"Modell",[184],"Dimensionen",[186],"Kontext",[188],"Preis \u002F 1 Mio.",[190],"Hinweise",[192,206,218,231,241,253,270,283],[193,198,200,202,204],[194],{"tag":195,"children":196},"code",[197],"text-embedding-3-small",[199],"1536",[201],"8,192",[203],"$0.02",[205],"Günstiger Standard, kürzbar",[207,211,213,214,216],[208],{"tag":195,"children":209},[210],"text-embedding-3-large",[212],"3072, kürzbar",[201],[215],"$0.13",[217],"Breit unterstützt, ältere Generation",[219,223,225,227,229],[220],{"tag":195,"children":221},[222],"voyage-4-large",[224],"256–2048",[226],"32,000",[228],"$0.12",[230],"Gemeinsamer Raum mit voyage-4, lite, nano",[232,236,237,238,239],[233],{"tag":195,"children":234},[235],"voyage-4-lite",[224],[226],[203],[240],"Günstiges Anfragemodell für einen large-Index",[242,246,248,249,251],[243],{"tag":195,"children":244},[245],"gemini-embedding-2",[247],"128–3072",[201],[250],"0,20 $, Batch 0,10 $",[252],"Text, Bild, Audio, Video, PDF",[254,262,264,266,268],[255,258,259],{"tag":195,"children":256},[257],"embed-v4.0"," \u002F ",{"tag":195,"children":260},[261],"embed-v5.0-pro",[263],"256–1536 \u002F 256–2048",[265],"128k",[267],"siehe Cohere-Preise",[269],"Text und Bilder, lange Eingaben",[271,275,277,279,281],[272,274],{"tag":195,"children":273},[23]," 0.6B\u002F4B\u002F8B",[276],"32–4096 (8B)",[278],"32k",[280],"offene Gewichte",[282],"Apache 2.0, über 100 Sprachen",[284,287,289,291,292],[285],{"tag":195,"children":286},[24],[288],"768 → 128",[290],"2k",[280],[293],"308 Mio. Parameter, quantisiert unter 200 MB",{"type":143,"content":295},[296,297,301],"Zwei Details aus den Model Cards sind für deutsche oder ungarische Inhalte wichtig. Qwen3-Embedding-8B lag am 5. Juni 2025 mit 70,58 Punkten auf Platz eins des mehrsprachigen MTEB-Leaderboards, und die Autoren empfehlen, Aufgabenanweisungen auch bei mehrsprachiger Nutzung auf Englisch zu schreiben. Google bezeichnet EmbeddingGemma als das bestplatzierte offene mehrsprachige Text-Embedding-Modell unter 500 Millionen Parametern auf MTEB, mit einem Kontext von nur rund 2.000 Tokens. Meine Notizen zu ",{"tag":150,"to":298,"children":299},"\u002Fblog\u002Fmultilingual-rag-german-hungarian",[300],"mehrsprachigem RAG für Deutsch und Ungarisch"," behandeln, was sich für diese Sprachen sonst ändert.",{"type":156,"level":157,"id":118,"text":119},{"type":143,"content":304},[305],"Ein Unterschied von zwei Punkten in einem aggregierten Benchmark verschwindet neben einer Fehlanpassung bei einer dieser Eigenschaften:",{"type":307,"items":308},"list",[309,315,324,334,339,344],[310,314],{"tag":311,"children":312},"strong",[313],"Sprachen und Domäne."," Die Sprachen prüfen, in denen Nutzer tatsächlich fragen, inklusive gemischtsprachiger Anfragen, und ob das Modell Text wie den eigenen gesehen hat: Artikelnummern, juristisches Deutsch, Quellcode.",[316,319,320,323],{"tag":311,"children":317},[318],"Kontextlänge gegenüber Chunk-Größe."," Ein Modell mit 2.000 Tokens reicht für Chunks mit 400 Tokens; einen Abschnitt mit 6.000 Tokens schneidet es stillschweigend ab. Voyage kürzt zu lange Eingaben standardmäßig, außer man setzt ",{"tag":195,"children":321},[322],"truncation"," auf false.",[325,328,329,333],{"tag":311,"children":326},[327],"Dimensionen und Ausgabetypen."," Matryoshka-Modelle erlauben, beim Aufruf einen kleineren Vektor zu wählen, und mehrere APIs liefern direkt int8- oder Binärvektoren. Beides senkt den Speicherbedarf des Index, wie in ",{"tag":150,"to":330,"children":331},"\u002Fblog\u002Fembedding-quantization-binary-matryoshka",[332],"Embedding-Quantisierung"," beschrieben.",[335,338],{"tag":311,"children":336},[337],"Hosting und Datenresidenz."," Ob Dokumente die eigene Infrastruktur verlassen dürfen und in welche Region, entscheidet zwischen gehosteter API und offenen Gewichten, noch bevor es die Qualität tut.",[340,343],{"tag":311,"children":341},[342],"Anfragelatenz und Volumen."," Jede Suche bettet zuerst eine Anfrage ein. Ein Netzwerk-Roundtrip pro Anfrage ist für einen Chat-Assistenten in Ordnung, bei Suche während der Eingabe aber spürbar.",[345,348],{"tag":311,"children":346},[347],"Familie und Lebensdauer."," Eine Modellfamilie mit gemeinsamem Raum, veröffentlichter Abkündigungspolitik und mehreren Größen lässt später mehr Spielraum als ein einzelner Checkpoint.",{"type":156,"level":157,"id":121,"text":122},{"type":143,"content":351},[352,353,357],"Gehostete Modelle sind der schnellste Start: keine GPUs, kein Serving-Stack und Batch-Preise für den großen Indexierungslauf. Google bietet seine Embedding-Modelle über die Batch-API zum halben Standardpreis an, Voyage rechnet Batch-Anfragen 33 % unter dem Standardtarif ab. Der Preis dafür: Jedes Dokument und jede Anfrage geht durch einen Dritten, was die Wahl zur Datenschutzfrage macht. Regionssteuerung und Aufbewahrungsoptionen habe ich in ",{"tag":150,"to":354,"children":355},"\u002Fblog\u002Fgdpr-llm-api-eu-data-residency",[356],"DSGVO und LLM-Datenresidenz"," behandelt.",{"type":143,"content":359},[360],"Modelle mit offenen Gewichten verlagern die Arbeit zu einem selbst, sind aber klein geworden. EmbeddingGemma hat rund 308 Millionen Parameter und bleibt quantisiert unter 200 MB RAM; die Qwen3-Embedding-Reihe beginnt bei 0,6 Milliarden Parametern unter Apache 2.0; Voyage hat voyage-4-nano unter Apache 2.0 auf Hugging Face veröffentlicht. Auf einem gewöhnlichen CPU-Server schaffen diese Modelle das Einbetten von Anfragen problemlos, und der große Indexierungslauf kann ein einmaliger Job auf einer gemieteten GPU sein. Selbst wer am Ende ein gehostetes Modell nimmt, erfährt durch ein offenes Modell im Vergleichstest, was der Aufpreis tatsächlich bringt.",{"type":156,"level":157,"id":124,"text":125},{"type":143,"content":363},[364],"Die jüngste Verschiebung sind Modellfamilien, die in einen gemeinsamen Raum trainiert wurden. Die vier Voyage-4-Modelle erzeugen kompatible Embeddings, sodass einmal mit voyage-4-large eingebettete Dokumente mit Anfragen aus voyage-4-lite oder dem offenen voyage-4-nano durchsucht werden können. Voyage nennt das asymmetrisches Retrieval. Die Indexqualität kommt vom teuren Modell, Kosten und Latenz pro Anfrage vom günstigen, und das Anfragemodell lässt sich später wechseln, ohne den Index anzufassen.",{"type":143,"content":366},[367],"Die von Voyage dokumentierte Kompatibilität umfasst die vier Voyage-4-Modelle und nichts Älteres; beim Wechsel von der Voyage-3-Generation also ein Neu-Embedding einplanen. Ein gemeinsamer Raum ist ein Grund, eine Familie zu bevorzugen, aber kein Grund, nicht mehr zu speichern, welches Modell jeden Vektor erzeugt hat.",{"type":156,"level":157,"id":127,"text":128},{"type":143,"content":370},[371],"Die meisten schlechten Ergebnisse in Vergleichstests, die ich sehe, kommen von falsch aufgerufenen Modellen, nicht vom Modell. Drei Details lohnen den Abgleich mit der Dokumentation für jeden Kandidaten:",{"type":307,"ordered":373,"items":374},true,[375,388,397],[376,379,380,383,384,387],{"tag":311,"children":377},[378],"Anfrage- und Dokumentmodus."," Voyage stellt für ",{"tag":195,"children":381},[382],"input_type"," query und document jeweils einen anderen Prompt voran. Gemini-embedding-001 nimmt einen ",{"tag":195,"children":385},[386],"task_type"," wie RETRIEVAL_QUERY, gemini-embedding-2 erwartet ein Aufgabenpräfix im Text. Qwen3-Embedding erwartet auf Anfrageseite eine Anweisung, was laut Autoren die Ergebnisse typischerweise um 1 bis 5 % verbessert.",[389,392,393,396],{"tag":311,"children":390},[391],"Normalisierung nach dem Kürzen."," OpenAI-Embeddings sind auf Länge 1 normalisiert, und der Parameter ",{"tag":195,"children":394},[395],"dimensions"," erhält das. Wer einen Vektor selbst kürzt oder gemini-embedding-001 unter 3.072 Dimensionen nutzt, muss ihn vor dem Skalarprodukt neu normalisieren.",[398,401],{"tag":311,"children":399},[400],"Kürzen langer Eingaben."," Wissen, ob die API zu lange Eingaben abschneidet oder ablehnt, und die Token-Zahl pro Chunk protokollieren, damit eine Chunker-Änderung Chunks nicht unbemerkt über das Limit schiebt.",{"type":195,"code":403},"import numpy as np\n\ndef prepare(vec: list[float], dims: int | None = None) -> np.ndarray:\n    \"\"\"Truncate a Matryoshka embedding and re-normalize it for dot-product search.\"\"\"\n    v = np.asarray(vec, dtype=np.float32)\n    if dims is not None:\n        v = v[:dims]               # keep the leading dimensions only\n    return v \u002F np.linalg.norm(v)   # unit length again, so dot product == cosine\n\n# Store the model id next to every vector: vectors from different models never mix.\nrow = {\"chunk_id\": \"doc-42#3\", \"model\": \"voyage-4-large\", \"dims\": 1024,\n       \"embedding\": prepare(raw_vector, 1024).tolist()}",{"type":156,"level":157,"id":130,"text":131},{"type":143,"content":406},[407],"Ein nützlicher Vergleichstest ist klein und dauert etwa eine Woche. Man braucht echte Anfragen, die Chunks, die sie beantworten, und dieselbe Chunking-Strategie für jeden Kandidaten, damit nur das Modell variiert.",{"type":409,"attrs":410,"inner":414,"caption":415},"diagram",{"viewBox":411,"role":412,"aria-labelledby":413},"0 0 720 170","img","emb1-t emb1-d","\u003Ctitle id=\"emb1-t\">Vergleichstest für Embedding-Modelle\u003C\u002Ftitle>\u003Cdesc id=\"emb1-d\">Echte Anfragen mit markierten relevanten Chunks werden von jedem Kandidatenmodell über denselben gechunkten Korpus eingebettet. Recall und nDCG werden pro Kandidat berechnet und zusammen mit Kosten und Latenz verglichen, um ein Modell zu wählen.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"emb1-ah\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"20\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"79\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Anfragen\u003C\u002Ftext>\u003Ctext x=\"79\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">100–300, markiert\u003C\u002Ftext>\u003Cpath d=\"M138 85H158\" class=\"d-line\" marker-end=\"url(#emb1-ah)\" \u002F>\u003Crect x=\"160\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"220\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Gleiche Chunks\u003C\u002Ftext>\u003Ctext x=\"220\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">ein Chunker\u003C\u002Ftext>\u003Cpath d=\"M279 85H299\" class=\"d-line\" marker-end=\"url(#emb1-ah)\" \u002F>\u003Crect x=\"301\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"360\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">3–5 Modelle\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">inkl. 1 offenes\u003C\u002Ftext>\u003Cpath d=\"M419 85H439\" class=\"d-line\" marker-end=\"url(#emb1-ah)\" \u002F>\u003Crect x=\"441\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"500\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Metriken\u003C\u002Ftext>\u003Ctext x=\"500\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">recall@10, nDCG@10\u003C\u002Ftext>\u003Cpath d=\"M560 85H580\" class=\"d-line\" marker-end=\"url(#emb1-ah)\" \u002F>\u003Crect x=\"582\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"641\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Entscheidung\u003C\u002Ftext>\u003Ctext x=\"641\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">+ Kosten, Latenz\u003C\u002Ftext>",[416],"Chunker, Korpus und Anfragen bleiben fix; zwischen den Läufen ändert sich nur das Embedding-Modell.",{"type":307,"ordered":373,"items":418},[419,421,423,425,432],[420],"100 bis 300 echte Anfragen aus Suchlogs, Support-Tickets oder von Nutzern sammeln und die Chunks markieren, die jede beantworten. Kurze Stichwortanfragen und lange Fragen einschließen, und jede Sprache, in der Nutzer schreiben.",[422],"Drei bis fünf Kandidaten wählen: ein günstiges gehostetes Modell, ein starkes gehostetes Modell, ein Modell mit offenen Gewichten und das, was das aktuelle System nutzt.",[424],"Dieselben Chunks mit jedem einbetten, mit korrektem Anfrage- und Dokumentmodus, in der Dimension, die man ausrollen würde.",[426,427,431],"Recall@10 und nDCG@10 pro Kandidat messen und dann mit hybrider Suche und Reranker wiederholen, weil ein Reranker Unterschiede der ersten Stufe verdecken kann. Die Metriken erklärt ",{"tag":150,"to":428,"children":429},"\u002Fblog\u002Frag-evaluation-metrics",[430],"RAG evaluieren",".",[433],"Qualität, Indexgröße, Kosten pro Million Tokens und p95-Anfragelatenz in eine Tabelle stellen und das günstigste Modell im Qualitätsbudget wählen.",{"type":435,"variant":436,"title":437,"body":438},"callout","warn","Niemals Modelle in einem Index mischen",[439],[440],"Eine Vektorsuche vergleicht bereitwillig eine Anfrage von Modell A mit Dokumenten von Modell B und liefert selbstbewussten Unsinn. Modellname, Version und Dimension mit jedem Vektor speichern und den Anfragepfad so bauen, dass er die Suche in einem Index eines anderen Modells verweigert.",{"type":156,"level":157,"id":133,"text":134},{"type":143,"content":443},[444,445,333],"Man wird wieder wechseln; das Veröffentlichungstempo der letzten zwei Jahre macht das zur sicheren Wette. Von Anfang an dafür planen: den geparsten und gechunkten Text aufbewahren, damit Neu-Embedding kein Neu-Parsen bedeutet, den Indexnamen mit dem Modell versionieren und den neuen Index neben dem alten aufbauen. Die Anfragen des Vergleichstests gegen beide laufen lassen, einen Teil des Live-Verkehrs spiegeln, dann per Konfigurationsänderung umschalten und den alten Index behalten, bis die Evaluation hält. Dieselbe Disziplin gilt für das Generierungsmodell, wie in ",{"tag":150,"to":446,"children":447},"\u002Fblog\u002Fllm-model-migration-regression-testing",[448],"LLM-Modellmigrationen ohne Regressionen",{"type":156,"level":157,"id":136,"text":137},{"type":143,"content":451},[452],"Das sind meine Meinungen, keine Benchmark-Ergebnisse. Für eine deutsche oder ungarische B2B-Wissensbasis, die eine gehostete API nutzen darf, starte ich den Vergleichstest mit einer Modellfamilie mit gemeinsamem Raum und mehreren Größen, einem Gemini-Modell und Qwen3-Embedding-0.6B als offener Basislinie. Wenn Dokumente vor Ort bleiben müssen, vergleiche ich Qwen3-Embedding in zwei Größen mit EmbeddingGemma und nehme das größere nur, wenn der gemessene Gewinn die zusätzliche Hardware rechtfertigt. In beiden Fällen rolle ich mit 1.024 Dimensionen oder weniger aus, sofern der Test keinen klaren Verlust zeigt.",{"type":143,"content":454},[455],"Das Modell zählt weniger als erwartet, sobald Chunking, hybride Suche und Reranking stehen. Die erste Woche ins Evaluationsset stecken, denn es überdauert jedes Modell, das man ausprobieren wird.",{"type":156,"level":157,"id":139,"text":140},{"type":307,"ordered":373,"items":458},[459,463,466,469,472,475,478,481,484,487,490,493],[460],{"tag":461,"href":40,"children":462},"a",[39],[464],{"tag":461,"href":43,"children":465},[42],[467],{"tag":461,"href":46,"children":468},[45],[470],{"tag":461,"href":49,"children":471},[48],[473],{"tag":461,"href":52,"children":474},[51],[476],{"tag":461,"href":55,"children":477},[54],[479],{"tag":461,"href":58,"children":480},[57],[482],{"tag":461,"href":61,"children":483},[60],[485],{"tag":461,"href":64,"children":486},[63],[488],{"tag":461,"href":67,"children":489},[66],[491],{"tag":461,"href":70,"children":492},[69],[494],{"tag":461,"href":73,"children":495},[72],[497,557,615,668],{"slug":498,"published":5,"minutes":499,"category":7,"tags":500,"keywords":504,"about":516,"sources":526,"cover":551,"og":552,"expertise":76,"locales":553,"lang":79,"title":554,"description":555,"coverAlt":556},"contextual-retrieval-late-chunking",10,[10,501,9,502,503],"Chunking","Contextual retrieval","Late chunking",[505,506,507,508,509,510,511,512,513,514,515],"contextual retrieval","anthropic contextual retrieval","late chunking","contextual chunk embeddings","contextual embeddings rag","contextual bm25","chunk context rag","voyage-context-3","voyage-context-4","late chunking vs contextual retrieval","rag chunking context loss",[517,520,523],{"name":518,"url":519},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",{"name":521,"url":522},"Okapi BM25","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOkapi_BM25",{"name":524,"url":525},"Sentence embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSentence_embedding",[527,530,533,536,539,542,545,548],{"title":528,"url":529},"Anthropic: Introducing Contextual Retrieval (Sep 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fcontextual-retrieval",{"title":531,"url":532},"Günther et al.: Late Chunking, Contextual Chunk Embeddings Using Long-Context Embedding Models (2024, rev. 2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2409.04701",{"title":534,"url":535},"Jina AI: Late Chunking in Long-Context Embedding Models (Aug 2024)","https:\u002F\u002Fjina.ai\u002Fnews\u002Flate-chunking-in-long-context-embedding-models\u002F",{"title":537,"url":538},"Voyage AI: Introducing voyage-context-3 (Jul 2025)","https:\u002F\u002Fblog.voyageai.com\u002F2025\u002F07\u002F23\u002Fvoyage-context-3\u002F",{"title":540,"url":541},"Voyage AI: voyage-context-4 (Jun 2026)","https:\u002F\u002Fblog.voyageai.com\u002F2026\u002F06\u002F29\u002Fvoyage-context-4\u002F",{"title":543,"url":544},"Voyage AI: Contextualized chunk embeddings documentation","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fcontextualized-chunk-embeddings",{"title":546,"url":547},"Anthropic: Claude API pricing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fpricing",{"title":549,"url":550},"Qu, Tu and Bao: Is Semantic Chunking Worth the Computational Cost? (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.13070","\u002Fimages\u002Fblog\u002Fcontextual-retrieval-late-chunking\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcontextual-retrieval-late-chunking\u002Fog.jpg",[78,79,80],"Contextual Retrieval und Late Chunking: RAG-Chunks ihren Kontext zurückgeben","Chunks verlieren ihr Dokument. Wie Contextual Retrieval, Late Chunking und kontextuelle Embeddings das beheben, was sie kosten, wann man verzichtet.","Vier lose Quadrate, unten von einer breiten Klammer gebündelt und je nach oben mit einer großen Fläche verbunden.",{"slug":558,"published":5,"minutes":6,"category":7,"tags":559,"keywords":563,"about":576,"sources":584,"cover":609,"og":610,"expertise":76,"locales":611,"lang":79,"title":612,"description":613,"coverAlt":614},"rag-access-control-permissions",[10,560,561,562,12],"Access control","Security","Multi-tenancy",[564,565,566,567,568,569,570,571,572,573,574,575],"rag access control","permission aware rag","document level security rag","rag multi tenancy","vector database access control","pgvector row level security","security trimming azure ai search","openfga rag authorization","qdrant multitenancy","pinecone namespaces multitenancy","owasp llm08 vector and embedding weaknesses","rag data leakage",[577,580,583],{"name":578,"url":579},"Access-control list","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAccess-control_list",{"name":581,"url":582},"Multitenancy","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",{"name":518,"url":519},[585,588,591,594,597,600,603,606],{"title":586,"url":587},"OWASP GenAI Security Project: LLM08:2025 Vector and Embedding Weaknesses","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm082025-vector-and-embedding-weaknesses\u002F",{"title":589,"url":590},"PostgreSQL documentation: Row Security Policies","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fddl-rowsecurity.html",{"title":592,"url":593},"pgvector README: filtering and iterative index scans","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",{"title":595,"url":596},"Qdrant: Multitenancy and partitions guide","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fmultiple-partitions\u002F",{"title":598,"url":599},"Pinecone: Implement multitenancy using namespaces","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fimplement-multitenancy",{"title":601,"url":602},"Microsoft Learn: Document-level access control in Azure AI Search","https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fsearch\u002Fsearch-document-level-access-overview",{"title":604,"url":605},"OpenFGA: RAG authorization use case","https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fuse-cases\u002Frag-authorization",{"title":607,"url":608},"Morris et al.: Text Embeddings Reveal (Almost) As Much As Text (EMNLP 2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2310.06816","\u002Fimages\u002Fblog\u002Frag-access-control-permissions\u002Fcover.webp","\u002Fimages\u002Fblog\u002Frag-access-control-permissions\u002Fog.jpg",[78,79,80],"Zugriffskontrolle für RAG: berechtigungsbewusstes Retrieval ohne Datenlecks","Wie RAG-Assistenten Dokumente preisgeben und wie man das stoppt: ACLs an jedem Chunk, Vorfilter, Row-Level Security in pgvector, Rechte-Sync und Lecktests.","Sieben Karten in einer Reihe, sechs mit Schloss, eine leere Karte schickt einen Pfeil nach außen.",{"slug":616,"published":617,"minutes":6,"category":7,"tags":618,"keywords":623,"about":634,"sources":642,"cover":662,"og":663,"expertise":76,"locales":664,"lang":79,"title":665,"description":666,"coverAlt":667},"pdf-document-parsing-for-rag","2026-10-16",[10,619,620,621,622],"PDF parsing","OCR","Docling","Document AI",[624,625,626,627,628,629,630,631,632,633],"pdf parsing for rag","best pdf parser for rag","docling vs marker","marker vs mineru","pdf to markdown for llm","extract tables from pdf for rag","ocr for rag pipeline","olmocr bench","scanned pdf rag","document parsing llm",[635,638,641],{"name":636,"url":637},"PDF","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPDF",{"name":639,"url":640},"Optical character recognition","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOptical_character_recognition",{"name":518,"url":519},[643,646,649,652,655,658,661],{"title":644,"url":645},"Docling: README, features and license (GitHub)","https:\u002F\u002Fgithub.com\u002Fdocling-project\u002Fdocling",{"title":647,"url":648},"Auer et al.: Docling: An Efficient Open-Source Toolkit for AI-driven Document Conversion (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2501.17887",{"title":650,"url":651},"Datalab: Marker README, olmOCR-bench results and license (GitHub)","https:\u002F\u002Fgithub.com\u002Fdatalab-to\u002Fmarker",{"title":653,"url":654},"OpenDataLab: MinerU README and license (GitHub)","https:\u002F\u002Fgithub.com\u002Fopendatalab\u002FMinerU",{"title":656,"url":657},"Poznanski et al.: olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.18443",{"title":659,"url":660},"Claude Platform Docs: PDF support","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fpdf-support",{"title":528,"url":529},"\u002Fimages\u002Fblog\u002Fpdf-document-parsing-for-rag\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpdf-document-parsing-for-rag\u002Fog.jpg",[78,79,80],"PDF-Parsing für RAG: Layout-Pipelines, OCR und Vision-Modelle im Vergleich","Warum das PDF-Parsing die RAG-Qualität bestimmt, wie sich Docling, Marker, MinerU und VLM-OCR unterscheiden und wie man einen Parser selbst testet.","Unregelmäßige Blöcke auf einem Blatt werden zu einer gleichmäßigen Reihe auf einem zweiten Blatt.",{"slug":669,"published":617,"minutes":670,"category":7,"tags":671,"keywords":675,"about":685,"sources":695,"cover":716,"og":717,"expertise":76,"locales":718,"lang":79,"title":719,"description":720,"coverAlt":721},"multilingual-rag-german-hungarian",7,[10,672,9,673,674],"Multilingual","German","Hungarian",[676,677,678,679,21,680,681,682,683,684],"multilingual rag","german rag embeddings","hungarian nlp search","cross-lingual retrieval","bge-m3 german","german compound words search","hungarian stemming postgres","multilingual-e5-large-instruct","qwen3 embedding multilingual",[686,689,692],{"name":687,"url":688},"Cross-language information retrieval","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCross-language_information_retrieval",{"name":690,"url":691},"Agglutinative language","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAgglutinative_language",{"name":693,"url":694},"Compound (linguistics)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCompound_(linguistics)",[696,698,701,704,707,710,713],{"title":697,"url":40},"Enevoldsen et al.: MMTEB: Massive Multilingual Text Embedding Benchmark (2025)",{"title":699,"url":700},"Chen et al.: M3-Embedding (BGE-M3): Multi-Linguality, Multi-Functionality, Multi-Granularity (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03216",{"title":702,"url":703},"Zhang et al.: Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.05176",{"title":705,"url":706},"Hugging Face: intfloat\u002Fmultilingual-e5-large-instruct model card","https:\u002F\u002Fhuggingface.co\u002Fintfloat\u002Fmultilingual-e5-large-instruct",{"title":708,"url":709},"Elasticsearch Reference: Hyphenation decompounder token filter","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Ftext-analysis\u002Fanalysis-hyp-decomp-tokenfilter",{"title":711,"url":712},"PostgreSQL 18 Documentation: Text search dictionaries","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Ftextsearch-dictionaries.html",{"title":714,"url":715},"Snowball: stemming algorithms by language","https:\u002F\u002Fsnowballstem.org\u002Falgorithms\u002F","\u002Fimages\u002Fblog\u002Fmultilingual-rag-german-hungarian\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmultilingual-rag-german-hungarian\u002Fog.jpg",[78,79,80],"Mehrsprachiges RAG für Deutsch und Ungarisch: Embeddings, Komposita und sprachübergreifende Suche","RAG über deutsche und ungarische Inhalte: mehrsprachige Embeddings, Komposita, Stemming, Akzente und Evaluation pro Sprache.","Zwei Reihen kleiner Quadrate, jedes mit einem Punkt darüber, fließen in ein hohes Rechteck.",1792222777437]