[{"data":1,"prerenderedAt":749},["ShallowReactive",2],{"blog-embedding-fine-tuning-domain-hu":3},{"slug":4,"published":5,"updated":6,"minutes":7,"category":8,"tags":9,"keywords":15,"about":26,"sources":36,"cover":73,"og":74,"expertise":75,"locales":76,"lang":79,"title":80,"description":81,"coverAlt":82,"metaTitle":83,"takeaways":84,"faq":90,"toc":106,"blocks":140,"others":502},"embedding-fine-tuning-domain","2026-09-28","2026-10-17",8,"rag",[10,11,12,13,14],"Embeddings","Fine-tuning","RAG","Evaluation","Sentence Transformers",[16,17,18,19,20,21,22,23,24,25],"fine-tuning embedding models","domain adaptation embeddings","hard negative mining retrieval","MultipleNegativesRankingLoss","GISTEmbed vs MNRL","Matryoshka embedding dimensions","Qwen3-Embedding fine-tune","BGE-M3 vs EmbeddingGemma","embedding evaluation recall@k","catastrophic forgetting dense retrieval",[27,30,33],{"name":28,"url":29},"Word embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWord_embedding",{"name":31,"url":32},"Fine-tuning (deep learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFine-tuning_%28deep_learning%29",{"name":34,"url":35},"Information retrieval","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInformation_retrieval",[37,40,43,46,49,52,55,58,61,64,67,70],{"title":38,"url":39},"Sentence Transformers: training overview","https:\u002F\u002Fsbert.net\u002Fdocs\u002Fsentence_transformer\u002Ftraining_overview.html",{"title":41,"url":42},"Sentence Transformers: loss overview","https:\u002F\u002Fsbert.net\u002Fdocs\u002Fsentence_transformer\u002Floss_overview.html",{"title":44,"url":45},"Sentence Transformers: hard negative mining","https:\u002F\u002Fsbert.net\u002Fdocs\u002Fpackage_reference\u002Futil\u002Fhard_negatives.html",{"title":47,"url":48},"RocketQA (arXiv 2010.08191)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.08191",{"title":50,"url":51},"InPars (arXiv 2202.05144)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2202.05144",{"title":53,"url":54},"Promptagator (arXiv 2209.11755)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.11755",{"title":56,"url":57},"Qwen blog: Qwen3-Embedding (Jun 2025)","https:\u002F\u002Fqwenlm.github.io\u002Fblog\u002Fqwen3-embedding\u002F",{"title":59,"url":60},"BAAI\u002Fbge-m3 model card","https:\u002F\u002Fhuggingface.co\u002FBAAI\u002Fbge-m3",{"title":62,"url":63},"Google: EmbeddingGemma docs (Oct 2026)","https:\u002F\u002Fai.google.dev\u002Fgemma\u002Fdocs\u002Fembeddinggemma",{"title":65,"url":66},"Sentence Transformers: Matryoshka embeddings","https:\u002F\u002Fsbert.net\u002Fexamples\u002Fsentence_transformer\u002Ftraining\u002Fmatryoshka\u002FREADME.html",{"title":68,"url":69},"MMTEB (arXiv 2502.13595)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.13595",{"title":71,"url":72},"ANCE-Tele (arXiv 2210.17167)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2210.17167","\u002Fimages\u002Fblog\u002Fembedding-fine-tuning-domain\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fembedding-fine-tuning-domain\u002Fog.jpg","ai-engineer",[77,78,79],"en","de","hu","Beágyazó modellek finomhangolása: nehéz negatívok, veszteségek és kiértékelés","Beágyazások finomhangolása: mikor jobb a rerankernél, tanítópárok, nehéz negatívok, veszteségek a sentence-transformers v6-ban, Matryoshka és költség.","A bal oldali laza pontokból tanítás után szoros csoportok lesznek jobbra.","Beágyazó modellek finomhangolása · Balázs Csorba",[85,86,87,88,89],"A visszakeresőt akkor hangolja finomra, ha a megfelelő dokumentumot egyáltalán nem találja meg; rerankert akkor vegyen fel, ha megtalálja, de túl hátra sorolja. Sok csapatnak előbb a reranker kell.","A tanítópárok származhatnak naplókból, jegyekből vagy LLM által generált lekérdezésekből; az InPars és a Promptagator szerint a szintetikus lekérdezések szűrve működnek, a tesztfelosztásnak pedig dokumentumonként kell történnie, nem páronként.","A nehéz negatívok adják a legerősebb jelet és a legrosszabb hibákat: rögzített modellel bányássza őket, tartson margósávot, és cross-encoderrel pontozza újra őket a hamis negatívok kiszűréséhez.","A sentence-transformers v6-ban kezdjen a MultipleNegativesRankingLoss-szal vagy a gyorsítótáras változatával, próbálja a GISTEmbedet, ha a hamis negatívok zavarnak, és csomagolja MatryoshkaLoss-ba a veszteséget, ha kisebb dimenziókat szolgál ki.","Előtte és utána mérje a recall@k-t és az nDCG-t egy rögzített saját lekérdezéskészleten, ellenőrizze a független forgalmat felejtés szempontjából, és számítson arra, hogy egy gyorsan iterált kis modell megver egy drága nagy futtatást.",[91,94,97,100,103],{"q":92,"a":93},"Mikor hangoljak finomra egy beágyazó modellt reranker helyett?","Akkor, ha a releváns dokumentum egyáltalán nincs a visszakeresett jelöltek között, ami általában azt jelenti, hogy az alapmodell hasonlóságfelfogása nem illik a területéhez. Ha a megfelelő dokumentumot megtalálja, de hátra sorolja, egy cross-encoder reranker olcsóbb, és gyakran elég. Bármilyen tanítás előtt mérje meg, melyik esetről van szó.",{"q":95,"a":96},"Honnan szerezzek tanítóadatot beágyazások finomhangolásához?","Ahol van, használjon valódi lekérdezés–dokumentum párokat keresési naplókból vagy ügyfélszolgálati jegyekből, ahol nincs, ott darabonként generáltasson lekérdezéseket egy LLM-mel, kiszűrve a megválaszolhatatlanokat és a duplikátumokat. A tanító-, validációs és tesztkészletet dokumentumonként vagy lekérdezésklaszterenként ossza fel, hogy a tesztkészlet ne szivárogjon.",{"q":98,"a":99},"Mik a nehéz negatívok, és miért fontosak?","A nehéz negatívok olyan dokumentumok, amelyek hasonlítanak a lekérdezésre, de nem válaszolják meg. Finom különbségekre tanítják a modellt, amire a batchen belüli negatívok önmagukban nem képesek. A kockázat a hamis negatív, vagyis olyan dokumentum, amely mégis megválaszolja a kérdést, csak nincs felcímkézve, ezért margóval bányásszon, és cross-encoderrel pontozzon újra.",{"q":101,"a":102},"Melyik veszteségfüggvényt használjam a sentence-transformersben?","Lekérdezés–dokumentum párokhoz kezdjen a MultipleNegativesRankingLoss-szal és duplikátummentes batch-mintavételezővel. Korlátozott memóriánál nagyobb effektív batchhez használja a gyorsítótáras változatot, gyakori hamis negatívoknál a GISTEmbedLoss-t, és burokként a MatryoshkaLoss-t, ha csonkított beágyazásokat szolgál majd ki.",{"q":104,"a":105},"Mennyibe kerül egy beágyazó modell finomhangolása?","2026 októberében egy A100 80GB óránként kb. 1,79–2,79 dollárba kerül a szokásos GPU-felhőkben. Ezzel számolva egy hatórás futás nagyjából 11–17 dollár, egy 24 órás LoRA-futás egy 7–8B-s modellen kb. 43–67 dollár; a kis modellek általában rövidebb idő alatt tanulnak.",[107,110,113,116,119,122,125,128,131,134,137],{"id":108,"title":109},"when-fine-tuning-beats-a-reranker","Mikor jobb a finomhangolás a rerankernél",{"id":111,"title":112},"where-training-pairs-come-from","Honnan jönnek a tanítópárok",{"id":114,"title":115},"hard-negatives","Nehéz negatívok",{"id":117,"title":118},"losses-in-sentence-transformers-v6","Veszteségfüggvény választása a sentence-transformers v6-ban",{"id":120,"title":121},"base-models-worth-adapting-2026","2026-ban adaptálásra érdemes alapmodellek",{"id":123,"title":124},"matryoshka-and-dimension-reduction","Matryoshka: egyszer tanítani, kisebben kiszolgálni",{"id":126,"title":127},"evaluation-that-predicts-production","Az éles működést előrejelző kiértékelés",{"id":129,"title":130},"cost-and-gpu-hours","Költség GPU-órákban",{"id":132,"title":133},"pitfalls-forgetting-and-languages","Buktatók: felejtés és nyelvek",{"id":135,"title":136},"checklist","Ellenőrzőlista az index cseréje előtt",{"id":138,"title":139},"sources","Források",[141,150,159,162,169,175,187,188,199,203,206,209,210,216,236,242,243,252,317,335,337,338,351,358,359,371,374,375,381,393,394,407,410,411,423,435,436,455,463,464],{"type":142,"content":143},"paragraph",[144,145,149],"Egy ",{"tag":146,"children":147},"strong",[148],"beágyazó modell finomhangolása"," azt jelenti, hogy egy általános visszakeresőt a saját terület lekérdezés–dokumentum párjain tanít, hogy a felhasználók kérdései az őket megválaszoló dokumentumok közelébe kerüljenek. Akkor éri meg, ha az alapmodell hasonlóságfelfogása nem egyezik az Önével: egymásra hasonlító, de mást jelentő termékkódok, szabályozási nyelv, belső szakzsargon. Nem éri meg, ha a megfelelő dokumentumot már megtalálja, csak túl hátra sorolja, mert ezt egy reranker olcsóbban javítja.",{"type":142,"content":151},[152,153,158],"Ez a cikk a tanítási ciklusról szól, nem a modellválasztékról: a finomhangolás és az újrarangsorolás közötti döntésről, a tanítópárok forrásáról, a nehéz negatívokról, a sentence-transformers v6 veszteségfüggvényeiről, a 2026 októberében adaptálásra érdemes alapmodellekről, a Matryoshka-dimenziókról, az éles működést előrejelző kiértékelésről, a GPU-költségről és a hibamódokról. Magát az alapmodell kiválasztását a ",{"tag":154,"to":155,"children":156},"link","\u002Fblog\u002Fembedding-model-selection-2026",[157],"beágyazó modell kiválasztásáról"," szóló cikk tárgyalja.",{"type":160,"level":161,"id":108,"text":109},"heading",2,{"type":142,"content":163},[164,165,168],"A finomhangolás akkor jobb a rerankernél, ha a hiba a visszakeresésben van, nem a rangsorolásban. A sentence-transformers dokumentációja egyszerűen fogalmaz: a finomhangolás „gyakran jelentősen javítja a modell teljesítményét az Ön felhasználási esetén, mert minden feladat más hasonlóságfelfogást igényel” (",{"tag":166,"href":39,"children":167},"a",[14],"). A reranker együtt olvassa a lekérdezést és a dokumentumot, és páronként pontosabb, de csak azt tudja átrendezni, amit az első lépcső megtalált. Ha a válasz nincs a top 50-ben, egyetlen reranker sem menti meg.",{"type":170,"src":171,"alt":172,"wide":173,"caption":174},"image","\u002Fimages\u002Fblog\u002Fembedding-fine-tuning-domain\u002Fdiagram-4.webp","Finomhangolás vagy újrarangsorolás: a döntés Három sor. Először: van lekérdezés–dokumentum relevanciajele naplókból, jegyekből vagy generált lekérdezésekből? Ha nincs, kezdjen hibrid visszakereséssel és rerankerrel. Másodszor: a megfelelő dokumentum a top 50-ben van, de hátra sorolva? Akkor vegyen fel rerankert. Harmadszor: a megfelelő dokumentumot egyáltalán nem találja meg? Akkor hangolja finomra a visszakeresőt, és csak akkor élesítse, ha átment a rögzített lekérdezéskészleten futó kiértékelési kapun.",true,"Először mérje meg, hová kerül a megfelelő dokumentum; csak a visszakeresési hiba indokolja a visszakereső tanítását.",{"type":142,"content":176},[177,178,181,182,186],"A gyakorlatban a kettő együtt működik. Maga a BGE-M3 modellkártyája is hibrid visszakeresést és utána cross-encoder rerankert ajánl (",{"tag":166,"href":60,"children":179},[180],"BGE-M3","), és a szokásos végállapot egy finomhangolt visszakereső, rajta egy rerankerrel. A költség szempontjából a sorrend számít: előbb vegye fel a rerankert, mérje meg, mi hiányzik még, és csak akkor tanítson, ha maradnak visszakeresési hibák. A rerankerek összevetését a ",{"tag":154,"to":183,"children":184},"\u002Fblog\u002Freranking-models-compared",[185],"cross-encoder rerankerek összehasonlítva"," című cikk tartalmazza.",{"type":160,"level":161,"id":111,"text":112},{"type":142,"content":189},[190,191,194,195,198],"A legjobb párok a valódiak: egy keresési lekérdezés és a dokumentum, amelyet a felhasználó megnyitott és megtartott, egy ügyfélszolgálati jegy és a cikk, amely megoldotta. Ahol ilyenek nincsenek, ott generálni kell őket. Az InPars néhány példás LLM-promptokkal dokumentumonként lekérdezéseket generál, és arról számol be, hogy a kizárólag ezen az adaton finomhangolt visszakeresők jobbak a BM25-nél (",{"tag":166,"href":51,"children":192},[193],"InPars","); a Promptagator rövid feladatleírásból és legfeljebb nyolc példából generál feladatspecifikus lekérdezéseket, és szerint a dual encoderek 11 adathalmazon átlagosan több mint 1,2 nDCG-vel verik az MS MARCO-n tanított ColBERT v2-t (",{"tag":166,"href":54,"children":196},[197],"Promptagator",").",{"type":170,"src":200,"alt":201,"wide":173,"caption":202},"\u002Fimages\u002Fblog\u002Fembedding-fine-tuning-domain\u002Fdiagram-8.webp","A tanítóadatok összeállítása Öt lépés balról jobbra: korpuszdarabok; egy LLM darabonként lekérdezéseket generál; szűrők dobják ki a megválaszolhatatlan, duplikált és rossz nyelvű lekérdezéseket; nehéz negatívok bányászata rögzített modellel, margósávon belül, cross-encoderes újrapontozással; végül a párok dokumentumonkénti felosztása tanító-, validációs és tesztkészletre.","Minden szűrő olyan zajt távolít el, amelyet a modell egyébként megtanulna; a dokumentumonkénti felosztás tisztességesen tartja a tesztet.",{"type":142,"content":204},[205],"A szintetikus adat csak szűrés után működik. Dobja ki azokat a lekérdezéseket, amelyekre a darab nem ad választ, a közel azonosakat, a rossz nyelvűeket, és azokat a kérdéseket, amelyek egész kifejezéseket másolnak a darabból, mert ezek a felszíni szavak egyeztetésére tanítják a modellt a jelentés helyett. Nincs publikált szám arra, hány pár kell; a gyakorlatban területenként néhány ezer tiszta pár szokásos kiindulópont, és a minőség fontosabb a mennyiségnél.",{"type":142,"content":207},[208],"A tanító-, validációs és tesztkészletet dokumentumonként vagy lekérdezésklaszterenként ossza fel, soha ne páronként. Ha ugyanarról a darabról szóló két generált lekérdezés a felosztás két oldalára kerül, a teszt a bemagolást méri. Az első kísérlet előtt fagyassza be a tesztkészletet, és hangolás közben ne nézzen bele; erre a validációs készlet való.",{"type":160,"level":161,"id":114,"text":115},{"type":142,"content":211},[212,213,198],"Az olyan kontrasztív veszteségek, mint a MultipleNegativesRankingLoss, a batch minden más pozitív példáját negatívnak tekintik. Ezek a batchen belüli negatívok többnyire könnyűek, így a modell a durva különbségeket gyorsan, a finomakat lassan tanulja meg. A nehéz negatívok, vagyis a relevánsnak látszó, de nem releváns dokumentumok hordozzák a legerősebb jelet. A RocketQA alkotta meg azt a receptet, amelyet a legtöbb finomhangolás ma is átvesz, batchek közötti negatívokkal és zajszűrt nehéz negatívokkal, mert a címkézetlen pozitívok egyébként megmérgezik a tanítást (",{"tag":166,"href":48,"children":214},[215],"RocketQA",{"type":142,"content":217},[218,219,223,224,227,228,231,232,235],"A sentence-transformers ma már tartalmazza az eszközöket. A ",{"tag":220,"children":221},"code",[222],"mine_hard_negatives()"," beágyazza a párokat, minden lekérdezéshez megkeresi a legközelebbi dokumentumokat, cross-encoderrel újrapontozhatja a jelölteket, és a ",{"tag":220,"children":225},[226],"range_min",", ",{"tag":220,"children":229},[230],"range_max",", valamint egy abszolút vagy relatív margó által kijelölt sávon belül választ negatívokat (",{"tag":166,"href":45,"children":233},[234],"nehéz negatívok","). Hagyja ki a legfelső néhány találatot, mert ezek a legvalószínűbb hamis negatívok, és tartson margót a pozitív pontszáma alatt. Az alapmodell rögzített másolatával bányásszon, ne a tanított modellel, különben a negatívok elmozdulnak Ön alatt.",{"type":142,"content":237},[238,239,241],"Bányászás után hasznos józansági ellenőrzés kézzel elolvasni húsz véletlenszerű hármast. Ha több negatív valójában megválaszolja a lekérdezést, emelje a ",{"tag":220,"children":240},[226]," értékét vagy szűkítse a margót; ha a negatívok nyilvánvalóan függetlenek, túl könnyűek, és a sáv túl széles. Itt tíz perc olvasás megspórol egy olyan tanítási futást, amely rossz határt tanít a modellnek.",{"type":160,"level":161,"id":117,"text":118},{"type":142,"content":244},[245,246,249,250,198],"Lekérdezés–dokumentum párokhoz a dokumentált lehetőségek a MultipleNegativesRankingLoss, annak gyorsítótáras változata, a MegaBatchMarginLoss és a két GISTEmbed-veszteség; a MatryoshkaLoss, a Matryoshka2dLoss és az AdaptiveLayerLoss bármelyiket becsomagolja (",{"tag":166,"href":42,"children":247},[248],"veszteségáttekintő","). A tanítási áttekintő saját példája egy epochot, 16-os batchméretet, 2e-5 tanulási rátát és duplikátummentes batch-mintavételezőt használ, mert a batchen belüli negatívokra épülő veszteségek romlanak, ha egy batch kétszer tartalmazza ugyanazt a szöveget (",{"tag":166,"href":39,"children":251},[14],{"type":253,"head":254,"rows":265},"table",[255,257,259,261,263],[256],"Veszteség",[258],"Bemenet",[260],"Igény",[262],"Mikor",[264],"Buktató",[266,276,286,296,306],[267,268,270,272,274],[19],[269],"párok vagy hármasok",[271],"nagy batch segít",[273],"alapértelmezett kezdés",[275],"a batchen belüli duplikátum hamis negatív lesz",[277,279,280,282,284],[278],"CachedMultipleNegativesRankingLoss",[269],[281],"gradiens-gyorsítótár",[283],"nagy effektív batch kis GPU-n",[285],"kicsit lassabb; Matryoshka2d-vel nem",[287,289,290,292,294],[288],"GISTEmbedLoss",[269],[291],"vezetőmodell",[293],"sok hamis negatív",[295],"tanítási többletteher",[297,299,300,302,304],[298],"CachedGISTEmbedLoss",[269],[301],"vezetőmodell, gyorsítótár",[303],"GIST nagy batchekkel",[305],"a mini_batch_size-t a memóriához kell igazítani",[307,309,311,313,315],[308],"MatryoshkaLoss",[310],"más veszteséget burkol",[312],"dimenziók listája",[314],"csonkított vektorok kiszolgálása",[316],"minden kiszolgált dimenziót mérni kell",{"type":142,"content":318},[319,320,324,325,329,330,334],"A CachedMultipleNegativesRankingLoss gradiens-gyorsítótárazással jóval nagyobb batcheket ér el többletmemória nélkül, kis sebességveszteség árán (",{"tag":166,"href":321,"children":322},"https:\u002F\u002Fsbert.net\u002Fdocs\u002Fpackage_reference\u002Fsentence_transformer\u002Flosses.html",[323],"veszteségek","), a GradCache technikára építve (",{"tag":166,"href":326,"children":327},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2101.06983",[328],"GradCache","). A GISTEmbedLoss egy vezetőmodellt kap, és azzal dobja el azokat a batchen belüli negatívokat, amelyeket a vezetőmodell túl hasonlónak ítél a pozitívhoz, ami közvetlenül a hamis negatívokat kezeli (",{"tag":166,"href":331,"children":332},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.16829",[333],"GISTEmbed","). Egy korlátozást érdemes ismerni: a Matryoshka2dLoss nem tudja becsomagolni a gyorsítótáras, hook-alapú veszteségeket.",{"type":220,"code":336},"# Sketch for sentence-transformers v6: mine negatives with a fixed model, train with a cached loss\nfrom sentence_transformers import SentenceTransformer, SentenceTransformerTrainer, SentenceTransformerTrainingArguments\nfrom sentence_transformers.cross_encoder import CrossEncoder\nfrom sentence_transformers.sentence_transformer.losses import CachedMultipleNegativesRankingLoss, MatryoshkaLoss\nfrom sentence_transformers.util import mine_hard_negatives\n\nbase = SentenceTransformer(\"BAAI\u002Fbge-m3\")\nminer = SentenceTransformer(\"BAAI\u002Fbge-m3\")             # fixed copy, never the model being trained\ntrain = mine_hard_negatives(\n    pairs_train, miner, cross_encoder=CrossEncoder(\"BAAI\u002Fbge-reranker-v2-m3\"),\n    range_min=10, range_max=50, relative_margin=0.05, num_negatives=3, output_format=\"triplet\",\n)\n\nloss = MatryoshkaLoss(base, CachedMultipleNegativesRankingLoss(base, mini_batch_size=32),\n                      matryoshka_dims=[1024, 512, 256])\nargs = SentenceTransformerTrainingArguments(\n    output_dir=\"out\u002Fbge-m3-domain\", num_train_epochs=1, per_device_train_batch_size=128,\n    learning_rate=2e-5, warmup_ratio=0.1, bf16=True, batch_sampler=\"no_duplicates\",\n)\nSentenceTransformerTrainer(model=base, args=args, train_dataset=train, loss=loss).train()",{"type":160,"level":161,"id":120,"text":121},{"type":142,"content":339},[340,341,343,344,347,348,198],"2026 októberében három nyílt család fedi le a legtöbb igényt. A BGE-M3 MIT licencű, egyetlen modellből végez sűrű, ritka és többvektoros visszakeresést, 8192 tokenes bemenetet kezel, és több mint 100 nyelvet fed le (",{"tag":166,"href":60,"children":342},[180],"). A Qwen3-Embedding 0.6B, 4B és 8B méretben érhető el Apache-2.0 alatt, 32K kontextussal, instrukciófüggő bemenettel és Matryoshka-dimenziókkal; a saját tanítása LoRA-t és háromlépcsős folyamatot használt, amelyben az LLM tanítóadatot is szintetizált (",{"tag":166,"href":57,"children":345},[346],"Qwen","). Az EmbeddingGemma 2 egy 740M-es multimodális modell, 768-tól 128 dimenzióig terjedő Matryoshka-csonkítással és Apache-2.0 súlyokkal (",{"tag":166,"href":63,"children":349},[350],"Google",{"type":142,"content":352},[353,354,357],"Az első kört általában a kisebb modell nyeri. Egy 0.6B-s modell egy GPU-n órák alatt tanul, így egy 8B-s futás idejében tíz kísérletet futtathat az adatokkal és a negatívokkal, a javulás nagy része pedig az adatminőségből jön, nem a paraméterszámból. Az MMTEB-tanulmány a 560M paraméteres multilingual-e5-large-instructot nevezte meg a többnyelvű benchmarkjának legjobb nyilvánosan elérhető modelljeként (",{"tag":166,"href":69,"children":355},[356],"MMTEB","); ez a tanulmány pillanatképére vonatkozik, de megmutatja, meddig juthat egy közepes méretű modell.",{"type":160,"level":161,"id":123,"text":124},{"type":142,"content":360},[361,362,365,366,370],"A MatryoshkaLoss a beágyazás csonkított szeleteire alkalmazza az alapveszteséget, így az első 512, 256 vagy 128 dimenzió önmagában is használható marad. A könyvtár saját kísérletében egy Matryoshkával tanított modell a beágyazási méret 8,3 százalékánál megőrizte teljes teljesítménye 98,37 százalékát, szemben egy hagyományos modell 96,46 százalékával (",{"tag":166,"href":66,"children":363},[364],"Matryoshka","). Ez a kiszolgáláskor számít, ahol a kisebb vektor kevesebb memóriát és gyorsabb keresést jelent; a kvantálás és a csonkítás kombinálható, ahogy a ",{"tag":154,"to":367,"children":368},"\u002Fblog\u002Fembedding-quantization-binary-matryoshka",[369],"beágyazás-kvantálás bináris és Matryoshka módszerekkel"," című cikk leírja.",{"type":142,"content":372},[373],"A megkötés a kiértékelés: a Matryoshka csak akkor térül meg, ha a kiszolgált szelet ugyanaz, amelyet megmért. A recallt minden telepíteni tervezett dimenzión mérje, ne csak teljes méretben.",{"type":160,"level":161,"id":126,"text":127},{"type":142,"content":376},[377,378,380],"A recall@k-t, az nDCG@10-et és az MRR-t a befagyasztott tesztkészletén mérje tanítás előtt és után, azon a k-n, amelyet ténylegesen visszakeres. A nyilvános benchmarkok itt eleve gyenge helyettesítők: az MMTEB több mint 500 feladatot ölel fel több mint 250 nyelven, angol benchmarkja pedig zero-shot célú, és kizárja az olyan adathalmazokat, mint az MS MARCO, amelyeket gyakran használnak finomhangolásra (",{"tag":166,"href":69,"children":379},[356],"). Egy finomhangolás egyszerre emelheti a területi pontszámot és csökkentheti a ranglistás pontszámot, és csak az első számít.",{"type":142,"content":382},[383,384,387,388,392],"Ezután futtassa újra a teljes RAG-kiértékelést, ne csak a visszakeresést, mert a jobb recall is adhat rosszabb válaszokat, ha az új legjobb darabok hosszabbak vagy zajosabbak. A összevetést kezelje bizonyossági szinttel ellátott döntésként: a ",{"tag":220,"children":385},[386],"jev-decide"," skillemben az alacsony bizonyosságú döntés emberhez kerül, ahelyett hogy végrehajtódna, és egy olyan finomhangolás, amely a validációs készlet zajánál kisebb különbséggel nyer, ebbe a kategóriába tartozik. A teljes válaszokhoz szükséges kiértékelési adatok generálását a ",{"tag":154,"to":389,"children":390},"\u002Fblog\u002Fsynthetic-test-data-rag-evals",[391],"szintetikus tesztadatok RAG-kiértékeléshez"," című cikk írja le.",{"type":160,"level":161,"id":129,"text":130},{"type":142,"content":395},[396,397,401,402,406],"A számítás rövid. 2026 októberében egy A100 80GB igény szerinti bérlése óránként kb. 1,79 dollár a RunPodnál (",{"tag":166,"href":398,"children":399},"https:\u002F\u002Fwww.runpod.io\u002Fpricing",[400],"RunPod",") és 2,79 dollár a Lambdánál (",{"tag":166,"href":403,"children":404},"https:\u002F\u002Flambda.ai\u002Fpricing",[405],"Lambda","). Egy kártyán hatórás futás így kb. 11–17 dollár, egy 7–8B-s modellen 24 órás LoRA-futás kb. 43–67 dollár; ezek óradíjakból számolt becslések, nem benchmarkok. A kis modellek teljes finomhangolása elfér egy kártyán; a 7–8B-s modellekhez általában LoRA és gradiens-gyorsítótár kell.",{"type":142,"content":408},[409],"Nem a GPU a drága, hanem az iterációs ciklus. Három nap gyors futtatás egy 0.5B-s modellen, mindegyikben egyetlen dolgot változtatva az adatokon vagy a negatívokon, általában jobb eredményt ad, mint egy hősies futás egy 8B-s modellen, amelyet nem engedhet meg magának többször.",{"type":160,"level":161,"id":132,"text":133},{"type":142,"content":412},[413,414,417,418,422],"A katasztrofális felejtés a sűrű visszakeresésben dokumentált jelenség, nem feltevés. Az ANCE-Tele az iteratív bányászó–tanító ciklusok instabilitását arra vezette vissza, hogy a modellek a negatívok különböző csoportjait megtanulják, majd elfelejtik (",{"tag":166,"href":72,"children":415},[416],"ANCE-Tele","), egy 2025-ös tanulmány pedig azt találta, hogy az időbeli lekérdezésekre hangolt rendszerek a hétköznapi lekérdezéseken veszítenek pontosságukból (",{"tag":166,"href":419,"children":420},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.06782",[421],"időbeli IR","). Tartsa alacsonyan a tanulási rátát, először egy epochot tanítson, keverjen vissza néhány általános párt, és a területi készlet mellett teszteljen egy mintát független lekérdezésekből is.",{"type":424,"variant":425,"title":426,"body":427},"callout","warn","Nyelvenként építsen saját kiértékelő készletet",[428],[429,430,434],"A nyelvi lefedettségről szóló állítások tágabbak, mint a benchmarkok lefedettsége. Az MTEB visszakeresési sorozatában vannak német készletek, például a GermanDPR, a magyar visszakeresést viszont csak néhány beküldött feladat képviseli (",{"tag":166,"href":431,"children":432},"https:\u002F\u002Fembeddings-benchmark.github.io\u002Fmteb\u002Foverview\u002Favailable_tasks\u002Fretrieval\u002F",[433],"MTEB","). Ha a felhasználói németül és magyarul kérdeznek, mint a saját, LLM-folyamattal lefordított oldalamon, minden nyelven maga generáljon és értékeljen tesztlekérdezéseket.",{"type":160,"level":161,"id":135,"text":136},{"type":437,"ordered":173,"items":438},"list",[439,441,443,445,447,449,451,453],[440],"Rögzítsen alapállapotot, és naplózza a recall@k, nDCG@10 és MRR értékeket egy befagyasztott tesztkészleten.",[442],"Győződjön meg róla, hogy visszakeresési hibáról van szó, nem rangsorolási gondról, amelyet egy reranker megoldana.",[444],"Nyelvenként építsen szűrt párokat, és dokumentumonként ossza fel őket.",[446],"Rögzített modellel és cross-encoder szűrővel bányásszon negatívokat.",[448],"Kezdjen MNRL-lel vagy a gyorsítótáras változatával, 2e-5-tel és egy epochhal.",[450],"Értékeljen ki minden kiszolgálni tervezett Matryoshka-dimenziót.",[452],"Ellenőrizze a független lekérdezéseket felejtés szempontjából, majd futtassa újra a teljes RAG-kiértékelést.",[454],"Csak akkor ágyazza be újra a korpuszt és cserélje az indexet, ha a fentiek mind teljesültek.",{"type":142,"content":456},[457,458,462],"Ha a visszakeresése elvéti a szakterületi kérdéseket, és tudni szeretné, hogy a finomhangolás vagy egy reranker az olcsóbb megoldás, nézze meg a ",{"tag":154,"to":459,"children":460},"\u002Fexpertise\u002Fai-engineer",[461],"MI-mérnöki munkámat",".",{"type":160,"level":161,"id":138,"text":139},{"type":437,"ordered":173,"items":465},[466,469,472,475,478,481,484,487,490,493,496,499],[467],{"tag":166,"href":39,"children":468},[38],[470],{"tag":166,"href":42,"children":471},[41],[473],{"tag":166,"href":45,"children":474},[44],[476],{"tag":166,"href":48,"children":477},[47],[479],{"tag":166,"href":51,"children":480},[50],[482],{"tag":166,"href":54,"children":483},[53],[485],{"tag":166,"href":57,"children":486},[56],[488],{"tag":166,"href":60,"children":489},[59],[491],{"tag":166,"href":63,"children":492},[62],[494],{"tag":166,"href":66,"children":495},[65],[497],{"tag":166,"href":69,"children":498},[68],[500],{"tag":166,"href":72,"children":501},[71],[503,570,630,688],{"slug":504,"published":6,"minutes":505,"category":8,"tags":506,"keywords":509,"about":522,"sources":528,"cover":564,"og":565,"expertise":75,"locales":566,"lang":79,"title":567,"description":568,"coverAlt":569},"embedding-model-selection-2026",9,[10,12,433,507,508],"Vector search","Model selection",[510,511,512,513,514,515,516,517,518,519,520,521],"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",[523,524,525],{"name":28,"url":29},{"name":34,"url":35},{"name":526,"url":527},"Discounted cumulative gain","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDiscounted_cumulative_gain",[529,531,534,537,540,543,546,549,552,555,558,561],{"title":530,"url":69},"Enevoldsen et al.: MMTEB, Massive Multilingual Text Embedding Benchmark (2025)",{"title":532,"url":533},"Hugging Face: Introducing RTEB, a new standard for retrieval evaluation (Oct 2025)","https:\u002F\u002Fhuggingface.co\u002Fblog\u002Frteb",{"title":535,"url":536},"OpenAI: Vector embeddings guide","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fembeddings",{"title":538,"url":539},"OpenAI: API pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fpricing",{"title":541,"url":542},"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":544,"url":545},"Voyage AI: Text embeddings documentation","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fembeddings",{"title":547,"url":548},"Voyage AI: Pricing","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fpricing",{"title":550,"url":551},"Google: Gemini API embeddings documentation","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fembeddings",{"title":553,"url":554},"Google: Gemini API pricing","https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Fpricing",{"title":556,"url":557},"Cohere: Embed models documentation","https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fcohere-embed",{"title":559,"url":560},"Qwen: Qwen3-Embedding-8B model card","https:\u002F\u002Fhuggingface.co\u002FQwen\u002FQwen3-Embedding-8B",{"title":562,"url":563},"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",[77,78,79],"Embedding-modell választása 2026-ban: ranglisták, költségek és összehasonlító teszt a saját adatokon","Hogyan válassz embedding-modellt RAG-hoz 2026-ban: mit mond az MTEB és az RTEB, API vagy nyílt súlyok, árak, dimenziók és egy egyhetes összehasonlító teszt.","Három oszlop egymásra rakott kockákból, középen a legmagasabb, mindegyik rövid sávval mérve.",{"slug":571,"published":6,"minutes":572,"category":8,"tags":573,"keywords":577,"about":589,"sources":599,"cover":624,"og":625,"expertise":75,"locales":626,"lang":79,"title":627,"description":628,"coverAlt":629},"contextual-retrieval-late-chunking",10,[12,574,10,575,576],"Chunking","Contextual retrieval","Late chunking",[578,579,580,581,582,583,584,585,586,587,588],"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",[590,593,596],{"name":591,"url":592},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",{"name":594,"url":595},"Okapi BM25","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOkapi_BM25",{"name":597,"url":598},"Sentence embedding","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSentence_embedding",[600,603,606,609,612,615,618,621],{"title":601,"url":602},"Anthropic: Introducing Contextual Retrieval (Sep 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fcontextual-retrieval",{"title":604,"url":605},"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":607,"url":608},"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":610,"url":611},"Voyage AI: Introducing voyage-context-3 (Jul 2025)","https:\u002F\u002Fblog.voyageai.com\u002F2025\u002F07\u002F23\u002Fvoyage-context-3\u002F",{"title":613,"url":614},"Voyage AI: voyage-context-4 (Jun 2026)","https:\u002F\u002Fblog.voyageai.com\u002F2026\u002F06\u002F29\u002Fvoyage-context-4\u002F",{"title":616,"url":617},"Voyage AI: Contextualized chunk embeddings documentation","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fcontextualized-chunk-embeddings",{"title":619,"url":620},"Anthropic: Claude API pricing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fpricing",{"title":622,"url":623},"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",[77,78,79],"Kontextuális visszakeresés és késleltetett chunkolás: a RAG-chunkok visszakapják a kontextusukat","A chunkok elveszítik a dokumentumukat. Hogyan javít ezen a contextual retrieval, a late chunking és a kontextusos embedding, mennyibe kerül, és mikor hagyd ki.","Négy szabad négyzet, alul széles kapocs fogja össze, mindegyik felfelé egy nagy laphoz kapcsolódik.",{"slug":631,"published":6,"minutes":505,"category":8,"tags":632,"keywords":636,"about":649,"sources":657,"cover":682,"og":683,"expertise":75,"locales":684,"lang":79,"title":685,"description":686,"coverAlt":687},"rag-access-control-permissions",[12,633,634,635,507],"Access control","Security","Multi-tenancy",[637,638,639,640,641,642,643,644,645,646,647,648],"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",[650,653,656],{"name":651,"url":652},"Access-control list","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAccess-control_list",{"name":654,"url":655},"Multitenancy","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",{"name":591,"url":592},[658,661,664,667,670,673,676,679],{"title":659,"url":660},"OWASP GenAI Security Project: LLM08:2025 Vector and Embedding Weaknesses","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm082025-vector-and-embedding-weaknesses\u002F",{"title":662,"url":663},"PostgreSQL documentation: Row Security Policies","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fddl-rowsecurity.html",{"title":665,"url":666},"pgvector README: filtering and iterative index scans","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",{"title":668,"url":669},"Qdrant: Multitenancy and partitions guide","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fmultiple-partitions\u002F",{"title":671,"url":672},"Pinecone: Implement multitenancy using namespaces","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fimplement-multitenancy",{"title":674,"url":675},"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":677,"url":678},"OpenFGA: RAG authorization use case","https:\u002F\u002Fopenfga.dev\u002Fdocs\u002Fuse-cases\u002Frag-authorization",{"title":680,"url":681},"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",[77,78,79],"Hozzáférés-kezelés RAG-hoz: jogosultságtudatos visszakeresés dokumentumszivárgás nélkül","Hogyan szivárogtatnak dokumentumot a RAG-asszisztensek, és hogyan állítsd meg: ACL minden chunkon, előszűrés, sorszintű biztonság pgvectorban, jogszinkron.","Hét kártya sorban, haton lakat jelvény, a csupasz kártya nyilat küld kifelé.",{"slug":689,"published":6,"minutes":572,"category":8,"tags":690,"keywords":695,"about":707,"sources":715,"cover":742,"og":743,"expertise":744,"locales":745,"lang":79,"title":746,"description":747,"coverAlt":748},"rag-product-catalog-pim-data",[12,691,692,693,694],"PIM","Product data","B2B e-commerce","Metadata filtering",[696,697,698,699,700,701,702,703,704,705,706],"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",[708,711,712],{"name":709,"url":710},"Product information management","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct_information_management",{"name":591,"url":592},{"name":713,"url":714},"ETIM (standard)","https:\u002F\u002Fwww.etim-international.com\u002Fclassification\u002F",[716,719,722,725,727,730,733,736,739],{"title":717,"url":718},"Akeneo API: Products, product values, metric values and product models","https:\u002F\u002Fapi.akeneo.com\u002Fconcepts\u002Fproducts.html",{"title":720,"url":721},"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":723,"url":724},"Pimcore documentation: Classification Store","https:\u002F\u002Fdocs.pimcore.com\u002Fplatform\u002FPimcore\u002FObjects\u002FObject_Classes\u002FData_Types\u002FClassification_Store\u002F",{"title":726,"url":714},"ETIM International: Classification",{"title":728,"url":729},"ETIM International: ETIM releases and the IXF format","https:\u002F\u002Fetim-international.com\u002F?p=754",{"title":731,"url":732},"Reddy et al.: Shopping Queries Dataset, a large-scale ESCI benchmark for improving product search (2022)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2206.06588",{"title":734,"url":735},"Amazon Science: esci-data repository","https:\u002F\u002Fgithub.com\u002Famazon-science\u002Fesci-data",{"title":737,"url":738},"Qdrant documentation: Filtering","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Ffiltering\u002F",{"title":740,"url":741},"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",[77,78,79],"RAG termékkatalógusra: PIM-adatokból megbízható válaszok","A termékadat strukturált, ezért a PDF-szerű chunkolás itt elbukik. Hogyan sorosítsd a PIM-attribútumokat, és hogyan küldd a specifikációs kérdéseket szűrőkhöz.","Kilenc négyzetből álló keret apró jelekkel, alatta tölcsér egyetlen kártyához.",1792342717125]