[{"data":1,"prerenderedAt":673},["ShallowReactive",2],{"blog-multilingual-rag-german-hungarian-hu":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":25,"sources":35,"cover":57,"og":58,"expertise":59,"locales":60,"lang":63,"title":64,"description":65,"coverAlt":66,"metaTitle":67,"takeaways":68,"faq":74,"toc":90,"blocks":118,"others":448},"multilingual-rag-german-hungarian","2026-10-16",7,"rag",[9,10,11,12,13],"RAG","Multilingual","Embeddings","German","Hungarian",[15,16,17,18,19,20,21,22,23,24],"multilingual rag","german rag embeddings","hungarian nlp search","cross-lingual retrieval","multilingual embedding model","bge-m3 german","german compound words search","hungarian stemming postgres","multilingual-e5-large-instruct","qwen3 embedding multilingual",[26,29,32],{"name":27,"url":28},"Cross-language information retrieval","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCross-language_information_retrieval",{"name":30,"url":31},"Agglutinative language","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAgglutinative_language",{"name":33,"url":34},"Compound (linguistics)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCompound_(linguistics)",[36,39,42,45,48,51,54],{"title":37,"url":38},"Enevoldsen et al.: MMTEB: Massive Multilingual Text Embedding Benchmark (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.13595",{"title":40,"url":41},"Chen et al.: M3-Embedding (BGE-M3): Multi-Linguality, Multi-Functionality, Multi-Granularity (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03216",{"title":43,"url":44},"Zhang et al.: Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.05176",{"title":46,"url":47},"Hugging Face: intfloat\u002Fmultilingual-e5-large-instruct model card","https:\u002F\u002Fhuggingface.co\u002Fintfloat\u002Fmultilingual-e5-large-instruct",{"title":49,"url":50},"Elasticsearch Reference: Hyphenation decompounder token filter","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Ftext-analysis\u002Fanalysis-hyp-decomp-tokenfilter",{"title":52,"url":53},"PostgreSQL 18 Documentation: Text search dictionaries","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Ftextsearch-dictionaries.html",{"title":55,"url":56},"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","ai-engineer",[61,62,63],"en","de","hu","Többnyelvű RAG német és magyar tartalomra: embeddingek, összetett szavak és nyelvek közötti keresés","RAG német és magyar tartalom fölött: többnyelvű embeddingek, összetett szavak, szótövezés, ékezetek és nyelvenkénti értékelés.","Egy német és egy magyar kérdés egy közös többnyelvű vektortérben találkozik a nyelvenkénti kulcsszóindexek mellett, majd reranker és válasz következik.","Többnyelvű RAG német és magyar tartalomra · Balázs Csorba",[69,70,71,72,73],"Egy többnyelvű embedding-modellel egy német kérdés magyar vagy angol szövegrészt is megtalál, a kulcsszavas keresésnek viszont továbbra is nyelvenkénti elemzés kell.","A német összetett szavak és a magyar toldalékok elrontják a naiv BM25-öt: németre szóösszetétel-bontás, magyarra Snowball-szótövező kell.","A felhasználók ékezetek és umlautok nélkül gépelnek magyarul és németül; a kulcsszóindexben hajtsd le az ékezeteket, de az eredeti szöveget is tárold.","Minden chunk nyelvét tárold, és döntsd el tudatosan, hogy lekérdezéskor nyelv szerint szűrsz, súlyozol vagy kevered a nyelveket.","A ranglisták sok nyelv átlagát mutatják; modellválasztás előtt építs egy kis értékelőkészletet nyelvenként és egyet nyelvek közötti keresésre.",[75,78,81,84,87],{"q":76,"a":77},"Melyik embedding-modell a legjobb németre és magyarra?","A saját adataidon teszteld. Az MMTEB szerzői a többnyelvű benchmarkjaikon az 560 millió paraméteres multilingual-e5-large-instructot találták a legjobb nyilvánosan elérhető modellnek, a BGE-M3 és a Qwen3 Embedding sorozat pedig erős, újabb, hosszabb bemenetet kezelő lehetőségek. A nyelvenkénti eredmények sokat eltérhetnek az átlagtól.",{"q":79,"a":80},"Indexelés előtt fordítsak le mindent angolra?","Általában nem. A fordítás pénzbe kerül, hibákat visz be, elveszti a pontos kifejezéseket, és nehézkessé teszi a hivatkozást. Egy többnyelvű embedding-modell és a nyelvenkénti kulcsszavas keresés megtartja az eredeti szöveget. Kis, értékes korpusznál, olyan nyelven, amelyet a modellek gyengén kezelnek, a fordítás ettől még segíthet.",{"q":82,"a":83},"Hogyan kezeljem a német összetett szavakat a keresésben?","Indexeléskor bontsd részeire az összetett szavakat egy decompounding szűrővel, például az Elasticsearch hyphenation decompounderével és egy német szólistával, a teljes szót pedig is tartsd meg. A sűrű embeddingek jobban boldogulnak az összetett szavakkal, ez is a hibrid keresés mellett szól.",{"q":85,"a":86},"Támogatja a PostgreSQL a magyar teljes szöveges keresést?","Igen. A PostgreSQL Snowball-szótövezőket tartalmaz, a Snowballnak pedig van magyar és német szótövezője is, így a to_tsvector függvénnyel hungarian vagy german konfigurációval indexelhetsz, ékezetfüggetlen találatokhoz pedig hozzáadhatod az unaccent bővítményt.",{"q":88,"a":89},"Milyen nyelven válaszoljon az asszisztens?","A kérdés nyelvén, hacsak a felhasználó mást nem kér. A forrást eredeti nyelven idézd és hivatkozd, mert egy lefordított idézet már nem ellenőrizhető a dokumentumon.",[91,94,97,100,103,106,109,112,115],{"id":92,"title":93},"why-multilingual-rag-is-harder","Miért nehezebb a többnyelvű RAG, mint az angol?",{"id":95,"title":96},"index-strategies","Melyik indexstratégiát válaszd?",{"id":98,"title":99},"multilingual-embedding-models","Mely többnyelvű embedding-modelleket érdemes kipróbálni?",{"id":101,"title":102},"german-compounds","Hogyan rontják el a német összetett szavak a kulcsszavas keresést?",{"id":104,"title":105},"hungarian-suffixes-and-accents","Mire van szükség a magyar toldalékokhoz és ékezetekhez?",{"id":107,"title":108},"language-metadata","Hogyan használd a nyelvi metaadatot lekérdezéskor?",{"id":110,"title":111},"answer-language","Milyen nyelven válaszoljon a modell?",{"id":113,"title":114},"evaluate-per-language","Hogyan értékeld a többnyelvű visszakeresést?",{"id":116,"title":117},"sources","Források",[119,123,126,129,151,152,200,209,218,219,256,270,283,284,309,312,313,357,359,380,381,384,403,404,412,413,421,423,424],{"type":120,"content":121},"paragraph",[122],"A legtöbb RAG-oktatóanyag angol dokumentumokat és angol kérdéseket feltételez. Az ausztriai, németországi és magyarországi projektek ritkán ilyenek: a termékadatok németül, az ügyfélszolgálati jegyek magyarul, a kézikönyvek angolul vannak, a felhasználók pedig azon a nyelven kérdeznek, amelyen éppen gondolkodnak, sokszor umlautok és ékezetek nélkül. A demóban működő visszakeresés csendben elveszíti a releváns szövegrészek felét.",{"type":120,"content":124},[125],"Ez a cikk a német és magyar tartalomnál fontos döntéseket veszi sorra: indexstratégia, többnyelvű embedding-modellek, mit tesznek a német összetett szavak és a magyar toldalékok a kulcsszavas kereséssel, ékezet-lehajtás, nyelvi metaadatok, a válasz nyelve és a nyelvenkénti értékelés. Ugyanezek a minták más, morfológiailag gazdag nyelvekre is érvényesek.",{"type":127,"level":128,"id":92,"text":93},"heading",2,{"type":120,"content":130},[131,132,136,137,140,141,136,144,136,147,150],"Három probléma adódik össze. Az első a morfológia: a német összetett szavakká ragasztja a főneveket (",{"tag":133,"children":134},"em",[135],"Kaffeetasse",", ",{"tag":133,"children":138},[139],"Druckluftschlauch","), a magyar pedig ragozó nyelv, így egy szótő sokféle toldalékkal jelenik meg (",{"tag":133,"children":142},[143],"ház",{"tag":133,"children":145},[146],"házban",{"tag":133,"children":148},[149],"házainkban","). A pontos egyezésen alapuló keresés ezeknek az alakoknak a többségét nem találja meg. A második a nyelvek közötti kérdés: egy német kérdés, amelyre a válasz egy angol kézikönyvben van, kulcsszavas kereséssel semmit sem talál. A harmadik a vegyes korpusz: ugyanaz a dokumentum három nyelven majdnem azonos találatokkal töltheti meg a lista elejét.",{"type":127,"level":128,"id":95,"text":96},{"type":153,"head":154,"rows":163},"table",[155,157,159,161],[156],"Stratégia",[158],"Működés",[160],"Mire jó",[162],"Figyelj",[164,173,182,191],[165,167,169,171],[166],"Egy többnyelvű index",[168],"Egy embedding-modell minden nyelvre, a nyelv metaadatként",[170],"Nyelvek közötti kérdések, vegyes korpusz",[172],"A kulcsszavas oldalnak továbbra is nyelvenkénti elemzés kell",[174,176,178,180],[175],"Nyelvenkénti index",[177],"Külön indexek, a kérdés a felismert nyelv szerint irányítva",[179],"Teljesen lokalizált oldalak párhuzamos tartalommal",[181],"Elveszíti a csak más nyelven létező válaszokat",[183,185,187,189],[184],"Fordítás indexeléskor",[186],"Mindent egy közvetítő nyelvre fordítunk",[188],"Kis, értékes korpusz gyengén támogatott nyelven",[190],"Költség, fordítási hibák, elveszett pontos kifejezések",[192,194,196,198],[193],"A kérdés fordítása",[195],"A kérdést keresés előtt a korpusz minden nyelvére átírjuk",[197],"Kulcsszóra építő keresés több nyelven",[199],"Kérdésenként egy plusz LLM-hívás",{"type":120,"content":201},[202,203,208],"A legtöbb projektnél egy többnyelvű sűrű indexszel és egy nyelvenként elemzett kulcsszóindexszel kezdek, hibrid kereséssel kombinálva, ahogy az ",{"tag":204,"to":205,"children":206},"link","\u002Fblog\u002Frag-pipeline-chunking-hybrid-search-reranking",[207],"Éles RAG-pipeline lépésről lépésre"," cikkben. Ez megtartja az eredeti szöveget, a sűrű oldalon kezeli a nyelvek közötti kérdéseket, és minden nyelv megkapja a megfelelő kulcsszavas elemzést.",{"type":210,"attrs":211,"inner":215,"caption":216},"diagram",{"viewBox":212,"role":213,"aria-labelledby":214},"0 0 720 170","img","mlr1-t mlr1-d","\u003Ctitle id=\"mlr1-t\">Hibrid többnyelvű visszakeresés\u003C\u002Ftitle>\u003Cdesc id=\"mlr1-d\">Felismerjük a kérdés nyelvét. A kérdés egy többnyelvű sűrű indexhez és nyelvenként elemzett kulcsszóindexekhez kerül. Az eredményeket összefésüljük, egy többnyelvű reranker sorba rendezi őket, a válasz pedig a kérdés nyelvén készül, eredeti nyelvű hivatkozásokkal.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"mlr1-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\">Kérdés\u003C\u002Ftext>\u003Ctext x=\"79\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">nyelvfelismerés\u003C\u002Ftext>\u003Cpath d=\"M138 85H158\" class=\"d-line\" marker-end=\"url(#mlr1-ah)\" \u002F>\u003Crect x=\"160\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"220\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Sűrű\u003C\u002Ftext>\u003Ctext x=\"220\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">többnyelvű\u003C\u002Ftext>\u003Cpath d=\"M279 85H299\" class=\"d-line\" marker-end=\"url(#mlr1-ah)\" \u002F>\u003Crect x=\"301\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"360\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Kulcsszó\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">nyelvenként\u003C\u002Ftext>\u003Cpath d=\"M419 85H439\" class=\"d-line\" marker-end=\"url(#mlr1-ah)\" \u002F>\u003Crect x=\"441\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"500\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Rerank\u003C\u002Ftext>\u003Ctext x=\"500\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">többnyelvű\u003C\u002Ftext>\u003Cpath d=\"M560 85H580\" class=\"d-line\" marker-end=\"url(#mlr1-ah)\" \u002F>\u003Crect x=\"582\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"641\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Válasz\u003C\u002Ftext>\u003Ctext x=\"641\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">a kérdező nyelvén\u003C\u002Ftext>",[217],"A sűrű oldal hidat ver a nyelvek közé; a kulcsszavas oldal elkapja a pontos kifejezéseket, például a cikkszámokat és a neveket.",{"type":127,"level":128,"id":98,"text":99},{"type":153,"head":220,"rows":229},[221,223,225,227],[222],"Modell",[224],"Méret",[226],"Max. bemenet",[228],"Megjegyzés",[230,238,247],[231,232,234,236],[23],[233],"560M",[235],"512 token",[237],"Az MMTEB-tanulmányban a legjobb nyilvános modell; 100 nyelv az XLM-R-ből",[239,241,243,245],[240],"BGE-M3",[242],"XLM-R alapú",[244],"8192 token",[246],"100+ nyelv; sűrű, ritka és többvektoros kimenet egy modellből",[248,250,252,254],[249],"Qwen3 Embedding",[251],"0.6B \u002F 4B \u002F 8B",[253],"Hosszú",[255],"Erős a többnyelvű és a nyelvek közötti visszakeresésben; hozzá illő rerankerek",{"type":120,"content":257},[258,259,263,264,266,267,269],"Az ",{"tag":260,"href":38,"children":261},"a",[262],"MMTEB-tanulmány"," több mint 500 feladatot fed le több mint 250 nyelven, és azt találta, hogy bár a milliárdos paraméterszámú LLM-alapú modellek egyes részhalmazokon vezetnek, összességében a legjobb nyilvánosan elérhető modell az 560 millió paraméteres multilingual-e5-large-instruct volt. Az 512 tokenes korlátja viszont számít: a hosszabb chunkokat szó nélkül levágja. A ",{"tag":260,"href":41,"children":265},[240]," 8192 tokenig kezeli a bemenetet, és a sűrű mellett ritka vektort is ad, vagyis tanult kulcsszó-jelet külön elemző nélkül. A ",{"tag":260,"href":44,"children":268},[249]," sorozat három méretben érhető el, hozzá illő rerankerekkel.",{"type":120,"content":271},[272,273,277,278,282],"Az átlag elrejti azokat a nyelveket, amelyek számodra fontosak. Egy többnyelvű ranglistát vezető modell magyar szakszövegen még lehet közepes. A nagy szolgáltatók hosztolt API-jai is többnyelvűek; ha az adatnak házon belül kell maradnia, lásd a ",{"tag":204,"to":274,"children":275},"\u002Fblog\u002Fself-hosted-llm-gdpr-cost",[276],"saját LLM-ek a GDPR-ban"," cikket, a tároláshoz pedig a ",{"tag":204,"to":279,"children":280},"\u002Fblog\u002Fpgvector-vs-vector-databases",[281],"pgvector vagy vektoradatbázis"," cikket.",{"type":127,"level":128,"id":101,"text":102},{"type":120,"content":285},[286,287,290,291,293,294,297,298,300,301,304,305,308],"Aki a ",{"tag":133,"children":288},[289],"Schlauch"," szóra keres, a ",{"tag":133,"children":292},[139]," szót is meg akarja találni. Egy szabványos tokenizáló egyetlen tokent lát, és nincs találat. A megoldás az indexeléskori szóösszetétel-bontás: az összetett szavakat ismert részekre bontjuk, és a részeket és a teljes szót is indexeljük. Az Elasticsearch ",{"tag":260,"href":50,"children":295},[296],"hyphenation decompounder"," szűrője elválasztási minták alapján javasol részszavakat, és csak a szólistában szereplőket tartja meg; a dokumentáció példája a ",{"tag":133,"children":299},[135]," szót ",{"tag":133,"children":302},[303],"Kaffee"," és ",{"tag":133,"children":306},[307],"tasse"," részekre bontja. A szűrő a Lucene összetettszó-szűrőjére épül, amelyet germán nyelvekre terveztek.",{"type":120,"content":310},[311],"A sűrű embeddingek elegánsabban kezelik az összetett szavakat, mert a részszó-tokenizáló amúgy is szétbontja a ritka szavakat. Ez is amellett szól, hogy mindkettőt futtasd: szóbontásos BM25-öt a pontos részekre, embeddinget a jelentésre.",{"type":127,"level":128,"id":104,"text":105},{"type":120,"content":314},[315,316,319,320,323,324,327,328,331,332,336,337,340,341,344,345,348,349,352,353,356],"Magyarnál a kulcsszavas oldalnak olyan szótövező kell, amely leválasztja az esetragokat és a birtokos személyjeleket, hogy a ",{"tag":133,"children":317},[318],"számlán",", a ",{"tag":133,"children":321},[322],"számlák"," és a ",{"tag":133,"children":325},[326],"számláimat"," egy tőben találkozzon. A ",{"tag":260,"href":56,"children":329},[330],"Snowballnak"," van magyar és német szótövezője, a PostgreSQL pedig Snowball-szótárakat tartalmaz, így már a Postgres teljes szöveges keresése is megoldja. Tedd mellé az ",{"tag":333,"children":334},"code",[335],"unaccent"," bővítményt, mert a felhasználók ",{"tag":133,"children":338},[339],"szamla","-t írnak ",{"tag":133,"children":342},[343],"számla"," helyett, és ",{"tag":133,"children":346},[347],"Groesse","-t vagy ",{"tag":133,"children":350},[351],"Grosse","-t ",{"tag":133,"children":354},[355],"Größe"," helyett.",{"type":333,"code":358},"-- PostgreSQL: one tsvector per chunk, analyzed in the chunk's own language\nCREATE EXTENSION IF NOT EXISTS unaccent;\n\n-- unaccent() is not IMMUTABLE, so wrap it for use in a generated column\nCREATE FUNCTION unaccent_immutable(t text) RETURNS text\n  LANGUAGE sql IMMUTABLE PARALLEL SAFE\n  AS $$ SELECT public.unaccent('public.unaccent', t) $$;\n\nALTER TABLE chunks ADD COLUMN lang regconfig NOT NULL DEFAULT 'simple';\nALTER TABLE chunks ADD COLUMN tsv tsvector\n  GENERATED ALWAYS AS (to_tsvector(lang, unaccent_immutable(text))) STORED;\nCREATE INDEX chunks_tsv ON chunks USING gin (tsv);\n\n-- Query in the user's language: 'hungarian', 'german' or 'english'\nSELECT id, ts_rank(tsv, q) AS score\nFROM chunks, websearch_to_tsquery('hungarian', unaccent('számláim')) AS q\nWHERE tsv @@ q ORDER BY score DESC LIMIT 20;\n",{"type":360,"variant":361,"title":362,"body":363},"callout","warn","Figyelj a hibás magyar karakterekre",[364],[365,366,304,369,372,373,304,376,379],"A régebbi magyar dokumentumokban gyakran ",{"tag":133,"children":367},[368],"õ",{"tag":133,"children":370},[371],"û"," (hullámvonalas) áll ",{"tag":133,"children":374},[375],"ő",{"tag":133,"children":377},[378],"ű"," (kettős ékezet) helyett, a Latin-1 kódolás maradványaként. Indexelés előtt normalizáld őket, különben a szótövezés, az embeddingek és a pontos keresés is külön szónak tekinti őket.",{"type":127,"level":128,"id":107,"text":108},{"type":120,"content":382},[383],"Indexeléskor minden chunk nyelvét ismerd fel és tárold, ne csak a dokumentumokét; a kézikönyvek és a jegyek gyakran keverik a nyelveket. Lekérdezéskor három lehetőséged van, és érdemes tudatosan választani:",{"type":385,"items":386},"list",[387,393,398],[388,392],{"tag":389,"children":390},"strong",[391],"Szűrés"," a felhasználó nyelvére, ha minden dokumentum minden nyelven megvan, mint egy teljesen lefordított webshopban. Ez eltávolítja a majdnem azonos találatokat.",[394,397],{"tag":389,"children":395},[396],"Súlyozás"," a felhasználó nyelve javára, de a többi nyelv engedése, ha egyes tartalmak csak egy nyelven léteznek, például a csak angol kézikönyvek.",[399,402],{"tag":389,"children":400},[401],"Duplikátumszűrés:"," ugyanannak a forrásnak a fordításait a visszakeresés után közös dokumentumazonosító alapján vond össze, és a felhasználó nyelvén írt változatot tartsd meg.",{"type":127,"level":128,"id":110,"text":111},{"type":120,"content":405},[406,407,411],"Kifejezetten utasítsd a modellt, hogy a kérdés nyelvén válaszoljon, mert az angol chunkokkal teli kontextus az angol felé húzza a választ. Az idézeteket és a hivatkozásokat hagyd a forrás nyelvén, és linkeld az eredeti szövegrészt, hogy az olvasó ellenőrizhesse az állítást, ahogy a ",{"tag":204,"to":408,"children":409},"\u002Fblog\u002Fllm-hallucination-grounding-citations",[410],"grounding és hivatkozások"," cikkben. A termékneveket, cikkszámokat és jogi kifejezéseket egyáltalán ne fordítsd.",{"type":127,"level":128,"id":113,"text":114},{"type":120,"content":414},[415,416,420],"Az értékelőkészletet már az elejétől a várt nyelvi keverékkel építsd: német kérdések német dokumentumokra, magyarok magyarokra, és egy nyelvek közötti szelet, ahol a válasz csak más nyelven létezik. Vegyél fel ékezet nélküli és elgépelt kérdéseket is, mert az emberek így gépelnek. A felidézést szeletenként jelentsd, ne egyetlen számként; éppen az átlag rejti el a gyengén teljesítő nyelvet. Maguk a metrikák ugyanazok, mint a ",{"tag":204,"to":417,"children":418},"\u002Fblog\u002Frag-evaluation-metrics",[419],"RAG értékelése"," cikkben.",{"type":333,"code":422},"# Illustrative eval slices; report recall@10 per slice, never only the average\nEVAL = [\n  {\"q\": \"Wie lang ist die Garantie auf Druckluftschläuche?\", \"lang\": \"de\", \"gold\": [\"warranty-de#3\"]},\n  {\"q\": \"mennyi a garancia a tomlokre\",                  \"lang\": \"hu\", \"gold\": [\"garancia-hu#2\"]},   # no accents\n  {\"q\": \"Betriebstemperatur Kompressor K40\",              \"lang\": \"de\", \"gold\": [\"k40-manual-en#7\"]}, # answer only in English\n]\n",{"type":127,"level":128,"id":116,"text":117},{"type":385,"ordered":425,"items":426},true,[427,430,433,436,439,442,445],[428],{"tag":260,"href":38,"children":429},[37],[431],{"tag":260,"href":41,"children":432},[40],[434],{"tag":260,"href":44,"children":435},[43],[437],{"tag":260,"href":47,"children":438},[46],[440],{"tag":260,"href":50,"children":441},[49],[443],{"tag":260,"href":53,"children":444},[52],[446],{"tag":260,"href":56,"children":447},[55],[449,506,560,604],{"slug":450,"published":5,"minutes":451,"category":7,"tags":452,"keywords":457,"about":468,"sources":478,"cover":500,"og":501,"expertise":59,"locales":502,"lang":63,"title":503,"description":504,"coverAlt":505},"pdf-document-parsing-for-rag",9,[9,453,454,455,456],"PDF parsing","OCR","Docling","Document AI",[458,459,460,461,462,463,464,465,466,467],"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",[469,472,475],{"name":470,"url":471},"PDF","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPDF",{"name":473,"url":474},"Optical character recognition","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOptical_character_recognition",{"name":476,"url":477},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",[479,482,485,488,491,494,497],{"title":480,"url":481},"Docling: README, features and license (GitHub)","https:\u002F\u002Fgithub.com\u002Fdocling-project\u002Fdocling",{"title":483,"url":484},"Auer et al.: Docling: An Efficient Open-Source Toolkit for AI-driven Document Conversion (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2501.17887",{"title":486,"url":487},"Datalab: Marker README, olmOCR-bench results and license (GitHub)","https:\u002F\u002Fgithub.com\u002Fdatalab-to\u002Fmarker",{"title":489,"url":490},"OpenDataLab: MinerU README and license (GitHub)","https:\u002F\u002Fgithub.com\u002Fopendatalab\u002FMinerU",{"title":492,"url":493},"Poznanski et al.: olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.18443",{"title":495,"url":496},"Claude Platform Docs: PDF support","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fpdf-support",{"title":498,"url":499},"Anthropic: Introducing Contextual Retrieval (Sep 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fcontextual-retrieval","\u002Fimages\u002Fblog\u002Fpdf-document-parsing-for-rag\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpdf-document-parsing-for-rag\u002Fog.jpg",[61,62,63],"PDF-feldolgozás RAG-hoz: layout-pipeline-ok, OCR és vizuális modellek összevetve","Miért a PDF-feldolgozáson múlik a RAG minősége, miben más a Docling, a Marker, a MinerU és a VLM-OCR, és hogyan teszteld a parsert saját dokumentumokon.","Egy PDF-oldal layout-felismerésen, OCR-en és táblázat-helyreállításon át tiszta Markdown-darabokká alakul egy keresőindex számára.",{"slug":507,"published":5,"minutes":508,"category":7,"tags":509,"keywords":515,"about":526,"sources":535,"cover":554,"og":555,"expertise":59,"locales":556,"lang":63,"title":557,"description":558,"coverAlt":559},"text-to-sql-llm-guardrails",8,[510,511,512,513,514],"Text-to-SQL","LLM security","PostgreSQL","Agents","Analytics",[516,517,518,519,520,521,522,523,524,525],"text to sql llm","text-to-sql guardrails","llm sql agent security","natural language to sql production","read only database role llm","bird benchmark text to sql","spider 2.0 benchmark","sqlglot validate sql","row level security llm","chat with your database",[527,530,533],{"name":528,"url":529},"SQL","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSQL",{"name":531,"url":532},"Natural language interface to databases","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNatural-language_user_interface",{"name":512,"url":534},"https:\u002F\u002Fwww.postgresql.org\u002F",[536,539,542,545,548,551],{"title":537,"url":538},"BIRD-bench: leaderboard and dataset description","https:\u002F\u002Fbird-bench.github.io\u002F",{"title":540,"url":541},"Lei et al.: Spider 2.0: Evaluating Language Models on Real-World Enterprise Text-to-SQL Workflows (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2411.07763",{"title":543,"url":544},"PostgreSQL 18 Documentation: Row Security Policies","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fddl-rowsecurity.html",{"title":546,"url":547},"PostgreSQL 18 Documentation: Client Connection Defaults (read-only and timeouts)","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fruntime-config-client.html",{"title":549,"url":550},"SQLGlot: SQL parser, transpiler and optimizer (GitHub)","https:\u002F\u002Fgithub.com\u002Ftobymao\u002Fsqlglot",{"title":552,"url":553},"OWASP Gen AI Security Project: LLM06:2025 Excessive Agency","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm062025-excessive-agency\u002F","\u002Fimages\u002Fblog\u002Ftext-to-sql-llm-guardrails\u002Fcover.webp","\u002Fimages\u002Fblog\u002Ftext-to-sql-llm-guardrails\u002Fog.jpg",[61,62,63],"Text-to-SQL LLM-mel: sémakontextus, csak olvasható szerepkörök és működő validálás","Mennyire pontos valójában a text-to-SQL, hogyan kapjon sémakontextust a modell, és milyen adatbázis- és kódszintű korlátok teszik biztonságossá az SQL-t.","Egy kérdés sémakontextuson, SQL-generáláson, egy validátoron és egy csak olvasható adatbázis-szerepkörön halad át, mielőtt visszajön az eredménytáblázat.",{"slug":561,"published":5,"minutes":562,"category":7,"tags":563,"keywords":567,"about":578,"sources":588,"cover":598,"og":599,"expertise":59,"locales":600,"lang":63,"title":601,"description":602,"coverAlt":603},"embedding-quantization-binary-matryoshka",5,[11,564,565,566,9],"Vector search","Quantization","pgvector",[568,569,570,571,572,573,574,575,576,577],"embedding quantization","binary quantization embeddings","int8 embeddings","matryoshka embeddings","reduce vector database memory","pgvector halfvec","pgvector binary_quantize","embedding dimensions reduction","rescoring binary embeddings","vector index memory cost",[579,582,585],{"name":580,"url":581},"Quantization (signal processing)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FQuantization_(signal_processing)",{"name":583,"url":584},"Nearest neighbor search","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNearest_neighbor_search",{"name":586,"url":587},"Hamming distance","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHamming_distance",[589,592,595],{"title":590,"url":591},"Hugging Face: Binary and Scalar Embedding Quantization for Significantly Faster and Cheaper Retrieval (Mar 2024)","https:\u002F\u002Fhuggingface.co\u002Fblog\u002Fembedding-quantization",{"title":593,"url":594},"Kusupati et al.: Matryoshka Representation Learning (2022)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.13147",{"title":596,"url":597},"pgvector README: halfvec, bit, binary quantization and subvector indexing","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector","\u002Fimages\u002Fblog\u002Fembedding-quantization-binary-matryoshka\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fembedding-quantization-binary-matryoshka\u002Fog.jpg",[61,62,63],"Embedding-kvantálás: bináris, int8 és Matryoshka vektorok a visszakeresés minőségének elvesztése nélkül","Hogyan zsugorítja 4–32-szeresére a vektorindexet a bináris és int8 kvantálás és a Matryoshka-vágás, mennyibe kerül ez, és hogyan hozza vissza a rescoring.","Egy float32 embedding félpontosságúvá, int8-cá és bináris bitekké zsugorodik, egy rescoring lépés pedig visszaállítja a rangsorolás minőségét.",{"slug":605,"published":606,"minutes":607,"category":7,"tags":608,"keywords":612,"about":622,"sources":630,"cover":667,"og":668,"expertise":59,"locales":669,"lang":63,"title":670,"description":671,"coverAlt":672},"graphrag-knowledge-graph-rag","2026-10-02",13,[609,610,611,9],"GraphRAG","Knowledge graphs","LightRAG",[609,613,614,615,616,617,618,619,620,621],"knowledge graph RAG","GraphRAG vs vector RAG","Microsoft GraphRAG explained","LightRAG vs GraphRAG","GraphRAG global vs local search","GraphRAG indexing cost","when to use GraphRAG","multi-hop RAG","LazyGraphRAG",[623,626,627],{"name":624,"url":625},"Knowledge graph","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnowledge_graph",{"name":476,"url":477},{"name":628,"url":629},"Leiden algorithm","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLeiden_algorithm",[631,634,637,640,643,646,649,652,655,658,661,664],{"title":632,"url":633},"Edge et al.: From Local to Global: A Graph RAG Approach to Query-Focused Summarization (arXiv:2404.16130)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2404.16130",{"title":635,"url":636},"Microsoft GraphRAG documentation: overview","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002F",{"title":638,"url":639},"Microsoft GraphRAG documentation: default dataflow","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Findex\u002Fdefault_dataflow\u002F",{"title":641,"url":642},"Microsoft GraphRAG documentation: global search","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fquery\u002Fglobal_search\u002F",{"title":644,"url":645},"Microsoft GraphRAG documentation: local search","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fquery\u002Flocal_search\u002F",{"title":647,"url":648},"Microsoft GraphRAG documentation: DRIFT search","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fquery\u002Fdrift_search\u002F",{"title":650,"url":651},"Microsoft GraphRAG documentation: getting started","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fget_started\u002F",{"title":653,"url":654},"Microsoft Research: LazyGraphRAG, setting a new standard for quality and cost (25 November 2024)","https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002Fblog\u002Flazygraphrag-setting-a-new-standard-for-quality-and-cost\u002F",{"title":656,"url":657},"Guo et al.: LightRAG: Simple and Fast Retrieval-Augmented Generation (arXiv:2410.05779)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.05779",{"title":659,"url":660},"HKUDS\u002FLightRAG on GitHub","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FLightRAG",{"title":662,"url":663},"Gutiérrez et al.: HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models (arXiv:2405.14831)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.14831",{"title":665,"url":666},"Xiang et al.: When to use Graphs in RAG: A Comprehensive Analysis for Graph Retrieval-Augmented Generation (arXiv:2506.05690)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.05690","\u002Fimages\u002Fblog\u002Fgraphrag-knowledge-graph-rag\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fgraphrag-knowledge-graph-rag\u002Fog.jpg",[61,62,63],"GraphRAG és knowledge-graph RAG: mikor veri a gráf a vektoros keresést","Mit csinál valójában a Microsoft GraphRAG és a LightRAG, mennyibe kerül az indexelés, és mikor jobb a tudásgráf a vektoros RAG-nál: multi-hop, globális kérdések, termékkatalógus.","Diagram: egy tudásgráf középen, entitásokhoz, közösségekhez, lokális és globális kereséshez és termékalkatrészekhez kapcsolva.",1792177150737]