> 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.
>
> Web page: https://balazscsorba.com/hu/blog/multilingual-rag-german-hungarian · Language: Magyar · Also available in: [English](https://balazscsorba.com/blog/multilingual-rag-german-hungarian.md) · [Deutsch](https://balazscsorba.com/de/blog/multilingual-rag-german-hungarian.md)
> Author: Balázs Csorba · Published: 2026-10-16 · Keywords: 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

[Blog](https://balazscsorba.com/hu/blog)/Retrieval és keresés

# 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.

[Balázs Csorba](https://balazscsorba.com/hu/about)·2026\. október 16.·7 perc olvasás

-   RAG
-   Multilingual
-   Embeddings
-   German
-   Hungarian

![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.](https://balazscsorba.com/images/blog/multilingual-rag-german-hungarian/cover.webp?v=7cd64f5c9d)

## A lényeg röviden

-   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.

Ezen az oldalon

1.  [Miért nehezebb a többnyelvű RAG, mint az angol?](https://balazscsorba.com/#why-multilingual-rag-is-harder)
2.  [Melyik indexstratégiát válaszd?](https://balazscsorba.com/#index-strategies)
3.  [Mely többnyelvű embedding-modelleket érdemes kipróbálni?](https://balazscsorba.com/#multilingual-embedding-models)
4.  [Hogyan rontják el a német összetett szavak a kulcsszavas keresést?](https://balazscsorba.com/#german-compounds)
5.  [Mire van szükség a magyar toldalékokhoz és ékezetekhez?](https://balazscsorba.com/#hungarian-suffixes-and-accents)
6.  [Hogyan használd a nyelvi metaadatot lekérdezéskor?](https://balazscsorba.com/#language-metadata)
7.  [Milyen nyelven válaszoljon a modell?](https://balazscsorba.com/#answer-language)
8.  [Hogyan értékeld a többnyelvű visszakeresést?](https://balazscsorba.com/#evaluate-per-language)
9.  [Források](https://balazscsorba.com/#sources)

Cikk meghallgatása

0:000:00

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.

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.

## Miért nehezebb a többnyelvű RAG, mint az angol?

Három probléma adódik össze. Az első a morfológia: a német összetett szavakká ragasztja a főneveket (_Kaffeetasse_, _Druckluftschlauch_), a magyar pedig ragozó nyelv, így egy szótő sokféle toldalékkal jelenik meg (_ház_, _házban_, _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.

## Melyik indexstratégiát válaszd?

Stratégia

Működés

Mire jó

Figyelj

Egy többnyelvű index

Egy embedding-modell minden nyelvre, a nyelv metaadatként

Nyelvek közötti kérdések, vegyes korpusz

A kulcsszavas oldalnak továbbra is nyelvenkénti elemzés kell

Nyelvenkénti index

Külön indexek, a kérdés a felismert nyelv szerint irányítva

Teljesen lokalizált oldalak párhuzamos tartalommal

Elveszíti a csak más nyelven létező válaszokat

Fordítás indexeléskor

Mindent egy közvetítő nyelvre fordítunk

Kis, értékes korpusz gyengén támogatott nyelven

Költség, fordítási hibák, elveszett pontos kifejezések

A kérdés fordítása

A kérdést keresés előtt a korpusz minden nyelvére átírjuk

Kulcsszóra építő keresés több nyelven

Kérdésenként egy plusz LLM-hívás

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 [Éles RAG-pipeline lépésről lépésre](https://balazscsorba.com/hu/blog/rag-pipeline-chunking-hybrid-search-reranking) 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.

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.

## Mely többnyelvű embedding-modelleket érdemes kipróbálni?

Modell

Méret

Max. bemenet

Megjegyzés

multilingual-e5-large-instruct

560M

512 token

Az MMTEB-tanulmányban a legjobb nyilvános modell; 100 nyelv az XLM-R-ből

BGE-M3

XLM-R alapú

8192 token

100+ nyelv; sűrű, ritka és többvektoros kimenet egy modellből

Qwen3 Embedding

0.6B / 4B / 8B

Hosszú

Erős a többnyelvű és a nyelvek közötti visszakeresésben; hozzá illő rerankerek

Az [MMTEB-tanulmány](https://arxiv.org/abs/2502.13595) 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 [BGE-M3](https://arxiv.org/abs/2402.03216) 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 [Qwen3 Embedding](https://arxiv.org/abs/2506.05176) sorozat három méretben érhető el, hozzá illő rerankerekkel.

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 [saját LLM-ek a GDPR-ban](https://balazscsorba.com/hu/blog/self-hosted-llm-gdpr-cost) cikket, a tároláshoz pedig a [pgvector vagy vektoradatbázis](https://balazscsorba.com/hu/blog/pgvector-vs-vector-databases) cikket.

## Hogyan rontják el a német összetett szavak a kulcsszavas keresést?

Aki a _Schlauch_ szóra keres, a _Druckluftschlauch_ 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 [hyphenation decompounder](https://www.elastic.co/docs/reference/text-analysis/analysis-hyp-decomp-tokenfilter) 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 _Kaffeetasse_ szót _Kaffee_ és _tasse_ részekre bontja. A szűrő a Lucene összetettszó-szűrőjére épül, amelyet germán nyelvekre terveztek.

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.

## Mire van szükség a magyar toldalékokhoz és ékezetekhez?

Magyarnál a kulcsszavas oldalnak olyan szótövező kell, amely leválasztja az esetragokat és a birtokos személyjeleket, hogy a _számlán_, a _számlák_ és a _számláimat_ egy tőben találkozzon. A [Snowballnak](https://snowballstem.org/algorithms/) 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 `unaccent` bővítményt, mert a felhasználók _szamla_\-t írnak _számla_ helyett, és _Groesse_\-t vagy _Grosse_\-t _Größe_ helyett.

```
-- PostgreSQL: one tsvector per chunk, analyzed in the chunk's own language
CREATE EXTENSION IF NOT EXISTS unaccent;

-- unaccent() is not IMMUTABLE, so wrap it for use in a generated column
CREATE FUNCTION unaccent_immutable(t text) RETURNS text
  LANGUAGE sql IMMUTABLE PARALLEL SAFE
  AS $$ SELECT public.unaccent('public.unaccent', t) $$;

ALTER TABLE chunks ADD COLUMN lang regconfig NOT NULL DEFAULT 'simple';
ALTER TABLE chunks ADD COLUMN tsv tsvector
  GENERATED ALWAYS AS (to_tsvector(lang, unaccent_immutable(text))) STORED;
CREATE INDEX chunks_tsv ON chunks USING gin (tsv);

-- Query in the user's language: 'hungarian', 'german' or 'english'
SELECT id, ts_rank(tsv, q) AS score
FROM chunks, websearch_to_tsquery('hungarian', unaccent('számláim')) AS q
WHERE tsv @@ q ORDER BY score DESC LIMIT 20;
```

**Figyelj a hibás magyar karakterekre**

A régebbi magyar dokumentumokban gyakran _õ_ és _û_ (hullámvonalas) áll _ő_ és _ű_ (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.

## Hogyan használd a nyelvi metaadatot lekérdezéskor?

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:

-   **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.
-   **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.
-   **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.

## Milyen nyelven válaszoljon a modell?

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 [grounding és hivatkozások](https://balazscsorba.com/hu/blog/llm-hallucination-grounding-citations) cikkben. A termékneveket, cikkszámokat és jogi kifejezéseket egyáltalán ne fordítsd.

## Hogyan értékeld a többnyelvű visszakeresést?

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 [RAG értékelése](https://balazscsorba.com/hu/blog/rag-evaluation-metrics) cikkben.

```
# Illustrative eval slices; report recall@10 per slice, never only the average
EVAL = [
  {"q": "Wie lang ist die Garantie auf Druckluftschläuche?", "lang": "de", "gold": ["warranty-de#3"]},
  {"q": "mennyi a garancia a tomlokre",                  "lang": "hu", "gold": ["garancia-hu#2"]},   # no accents
  {"q": "Betriebstemperatur Kompressor K40",              "lang": "de", "gold": ["k40-manual-en#7"]}, # answer only in English
]
```

## Források

1.  [Enevoldsen et al.: MMTEB: Massive Multilingual Text Embedding Benchmark (2025)](https://arxiv.org/abs/2502.13595)
2.  [Chen et al.: M3-Embedding (BGE-M3): Multi-Linguality, Multi-Functionality, Multi-Granularity (2024)](https://arxiv.org/abs/2402.03216)
3.  [Zhang et al.: Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models (2025)](https://arxiv.org/abs/2506.05176)
4.  [Hugging Face: intfloat/multilingual-e5-large-instruct model card](https://huggingface.co/intfloat/multilingual-e5-large-instruct)
5.  [Elasticsearch Reference: Hyphenation decompounder token filter](https://www.elastic.co/docs/reference/text-analysis/analysis-hyp-decomp-tokenfilter)
6.  [PostgreSQL 18 Documentation: Text search dictionaries](https://www.postgresql.org/docs/current/textsearch-dictionaries.html)
7.  [Snowball: stemming algorithms by language](https://snowballstem.org/algorithms/)

## Gyakori kérdések

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.

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.

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.

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.

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.

Írta: Csorba Balázs

Senior fullstack és AI mérnök Stájerországban – több mint 10 év Vue, Nuxt, Node.js és PHP, ma AI-ügynököknek építek eszközöket.

[AI fejlesztés és MCP szerverek →](https://balazscsorba.com/hu/expertise/ai-engineer)[Rólam →](https://balazscsorba.com/hu/about)

## További cikkek

-   [PDF-feldolgozás RAG-hoz: layout-pipeline-ok, OCR és vizuális modellek összevetve](https://balazscsorba.com/hu/blog/pdf-document-parsing-for-rag)
-   [Text-to-SQL LLM-mel: sémakontextus, csak olvasható szerepkörök és működő validálás](https://balazscsorba.com/hu/blog/text-to-sql-llm-guardrails)
-   [Embedding-kvantálás: bináris, int8 és Matryoshka vektorok a visszakeresés minőségének elvesztése nélkül](https://balazscsorba.com/hu/blog/embedding-quantization-binary-matryoshka)
-   [GraphRAG és knowledge-graph RAG: mikor veri a gráf a vektoros keresést](https://balazscsorba.com/hu/blog/graphrag-knowledge-graph-rag)

## Pont erre van szükséged?

Írj a projektedről vagy a pozícióról – szívesen hallok felőled.

[Lépj velem kapcsolatba](mailto:contact@balazscsorba.com) [Kapcsolódjunk LinkedInen](https://www.linkedin.com/in/balazs-csorba)
