[{"data":1,"prerenderedAt":761},["ShallowReactive",2],{"blog-conversational-search-query-rewriting-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":25,"sources":35,"cover":69,"og":70,"expertise":71,"locales":72,"lang":74,"title":76,"description":77,"coverAlt":78,"metaTitle":79,"takeaways":80,"faq":86,"toc":105,"blocks":139,"others":509},"conversational-search-query-rewriting","2026-10-17",12,"rag",[9,10,11,12,13],"Conversational search","Query rewriting","RAG","HyDE","E-commerce",[15,16,17,18,19,20,21,22,23,24],"conversational search query rewriting","coreference resolution search query","HyDE hypothetical document embeddings","multi-query expansion RAG","LLM filter extraction","B2B product search assistant","conversational product search","query rewriting latency","recall@k evaluation","standalone query generation",[26,29,32],{"name":27,"url":28},"Query expansion","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FQuery_expansion",{"name":30,"url":31},"Coreference","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCoreference",{"name":33,"url":34},"Okapi BM25","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOkapi_BM25",[36,39,42,45,48,51,54,57,60,63,66],{"title":37,"url":38},"Gao et al.: Precise Zero-Shot Dense Retrieval without Relevance Labels, ACL 2023","https:\u002F\u002Faclanthology.org\u002F2023.acl-long.99\u002F",{"title":40,"url":41},"UTokyo-Hitotsubashi at TREC 2025 RAG Track: HyDE-Enhanced Sparse-Dense Retrieval Fusion with LLM Reranking","https:\u002F\u002Ftrec.nist.gov\u002Fpubs\u002Ftrec34\u002Fpapers\u002FUTokyo.rag.pdf",{"title":43,"url":44},"Hypothetical Documents or Knowledge Leakage? Rethinking LLM-based Query Expansion","https:\u002F\u002Faclanthology.org\u002F2025.findings-acl.980.pdf",{"title":46,"url":47},"ConvSearch-R1: Enhancing Query Reformulation for Conversational Search with Reasoning via Reinforcement Learning","https:\u002F\u002Faclanthology.org\u002F2025.emnlp-main.1349\u002F",{"title":49,"url":50},"CFDA and CLIP at TREC iKAT 2025: Query Reformulation and Rank Fusion","https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.15588",{"title":52,"url":53},"MiniELM: A Lightweight and Adaptive Query Rewriting Framework for E-Commerce Search Optimization","https:\u002F\u002Faclanthology.org\u002F2025.findings-acl.363\u002F",{"title":55,"url":56},"Microsoft Learn: Rewrite queries with semantic ranker in Azure AI Search (preview)","https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fsearch\u002Fsemantic-how-to-query-rewrite",{"title":58,"url":59},"Microsoft Learn: Agentic retrieval overview in Azure AI Search","https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fazure\u002Fsearch\u002Fagentic-retrieval-overview",{"title":61,"url":62},"Microsoft Tech Community: Generative query rewriting and a new semantic ranker","https:\u002F\u002Ftechcommunity.microsoft.com\u002Fblog\u002Fazure-ai-services-blog\u002Fraising-the-bar-for-rag-excellence-query-rewriting-and-new-semantic-ranker\u002F4302729\u002F",{"title":64,"url":65},"Amazon Bedrock User Guide: Configure and customize queries and response generation","https:\u002F\u002Fdocs.aws.amazon.com\u002Fbedrock\u002Flatest\u002Fuserguide\u002Fkb-test-config.html",{"title":67,"url":68},"Ragas documentation: List of available metrics","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002F","\u002Fimages\u002Fblog\u002Fconversational-search-query-rewriting\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fconversational-search-query-rewriting\u002Fog.jpg","ai-engineer",[73,74,75],"en","de","hu","Query Rewriting für die konversationelle Suche: Kontext, HyDE und Filter","Wie Follow-up-Fragen in einem B2B-Shop-Assistenten umgeschrieben werden: Koreferenz, HyDE, Multi-Query, Filter, Latenz und Evaluation.","Eine Sprechblase, eine umgeschriebene Karte, dann ein Trichter über Ergebnissen, mit Pfeilen verbunden.","Query Rewriting für die konversationelle Suche · Balázs Csorba",[81,82,83,84,85],"Eine konversationelle Anfrage braucht ein Rewrite, keinen längeren Prompt: Pronomen, Ellipsen und geänderte Bedingungen müssen vor dem Retrieval explizit werden.","HyDE hilft, wenn das Modell das Domänenvokabular schon kennt; bei Nischenbegriffen aus dem Katalog erfindet es die falschen Wörter, also die Originalanfrage im Mix behalten.","Multi-Query-Erweiterung bringt Recall und kostet Drift und Latenz: entlang verschiedener Achsen erweitern, mit RRF fusionieren und die Anzahl begrenzen.","Filter sind die riskanteste Ausgabe: Berechtigungsfilter kommen aus dem Konto, nie aus dem Modell, und jeder generierte Filter braucht Schema-Validierung.","Auf Sitzungen mit Recall@k und Antwortqualität messen, nicht darauf, wie ähnlich ein Rewrite einer menschlichen Referenz ist.",[87,90,93,96,99,102],{"q":88,"a":89},"Was ist konversationelles Query Rewriting?","Es macht aus einer kontextabhängigen Folgefrage wie „und dasselbe in 5 Liter\" eine eigenständige Anfrage mit Produkt, Attribut und geerbten Bedingungen. Der Retriever sieht dann eine Anfrage, die er ohne den Chatverlauf beantworten kann.",{"q":91,"a":92},"Brauche ich HyDE für einen Shop-Assistenten?","Meistens nicht. HyDE lohnt einen Test bei vagen Anwendungsfragen, wenn die Katalogtexte viel länger sind als die Frage. Für Artikelnummern ist es ungeeignet, und bei Attributen mit Sicherheits- oder Compliance-Relevanz riskant.",{"q":94,"a":95},"Wie viele Rewrites soll ich pro Turn erzeugen?","Eines als Standard, drei bei niedriger Confidence. Azure AI Search kann bis zu zehn Varianten erzeugen, aber jede weitere Anfrage vervielfacht Retrieval und Reranking, und Paraphrasen driften vom gemeinten Intent weg.",{"q":97,"a":98},"Soll das Modell Filter extrahieren?","Präferenzfilter wie Werkstoff, Größe oder Preisgrenze ja, mit Schema und Validierung. Berechtigungsfilter wie Sortiment, Preisliste oder Lieferland müssen aus der Sitzung und dem ERP kommen, nie aus dem Modell.",{"q":100,"a":101},"Wie evaluiere ich Query Rewriting?","Auf Sitzungen: Recall@k und MRR pro Turn, nDCG@10 bei abgestufter Relevanz, dazu Faithfulness und Relevanz der Antwort. Identifier-Erhalt und Nulltrefferquote separat verfolgen und nach Turn-Index, Query-Typ und Sprache segmentieren.",{"q":103,"a":104},"Bricht Query Rewriting die exakte Artikelnummernsuche?","Es kann. Microsoft warnt, dass umgeschriebene Anfragen exakte Begriffe verlieren können, die für eindeutige Identifier und Produktcodes nötig sind. Identifier vor dem Modell extrahieren, unverändert anhängen und testen, dass sie jede Prompt-Änderung überleben.",[106,109,112,115,118,121,124,127,130,133,136],{"id":107,"title":108},"why-rewrite","Warum die zweite Frage schwerer ist als die erste",{"id":110,"title":111},"what-breaks","Vier Dinge, die ein Gespräch mit einer Anfrage macht",{"id":113,"title":114},"coreference","Koreferenz, Ellipse und die eigenständige Anfrage",{"id":116,"title":117},"hyde","HyDE: nützlich, aber es kann den Katalog nicht erfinden",{"id":119,"title":120},"multi-query","Multi-Query-Erweiterung: mehr Recall, mehr Drift",{"id":122,"title":123},"filters","Filterextraktion: zuerst das Schema, dann das Modell",{"id":125,"title":126},"exact-identifiers","Artikelnummern und Einheiten: das Rewrite darf sie nicht anfassen",{"id":128,"title":129},"latency-cost","Latenz und Kosten: was der zusätzliche Aufruf bringt",{"id":131,"title":132},"evaluation","Evaluation: Recall@k auf Sitzungen, nicht auf dem Rewrite",{"id":134,"title":135},"design","Die Pipeline, die ich ausliefern würde",{"id":137,"title":138},"sources","Quellen",[140,144,147,150,153,156,157,181,184,185,188,245,248,251,252,255,258,261,262,265,274,277,278,281,290,297,298,301,309,310,313,368,371,379,380,383,386,428,431,439,440,443,450,463,466,469,472,473],{"type":141,"content":142},"paragraph",[143],"Eine Suchmaske bekommt eine Anfrage. Ein Chat bekommt ein Gespräch. In der dritten Runde schreibt der Einkäufer „und dasselbe in 5 Liter\", und die Suche erhält einen Satz ohne Produkt, ohne Werkstoff und ohne Einheit. Ein größeres Kontextfenster löst das nicht. Ein Rewrite-Schritt schon.",{"type":141,"content":145},[146],"Dieser Artikel handelt von diesem Schritt in einem B2B-Shop-Assistenten: Koreferenz und Ellipse, HyDE, Multi-Query-Erweiterung, Filterextraktion, die Ausnahme für Artikelnummern, die Latenz des zusätzlichen Aufrufs und die Frage, wie man das Ergebnis auf Sitzungen evaluiert statt auf dem umgeschriebenen Text.",{"type":148,"level":149,"id":107,"text":108},"heading",2,{"type":141,"content":151},[152],"Query Understanding in einer Runde ist Parsen. Mehrrundensuche ist Referenzauflösung zusätzlich zum Parsen. „4711-32\" ist für jeden Retriever einfach. „Habt ihr das in 5 Liter\" ist für einen Menschen einfach und für einen Index unmöglich, weil das Substantiv fehlt.",{"type":141,"content":154},[155],"Zwei Wege aus der Lücke. Conversational Dense Retrieval kodiert den Verlauf mit der Anfrage in einen Vektor, braucht aber Session-Passage-Trainingsdaten. Conversational Query Reformulation behält den Retriever und schreibt die Folgefrage in eine eigenständige Anfrage um; ConvSearch-R1 beschreibt diese Trennung und argumentiert, dass Reformulation einen Standard-Retriever nutzbar macht. In Shops setze ich auf Reformulation: Suchmaschine und Synonyme existieren, und ein Rewrite-Schritt ist die kleinere Änderung als ein neuer Retrieval-Stack.",{"type":148,"level":149,"id":110,"text":111},{"type":158,"items":159},"list",[160,166,171,176],[161,165],{"tag":162,"children":163},"strong",[164],"Koreferenz."," „Es\", „das da\", „das zweite\" zeigen auf ein Produkt, das der Assistent gezeigt hat.",[167,170],{"tag":162,"children":168},[169],"Ellipse."," „Und in 5 Liter?\" lässt Produkt und Attribut weg.",[172,175],{"tag":162,"children":173},[174],"Geänderte Bedingung."," „Günstiger\" oder „nicht das verzinkte\" fügt eine Bedingung hinzu oder entfernt eine.",[177,180],{"tag":162,"children":178},[179],"Themenwechsel."," „Wann wird geliefert?\" darf den Produktfilter nicht erben.",{"type":141,"content":182},[183],"Jeder Fall scheitert anders: eine verpasste Koreferenz liefert ein zufälliges Produkt der Kategorie, eine verpasste Bedingung die richtige Familie mit falscher Spezifikation, ein verpasster Themenwechsel ein Produkt, obwohl nach Logistik gefragt wurde. Auch ein übereifriges Rewrite scheitert: Es erfindet Bedingungen oder verliert die Artikelnummer. Das Ziel ist die kleinste Anfrage, die die richtigen Kandidaten holt und die tatsächlich genannten Bedingungen behält.",{"type":148,"level":149,"id":113,"text":114},{"type":141,"content":186},[187],"Ein gutes Rewrite trägt die Produktidentität, das besprochene Attribut, die geerbten Filter und die neue Bedingung. Die Tabelle zeigt die Muster, die ich zuerst teste.",{"type":189,"head":190,"rows":199},"table",[191,193,195,197],[192],"Muster",[194],"Runde 2",[196],"Muss tragen",[198],"Wenn es fehlt",[200,209,218,227,236],[201,203,205,207],[202],"Pronomen",[204],"„Und in 5 Liter?\"",[206],"Produkt-ID + Gebinde",[208],"unpassende 5-Liter-Behälter",[210,212,214,216],[211],"Ellipse",[213],"„Das aus Edelstahl\"",[215],"Werkstoff aus der letzten Antwort",[217],"der falsche Werkstoff",[219,221,223,225],[220],"Ordinalverweis",[222],"„Das zweite\"",[224],"ID aus der Liste des Assistenten",[226],"das erste Produkt",[228,230,232,234],[229],"Geänderte Bedingung",[231],"„Günstiger als das\"",[233],"Preisgrenze + Preisliste",[235],"Listenpreise über dem Budget",[237,239,241,243],[238],"Themenwechsel",[240],"„Wann wird geliefert?\"",[242],"Produktfilter weg, Land behalten",[244],"Produktseite statt Antwort",{"type":141,"content":246},[247],"Der Ordinalfall wird oft vergessen: „das zweite\" aufzulösen braucht die vorige Antwort des Assistenten, inklusive Reihenfolge der gezeigten Produkte. Flippi, ein E-Commerce-Assistent aus einem Paper von 2025, bildet „second product\" auf den Namen aus der letzten Bot-Ausgabe ab, bevor das Retrieval startet. Ein Rewriter, der nur Nutzernachrichten sieht, kann das nicht.",{"type":141,"content":249},[250],"Die Eingabe ist also nicht das Transkript, sondern ein kompakter Zustand: die letzten Runden, gezeigte IDs und Namen, aktive Filter und der Kontokontext (Währung, Preisliste, Lieferland). Strukturierter Zustand ist billiger als zwanzig Nachrichten und macht das Rewrite testbar.",{"type":148,"level":149,"id":116,"text":117},{"type":141,"content":253},[254],"HyDE, aus dem ACL-Paper von Gao und Kollegen von 2023, lässt ein Modell eine hypothetische Antwort schreiben, bettet diese Antwort statt der Anfrage ein und sucht mit dem Vektor. Der Encoder filtert die erfundenen Details; übrig bleibt die Form eines relevanten Dokuments. Im Shop zählt die Form: Einkäuferanfragen sind kurz, Katalogtexte lang und strukturiert.",{"type":141,"content":256},[257],"Die Evidenz ist gemischt, und zwar nützlich. Im TREC-2025-RAG-Track schrieb das Team von UTokyo und Hitotsubashi rund 150 Wörter lange hypothetische Antworten mit GPT-4.1 und mischte den Query-Vektor mit Gewicht 0,7 bei. Bei einem Embedding-Modell stieg nDCG@10 von 0,493 auf 0,564, ein relativer Gewinn von 14,4 %; HyDE allein senkte Precision@100 von 0,444 auf 0,401. Die Wörter des Nutzers im Vektor behalten.",{"type":141,"content":259},[260],"Der größere Vorbehalt kommt aus einem ACL-Findings-Paper von 2025 zu Knowledge Leakage: Über drei Fact-Verification-Benchmarks und sieben Modelle half Query Expansion nur, wenn die generierten Dokumente Sätze enthielten, die aus der Gold-Evidenz folgen. HyDE funktioniert, wenn das Modell die Antwort schon kennt. Ein Nischenkatalog ist der Fall, in dem es sie nicht kennt: Das Modell schreibt eine selbstsichere Beschreibung mit plausiblem Werkstoff und falscher Gewindegröße und holt Produkte, die richtig aussehen und es nicht sind. Meine Regel: kein HyDE bei Identifier-Anfragen, keines wo ein falsches Attribut Sicherheitsrelevanz hat, und nur bei vagen Anwendungsfragen.",{"type":148,"level":149,"id":119,"text":120},{"type":141,"content":263},[264],"Der nächste Hebel sind mehrere Anfragen statt einer. Azure AI Search erzeugt bis zu zehn Varianten und schickt sie gemeinsam in die erste Retrieval-Stufe; Microsoft berichtet vier Punkte nDCG@3 auf termbasierten Indizes und bis zu 22 Punkte mit dem neueren semantischen Ranker. TREC iKAT 2025 fand Best-of-N-Rewriting plus Reciprocal Rank Fusion als robusteste Konfiguration, mit Reranking darüber.",{"type":266,"attrs":267,"inner":271,"caption":272},"diagram",{"viewBox":268,"role":269,"aria-labelledby":270},"0 0 720 250","img","csqr-fan-t csqr-fan-d","\u003Ctitle id=\"csqr-fan-t\">Drei Anfragen, eine Kandidatenliste\u003C\u002Ftitle>\u003Cdesc id=\"csqr-fan-d\">Eine Folgefrage wird zu einer Artikelnummern-Anfrage, einer Synonym-Anfrage und einer Attribut-Anfrage. Jede liefert Kandidaten, Reciprocal Rank Fusion führt sie zusammen, ein Reranker behält die Spitze.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"csqr-fan-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=\"95\" width=\"110\" height=\"60\" rx=\"9\" class=\"d-box\" \u002F>\u003Ctext x=\"75\" y=\"121\" text-anchor=\"middle\" class=\"d-text\">Folgefrage\u003C\u002Ftext>\u003Ctext x=\"75\" y=\"141\" text-anchor=\"middle\" class=\"d-small\">Chat + Konto\u003C\u002Ftext>\u003Cpath d=\"M130 125H156\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Crect x=\"158\" y=\"95\" width=\"110\" height=\"60\" rx=\"9\" class=\"d-sky\" \u002F>\u003Ctext x=\"213\" y=\"121\" text-anchor=\"middle\" class=\"d-text\">Umschreiben\u003C\u002Ftext>\u003Ctext x=\"213\" y=\"141\" text-anchor=\"middle\" class=\"d-small\">SLM + JSON\u003C\u002Ftext>\u003Cpath d=\"M268 125L326 52\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Cpath d=\"M268 125H326\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Cpath d=\"M268 125L326 198\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Crect x=\"328\" y=\"27\" width=\"150\" height=\"50\" rx=\"9\" class=\"d-box\" \u002F>\u003Ctext x=\"403\" y=\"57\" text-anchor=\"middle\" class=\"d-text\">Artikelnummer\u003C\u002Ftext>\u003Crect x=\"328\" y=\"100\" width=\"150\" height=\"50\" rx=\"9\" class=\"d-box\" \u002F>\u003Ctext x=\"403\" y=\"130\" text-anchor=\"middle\" class=\"d-text\">Synonym\u003C\u002Ftext>\u003Crect x=\"328\" y=\"173\" width=\"150\" height=\"50\" rx=\"9\" class=\"d-box\" \u002F>\u003Ctext x=\"403\" y=\"203\" text-anchor=\"middle\" class=\"d-text\">Attribut\u003C\u002Ftext>\u003Cpath d=\"M478 52L526 122\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Cpath d=\"M478 125H526\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Cpath d=\"M478 198L526 128\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Crect x=\"528\" y=\"95\" width=\"80\" height=\"60\" rx=\"9\" class=\"d-gold\" \u002F>\u003Ctext x=\"568\" y=\"121\" text-anchor=\"middle\" class=\"d-text\">RRF\u003C\u002Ftext>\u003Ctext x=\"568\" y=\"141\" text-anchor=\"middle\" class=\"d-small\">Top 50\u003C\u002Ftext>\u003Cpath d=\"M608 125H636\" class=\"d-line\" marker-end=\"url(#csqr-fan-ah)\" \u002F>\u003Crect x=\"638\" y=\"95\" width=\"62\" height=\"60\" rx=\"9\" class=\"d-mint\" \u002F>\u003Ctext x=\"669\" y=\"130\" text-anchor=\"middle\" class=\"d-text\">Top 10\u003C\u002Ftext>",[273],"Drei Anfragen sind ein Budget, kein Ziel: Jeder Zweig kostet Retrieval-Arbeit und ist eine weitere Chance zu driften.",{"type":141,"content":275},[276],"Mehr ist nicht automatisch besser. Dasselbe TREC-RAG-2025-System, das von HyDE profitierte, fand, dass Paraphrasen die Retrieval-Genauigkeit durchgängig senkten; die Autoren führen das auf semantische Drift zurück. Eine Paraphrase bewegt weg vom gemeinten Intent, ein Synonym oder Attribut seitlich. Also entlang verschiedener Achsen erweitern. Mein Standard sind drei Anfragen: eigenständig, Identifier, eine Attribut-Variante. Mit RRF fusionieren, nach SKU deduplizieren, Pool vor dem Reranking begrenzen.",{"type":148,"level":149,"id":122,"text":123},{"type":141,"content":279},[280],"Filter sind der Ort, an dem der Assistent Wert zeigt, und der, an dem er am meisten Schaden anrichtet. „Unter 500\" ist ein Preisfilter, „auf Lager\" ein Verfügbarkeitsfilter, „die vom letzten Mal\" ein Lookup in der Bestellhistorie. Amazon Bedrock Knowledge Bases zeigt das Muster: Metadaten-Attribute (Key, Typ, Beschreibung) und ein Modell beschreiben, und der Dienst generiert vor dem Retrieval einen Filter, mit den Typen String, Number, Boolean und String List.",{"type":141,"content":282},[283,284,289],"Entscheidend ist die Trennung zwischen Präferenzfiltern aus den Worten des Nutzers (Werkstoff, Größe, Marke, Preisgrenze) und Berechtigungsfiltern aus dem Konto (Sortiment, Preisliste, Lager, sichtbare Produkte). Die erste Klasse darf ein Modell vorschlagen, die zweite nie erzeugen. Wenn das Rewrite die Preisliste setzen kann, wird aus einer ",{"tag":285,"to":286,"children":287},"link","\u002Fblog\u002Fprompt-injection-lethal-trifecta-patterns",[288],"Prompt-Injection"," in einer Bewertung ein Rabatt. Innerhalb der Präferenzklasse: Felder allowlisten, Typen prüfen, Bereiche begrenzen, unbekannte Felder ablehnen. Ein still verschwindender Filter ist schlimmer als eine Nulltreffer-Seite, weil der Einkäufer glaubt, er sei angewandt.",{"type":291,"variant":292,"title":293,"body":294},"callout","warn","Ein Filter ist eine Berechtigungsentscheidung",[295],[296],"Das Rewrite darf eine Suche auf das verengen, wonach der Kunde gefragt hat; es darf sie nicht auf das erweitern, was er sehen darf. Sortiment, Vertragspreis, Lieferland und Dokumentensichtbarkeit kommen aus der Sitzung und dem ERP, gelten vor dem Retrieval auf jeder Spur und sind nie Teil des JSON, das das Modell zurückgibt.",{"type":148,"level":149,"id":125,"text":126},{"type":141,"content":299},[300],"Die Azure-Dokumentation zum Query Rewriting enthält die wichtigste Warnung: Umgeschriebene Anfragen enthalten möglicherweise nicht mehr alle exakten Begriffe der Originalanfrage, was eindeutige Identifier und Produktcodes verschlechtert. Für ein Embedding sind 4711-32 und 4711-33 Nachbarn; für einen Einkäufer sind es verschiedene Teile.",{"type":141,"content":302},[303,304,308],"Die Lösung ist prozedural. Identifier-Kandidaten extrahieren, bevor das Modell die Anfrage sieht (Ziffern mit Trennern, Lieferantenpräfixe, EANs, Zeichnungsnummern), durch Platzhalter ersetzen, den Rest umschreiben lassen, dann unverändert anhängen, als Must-keep-Liste und als eigene lexikalische Anfrage. Einheiten für Filter normalisieren (5 l, 5L und 5000 ml sind ein Gebinde), die getippte Form für die lexikalische Spur behalten. Dazu eine Regressions-Fixture: fünfzig echte Identifier und ein Test, dass jeder jede Prompt- und Modelländerung überlebt. Die größere Architektur steht in ",{"tag":285,"to":305,"children":306},"\u002Fblog\u002Fsemantic-product-search-b2b",[307],"semantische Produktsuche für B2B-Shops",".",{"type":148,"level":149,"id":128,"text":129},{"type":141,"content":311},[312],"Ein Rewrite ist ein zusätzlicher Modellaufruf vor dem Retrieval, und das Retrieval läuft danach vielleicht dreimal. Die Rechnung hat drei Teile: Rewrite-Tokens, zusätzliche Retrieval- und Rerank-Arbeit und die Tail-Latenz des langsamsten Zweigs. Microsoft nennt zehn Rewrites einer 32-Token-Anfrage in 147 ms und ein semantisches Rerank von fünfzig 2.048-Token-Dokumenten in 158 ms für ein spezialisiertes kleines Modell. Ein allgemeines Chat-Modell braucht länger.",{"type":189,"head":314,"rows":323},[315,317,319,321],[316],"Hebel",[318],"Bringt",[320],"Kostet",[322],"Standard",[324,333,342,351,359],[325,327,329,331],[326],"Kein Rewrite",[328],"nichts",[330],"kaputte Folgefragen",[332],"nur Runde 1",[334,336,338,340],[335],"Ein Rewrite",[337],"ein SLM-Aufruf",[339],"etwa 150 ms in Azures Setup",[341],"ja",[343,345,347,349],[344],"Drei Anfragen + RRF",[346],"3-faches Retrieval, Fusion",[348],"Latenz, Drift",[350],"niedrige Confidence",[352,353,355,357],[12],[354],"Generierung + Embedding",[356],"zusätzliche Inferenz, falsches Vokabular",[358],"nicht bei Identifiern",[360,362,364,366],[361],"Filterextraktion",[363],"Schema im Prompt",[365],"Validierung, Berechtigungsrisiko",[367],"ja, validiert",{"type":141,"content":369},[370],"Azures Agentic Retrieval macht den Trade-off zu einer Einstellung: minimal Effort plant ohne LLM, low macht einen Planungslauf, medium kann eine Folgeiteration auslösen, und jede Iteration kostet Latenz und Geld. Bedrocks Dekomposition hat einen ähnlichen Multiplikator: Die rerankten Ergebnisse können bis zu fünfmal so viele sein wie die abgerufenen.",{"type":141,"content":372},[373,374,378],"Also pro Runde budgetieren. Nur rewriten, wenn die Runde es braucht: Pronomen, Ellipse, geänderte Bedingung, Themenwechsel. Einen strukturierten Constraint-State statt des Transkripts halten, System-Prompt und Schema stabil für ",{"tag":285,"to":375,"children":376},"\u002Fblog\u002Fllm-cost-latency-prompt-caching-routing",[377],"Prompt-Caching",", ein kleines Modell fürs Rewrite und ein hartes Timeout mit Fallback auf Originalanfrage plus geerbte Filter. Ein spätes Rewrite soll noch eine korrekte Antwort lassen, nur eine weniger kluge.",{"type":148,"level":149,"id":131,"text":132},{"type":141,"content":381},[382],"Die naheliegende Metrik ist die Ähnlichkeit zu einem menschlichen Rewrite. Das falsche Ziel: Die MiniELM-Autoren sagen, es gibt keine eindeutige Ground Truth für ein ideales Rewrite, und sollte sie nicht geben, weil mehrere Rewrites dieselben richtigen Produkte finden können. Bewerte das Retrieval und die Antwort.",{"type":141,"content":384},[385],"Den Eval-Set aus echten Sitzungen bauen. Pro Runde Nutzernachricht, den Zustand des Rewriters und das akzeptable Produkt festhalten. Offline unter mehreren Armen replayen: Originalanfrage, einzelnes Rewrite, Rewrite plus HyDE, drei fusionierte Anfragen. Recall@k pro Turn-Index berichten, weil Runde eins und fünf anders scheitern.",{"type":189,"head":387,"rows":394},[388,390,392],[389],"Metrik",[391],"Frage",[393],"Berechnet auf",[395,402,408,415,421],[396,398,400],[397],"Recall@k",[399],"ist das richtige Produkt im Kandidatensatz?",[401],"Retrieval, pro Runde",[403,405,407],[404],"nDCG@10",[406],"stehen relevante Produkte weit oben?",[401],[409,411,413],[410],"Filter-Precision und -Recall",[412],"entsprechen die Filter den Handlabels?",[414],"Rewrite-Ausgabe",[416,418,420],[417],"Identifier-Erhalt",[419],"ist jede Artikelnummer erhalten?",[414],[422,424,426],[423],"Faithfulness, Response Relevancy",[425],"ist die Antwort belegt und passend?",[427],"Generierung",{"type":141,"content":429},[430],"Die letzte Zeile nutzt Ragas-Metriknamen. Faithfulness erwischt ein Modell, das Lücken aus dem Gedächtnis füllt; Response Relevancy eines, das höflich eine andere Frage beantwortet. Keine ersetzt einen menschlichen Durchgang über hundert Antworten, besonders wo eine falsche Kompatibilitätsaussage eine Retoure ist.",{"type":141,"content":432},[433,434,438],"Das Gegenfaktische mitloggen: Originalanfrage, umgeschriebene Anfragen, Filter, Kandidaten-IDs, ID der finalen Antwort. Ohne das ist nicht erkennbar, ob eine schlechte Antwort vom Rewrite, vom Retriever oder vom Generator kam. Das Metrik-Design ist dasselbe wie in ",{"tag":285,"to":435,"children":436},"\u002Fblog\u002Frag-evaluation-metrics",[437],"RAG evaluieren","; die Einheit ist die Sitzung, und die relevanten Segmente sind Turn-Index, Query-Typ und Sprache.",{"type":148,"level":149,"id":134,"text":135},{"type":141,"content":441},[442],"Die Version, die ich vor einen Shop setzen würde, in Request-Reihenfolge:",{"type":266,"attrs":444,"inner":447,"caption":448},{"viewBox":445,"role":269,"aria-labelledby":446},"0 0 720 170","csqr-flow-t csqr-flow-d","\u003Ctitle id=\"csqr-flow-t\">Die Rewrite-Pipeline\u003C\u002Ftitle>\u003Cdesc id=\"csqr-flow-d\">Ein Sitzungszustand läuft durch einen kleinen Rewriter, einen Validator, zwei Retrieval-Spuren, Rangfusion und eine belegte Antwort. Jeder Validierungsfehler fällt auf die Originalanfrage mit den geerbten Filtern zurück.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"csqr-flow-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=\"95\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"68\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Sitzung\u003C\u002Ftext>\u003Ctext x=\"68\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Zustand\u003C\u002Ftext>\u003Cpath d=\"M115 85H135\" class=\"d-line\" marker-end=\"url(#csqr-flow-ah)\" \u002F>\u003Crect x=\"137\" y=\"47\" width=\"95\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"184\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Umschreiben\u003C\u002Ftext>\u003Ctext x=\"184\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">SLM\u003C\u002Ftext>\u003Cpath d=\"M232 85H252\" class=\"d-line\" marker-end=\"url(#csqr-flow-ah)\" \u002F>\u003Crect x=\"254\" y=\"47\" width=\"95\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"302\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Prüfen\u003C\u002Ftext>\u003Ctext x=\"302\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Schema\u003C\u002Ftext>\u003Cpath d=\"M349 85H369\" class=\"d-line\" marker-end=\"url(#csqr-flow-ah)\" \u002F>\u003Crect x=\"371\" y=\"47\" width=\"95\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"418\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Suchen\u003C\u002Ftext>\u003Ctext x=\"418\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">2 Spuren\u003C\u002Ftext>\u003Cpath d=\"M466 85H486\" class=\"d-line\" marker-end=\"url(#csqr-flow-ah)\" \u002F>\u003Crect x=\"488\" y=\"47\" width=\"95\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"536\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Fusion\u003C\u002Ftext>\u003Ctext x=\"536\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">RRF\u003C\u002Ftext>\u003Cpath d=\"M583 85H603\" class=\"d-line\" marker-end=\"url(#csqr-flow-ah)\" \u002F>\u003Crect x=\"605\" y=\"47\" width=\"95\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"652\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Antwort\u003C\u002Ftext>\u003Ctext x=\"652\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">belegt\u003C\u002Ftext>",[449],"Der Validator verhindert, dass aus einem flüssigen Rewrite ein falscher Filter, eine verlorene Artikelnummer oder ein Berechtigungsleck wird.",{"type":158,"ordered":451,"items":452},true,[453,455,457,459,461],[454],"Normalisieren und schützen: Sprache erkennen, Identifier und Einheiten extrahieren, getippte Form behalten.",[456],"Entscheiden: nur bei Referenz, Ellipse, geänderter Bedingung oder Themenwechsel rewriten; sonst durchreichen.",[458],"In einen strikten JSON-Vertrag rewriten: eigenständige Anfrage, Must-keep-Begriffe, Präferenzfilter, Confidence, optionale Klärung.",[460],"Schema, Felder, Typen und Identifier validieren; bei Fehler auf Originalanfrage und geerbte Filter zurückfallen.",[462],"Zuerst Identifier-Spur, dann hybrid, mit RRF fusionieren, reranken, mit Belegen antworten und die interpretierte Anfrage zeigen.",{"type":464,"code":465},"code","\u002F\u002F The rewrite contract: the model returns this, nothing else.\ntype Rewrite = {\n  standalone: string        \u002F\u002F query for the retriever\n  must_keep: string[]       \u002F\u002F part numbers, units, model names\n  filters: { field: string; op: \"eq\" | \"gte\" | \"lte\" | \"in\"; value: string | number | string[] }[]\n  confidence: number\n  clarify?: { question: string; options: string[] }\n}\n\nconst PREFERENCE = new Set([\"material\", \"thread\", \"length_mm\", \"brand\", \"price_net\"])\nconst ENTITLEMENT = new Set([\"assortment_id\", \"price_list_id\", \"ship_country\"])\n\nfunction validate(r: Rewrite, identifiers: string[]) {\n  if (r.filters.some((f) => ENTITLEMENT.has(f.field))) throw new Error(\"entitlement filter from model\")\n  if (r.filters.some((f) => !PREFERENCE.has(f.field))) throw new Error(\"unknown filter field\")\n  if (!identifiers.every((id) => r.must_keep.includes(id))) throw new Error(\"identifier lost\")\n  return r\n}",{"type":141,"content":467},[468],"Unter der Antwort „Suche: Edelstahlschraube A6, 5 l, Preis bis 500 EUR\" anzuzeigen kostet eine Zeile UI und fängt die meisten Rewrite-Fehler ab, bevor sie ein Ticket werden. Der Einkäufer ist Experte; gib ihm den Korrekturhebel.",{"type":141,"content":470},[471],"Die schweren Teile sind die langweiligen: Identifier-Guard, Berechtigungstrennung, Session-Eval-Set, Fallback. Das Modell ist die leichte Komponente.",{"type":148,"level":149,"id":137,"text":138},{"type":158,"ordered":451,"items":474},[475,479,482,485,488,491,494,497,500,503,506],[476],{"tag":477,"href":38,"children":478},"a",[37],[480],{"tag":477,"href":41,"children":481},[40],[483],{"tag":477,"href":44,"children":484},[43],[486],{"tag":477,"href":47,"children":487},[46],[489],{"tag":477,"href":50,"children":490},[49],[492],{"tag":477,"href":53,"children":493},[52],[495],{"tag":477,"href":56,"children":496},[55],[498],{"tag":477,"href":59,"children":499},[58],[501],{"tag":477,"href":62,"children":502},[61],[504],{"tag":477,"href":65,"children":505},[64],[507],{"tag":477,"href":68,"children":508},[67],[510,584,642,700],{"slug":511,"published":5,"minutes":512,"category":7,"tags":513,"keywords":518,"about":531,"sources":541,"cover":578,"og":579,"expertise":71,"locales":580,"lang":74,"title":581,"description":582,"coverAlt":583},"embedding-model-selection-2026",9,[514,11,515,516,517],"Embeddings","MTEB","Vector search","Model selection",[519,520,521,522,523,524,525,526,527,528,529,530],"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",[532,535,538],{"name":533,"url":534},"Word embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWord_embedding",{"name":536,"url":537},"Information retrieval","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInformation_retrieval",{"name":539,"url":540},"Discounted cumulative gain","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDiscounted_cumulative_gain",[542,545,548,551,554,557,560,563,566,569,572,575],{"title":543,"url":544},"Enevoldsen et al.: MMTEB, Massive Multilingual Text Embedding Benchmark (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.13595",{"title":546,"url":547},"Hugging Face: Introducing RTEB, a new standard for retrieval evaluation (Oct 2025)","https:\u002F\u002Fhuggingface.co\u002Fblog\u002Frteb",{"title":549,"url":550},"OpenAI: Vector embeddings guide","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fembeddings",{"title":552,"url":553},"OpenAI: API pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fpricing",{"title":555,"url":556},"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":558,"url":559},"Voyage AI: Text embeddings documentation","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fembeddings",{"title":561,"url":562},"Voyage AI: Pricing","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fpricing",{"title":564,"url":565},"Google: Gemini API embeddings documentation","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fembeddings",{"title":567,"url":568},"Google: Gemini API pricing","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fpricing",{"title":570,"url":571},"Cohere: Embed models documentation","https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fcohere-embed",{"title":573,"url":574},"Qwen: Qwen3-Embedding-8B model card","https:\u002F\u002Fhuggingface.co\u002FQwen\u002FQwen3-Embedding-8B",{"title":576,"url":577},"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",[73,74,75],"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.",{"slug":585,"published":5,"minutes":586,"category":7,"tags":587,"keywords":591,"about":603,"sources":611,"cover":636,"og":637,"expertise":71,"locales":638,"lang":74,"title":639,"description":640,"coverAlt":641},"contextual-retrieval-late-chunking",10,[11,588,514,589,590],"Chunking","Contextual retrieval","Late chunking",[592,593,594,595,596,597,598,599,600,601,602],"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",[604,607,608],{"name":605,"url":606},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",{"name":33,"url":34},{"name":609,"url":610},"Sentence embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSentence_embedding",[612,615,618,621,624,627,630,633],{"title":613,"url":614},"Anthropic: Introducing Contextual Retrieval (Sep 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fcontextual-retrieval",{"title":616,"url":617},"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":619,"url":620},"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":622,"url":623},"Voyage AI: Introducing voyage-context-3 (Jul 2025)","https:\u002F\u002Fblog.voyageai.com\u002F2025\u002F07\u002F23\u002Fvoyage-context-3\u002F",{"title":625,"url":626},"Voyage AI: voyage-context-4 (Jun 2026)","https:\u002F\u002Fblog.voyageai.com\u002F2026\u002F06\u002F29\u002Fvoyage-context-4\u002F",{"title":628,"url":629},"Voyage AI: Contextualized chunk embeddings documentation","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fcontextualized-chunk-embeddings",{"title":631,"url":632},"Anthropic: Claude API pricing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fpricing",{"title":634,"url":635},"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",[73,74,75],"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":643,"published":5,"minutes":512,"category":7,"tags":644,"keywords":648,"about":661,"sources":669,"cover":694,"og":695,"expertise":71,"locales":696,"lang":74,"title":697,"description":698,"coverAlt":699},"rag-access-control-permissions",[11,645,646,647,516],"Access control","Security","Multi-tenancy",[649,650,651,652,653,654,655,656,657,658,659,660],"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",[662,665,668],{"name":663,"url":664},"Access-control list","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAccess-control_list",{"name":666,"url":667},"Multitenancy","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",{"name":605,"url":606},[670,673,676,679,682,685,688,691],{"title":671,"url":672},"OWASP GenAI Security Project: LLM08:2025 Vector and Embedding Weaknesses","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm082025-vector-and-embedding-weaknesses\u002F",{"title":674,"url":675},"PostgreSQL documentation: Row Security Policies","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fddl-rowsecurity.html",{"title":677,"url":678},"pgvector README: filtering and iterative index scans","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",{"title":680,"url":681},"Qdrant: Multitenancy and partitions guide","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fmultiple-partitions\u002F",{"title":683,"url":684},"Pinecone: Implement multitenancy using namespaces","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fimplement-multitenancy",{"title":686,"url":687},"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":689,"url":690},"OpenFGA: RAG authorization use case","https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fuse-cases\u002Frag-authorization",{"title":692,"url":693},"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",[73,74,75],"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":701,"published":5,"minutes":586,"category":7,"tags":702,"keywords":707,"about":719,"sources":727,"cover":754,"og":755,"expertise":756,"locales":757,"lang":74,"title":758,"description":759,"coverAlt":760},"rag-product-catalog-pim-data",[11,703,704,705,706],"PIM","Product data","B2B e-commerce","Metadata filtering",[708,709,710,711,712,713,714,715,716,717,718],"rag product catalog","rag pim data","llm product data","product catalog chatbot","akeneo rag","pimcore ai search","rag structured data","metadata filtering rag","product attributes embeddings","b2b product assistant","etim classification ai",[720,723,724],{"name":721,"url":722},"Product information management","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct_information_management",{"name":605,"url":606},{"name":725,"url":726},"ETIM (standard)","https:\u002F\u002Fwww.etim-international.com\u002Fclassification\u002F",[728,731,734,737,739,742,745,748,751],{"title":729,"url":730},"Akeneo API: Products, product values, metric values and product models","https:\u002F\u002Fapi.akeneo.com\u002Fconcepts\u002Fproducts.html",{"title":732,"url":733},"Akeneo Help Center: What about products with variants?","https:\u002F\u002Fhelp.akeneo.com\u002Fserenity-take-the-power-over-your-products\u002Fserenity-what-about-products-with-variants",{"title":735,"url":736},"Pimcore documentation: Classification Store","https:\u002F\u002Fdocs.pimcore.com\u002Fplatform\u002FPimcore\u002FObjects\u002FObject_Classes\u002FData_Types\u002FClassification_Store\u002F",{"title":738,"url":726},"ETIM International: Classification",{"title":740,"url":741},"ETIM International: ETIM releases and the IXF format","https:\u002F\u002Fetim-international.com\u002F?p=754",{"title":743,"url":744},"Reddy et al.: Shopping Queries Dataset, a large-scale ESCI benchmark for improving product search (2022)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2206.06588",{"title":746,"url":747},"Amazon Science: esci-data repository","https:\u002F\u002Fgithub.com\u002Famazon-science\u002Fesci-data",{"title":749,"url":750},"Qdrant documentation: Filtering","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Ffiltering\u002F",{"title":752,"url":753},"Sui et al.: Table Meets LLM, can large language models understand structured table data? (WSDM 2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2305.13062","\u002Fimages\u002Fblog\u002Frag-product-catalog-pim-data\u002Fcover.webp","\u002Fimages\u002Fblog\u002Frag-product-catalog-pim-data\u002Fog.jpg","b2b-ecommerce-developer",[73,74,75],"RAG über Produktkataloge: aus PIM-Daten Antworten machen, die halten","Produktdaten sind strukturiert, Chunking wie bei PDFs scheitert. So serialisiert man PIM-Attribute, leitet Spezifikationsfragen an Filter und bleibt exakt.","Ein Rahmen aus neun Feldern mit kleinen Symbolen, darunter ein Trichter zu einer einzelnen Karte.",1792245342504]