[{"data":1,"prerenderedAt":894},["ShallowReactive",2],{"blog-semantic-product-search-b2b-hu":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":25,"sources":33,"cover":73,"og":74,"expertise":75,"locales":76,"lang":79,"title":80,"description":81,"coverAlt":82,"metaTitle":83,"takeaways":84,"faq":90,"toc":109,"blocks":149,"others":601},"semantic-product-search-b2b","2026-10-02",13,"rag",[9,10,11,12,13],"B2B search","Hybrid search","Semantic search","Spryker","OpenSearch",[15,16,17,18,19,20,21,22,23,24],"semantic product search B2B","B2B ecommerce search","hybrid search BM25 vector","part number search ecommerce","Spryker search Elasticsearch","OpenSearch hybrid search RRF","multilingual product search German English Hungarian","zero results rate site search","LLM query understanding ecommerce","AI product search for B2B shops",[26,28,31],{"name":11,"url":27},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSemantic_search",{"name":29,"url":30},"Elasticsearch","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",{"name":13,"url":32},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenSearch",[34,37,40,43,46,49,52,55,58,61,64,67,70],{"title":35,"url":36},"Baymard Institute: E-commerce search query types","https:\u002F\u002Fbaymard.com\u002Fblog\u002Fecommerce-search-query-types",{"title":38,"url":39},"Elastic Search Labs: Hybrid search in Elasticsearch","https:\u002F\u002Fwww.elastic.co\u002Fsearch-labs\u002Fblog\u002Fhybrid-search-elasticsearch",{"title":41,"url":42},"Elasticsearch documentation: kNN query (pre-filters and post-filters)","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Fquery-languages\u002Fquery-dsl\u002Fquery-dsl-knn-query",{"title":44,"url":45},"Elasticsearch documentation: Semantic reranking","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Franking\u002Fsemantic-reranking",{"title":47,"url":48},"Elasticsearch documentation: Word delimiter graph token filter","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Ftext-analysis\u002Fanalysis-word-delimiter-graph-tokenfilter",{"title":50,"url":51},"Elasticsearch documentation: Synonym graph token filter","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Ftext-analysis\u002Fanalysis-synonym-graph-tokenfilter",{"title":53,"url":54},"OpenSearch documentation: Score ranker processor (RRF)","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fsearch-plugins\u002Fsearch-pipelines\u002Fscore-ranker-processor\u002F",{"title":56,"url":57},"OpenSearch documentation: Normalization processor","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fsearch-plugins\u002Fsearch-pipelines\u002Fnormalization-processor\u002F",{"title":59,"url":60},"Spryker documentation: Search feature overview","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fpbc\u002Fall\u002Fsearch\u002Flatest\u002Fbase-shop\u002Fsearch-feature-overview\u002Fsearch-feature-overview",{"title":62,"url":63},"Spryker documentation: Migrate from OpenSearch 1.3 to 3.5","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fpbc\u002Fall\u002Fsearch\u002Flatest\u002Fbase-shop\u002Finstall-and-upgrade\u002Fmigrate-from-opensearch-1.3-to-3.5.html",{"title":65,"url":66},"Instacart via ZenML: Rebuilding query understanding for e-commerce search with LLMs","https:\u002F\u002Fwww.zenml.io\u002Fllmops-database\u002Frebuilding-query-understanding-for-e-commerce-search-with-llms",{"title":68,"url":69},"arXiv: M3-Embedding, multilingual, multi-functionality, multi-granularity text embeddings","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03216",{"title":71,"url":72},"Algolia documentation: Search analytics metrics","https:\u002F\u002Fwww.algolia.com\u002Fdoc\u002Fguides\u002Fsearch-analytics\u002Fconcepts\u002Fmetrics\u002F","\u002Fimages\u002Fblog\u002Fsemantic-product-search-b2b\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fsemantic-product-search-b2b\u002Fog.jpg","b2b-ecommerce-developer",[77,78,79],"en","de","hu","Szemantikus termékkeresés B2B webshopokban: cikkszámok, hibrid keresés és amit mérned kell","Szemantikus keresés B2B shopban a cikkszámos keresés tönkretétele nélkül: BM25 és vektorok hibridje, szűrők, DE\u002FEN\u002FHU, LLM-es lekérdezés-értelmezés, reranking, mérőszámok.","Diagram: a keresőkérdés azonosító sávra, lexikális BM25-re és vektoros kNN-re oszlik, összefésülődik, újrarangsorolódik, majd találatként jelenik meg.","B2B termékkeresés: hibrid és szemantikus · Balázs Csorba",[85,86,87,88,89],"B2B-ben a cikkszám a legfontosabb keresés. Adj az azonosítóknak saját sávot normalizált pontos és előtag-egyezéssel, a szemantikus keresés pedig csak akkor segítsen, ha ez a sáv nem ad erős választ.","A hibrid keresés (BM25 és vektorok, reciprocal rank fusionnel összefésülve) mindkét módszert felülmúlja, mert a vásárlók ugyanabba a mezőbe írják be a „10-32-4711”-et és a „csavar kültéri fához”-t.","A választékot, az árlistát és a készletet pre-filterként kell a vektoros keresésbe tenni, nem post-filterként, különben eltűnnek a találatok, vagy ügyfelek között szivárognak.","LLM-mel bontsd a kérdést terméktípusra, attribútumokra és mértékegységekre, ellenőrizd a kimenetet a katalógussal szemben, és a gyakori kérdéseket offline cache-eld, ne hívj modellt minden billentyűleütésre.","A rendszert kérdéstípusonként értékeld: zero-result arány, keresésből kilépési arány és átkattintási arány, mellé egy kis kézzel értékelt kérdéskészlet, ahol a pontos azonosítóknak mindig az első helyen kell lenniük.",[91,94,97,100,103,106],{"q":92,"a":93},"Mi az a szemantikus keresés a B2B e-kereskedelemben?","A szemantikus keresés a termékszövegeket és a kérdéseket vektorokká alakítja, így a „csavar kültéri fához” kérdés közös szavak nélkül is megtalálja a megfelelő termékeket. B2B shopban kiegészítenie kell a lexikális keresést, nem helyettesítenie, mert a cikkszámokhoz, EAN-kódokhoz és pontos specifikációkhoz továbbra is pontos egyezés kell.",{"q":95,"a":96},"Mi a hibrid keresés, és miért kell a B2B shopoknak?","A hibrid keresés párhuzamosan futtat egy lexikális (BM25) és egy vektoros lekérdezést, majd összefésüli a két rangsort, gyakran reciprocal rank fusionnel. A B2B shopoknak azért kell, mert a vásárlók keverik a pontos azonosítókat és a természetes nyelvű leírásokat, és egyik módszer sem kezeli mindkettőt jól egyedül.",{"q":98,"a":99},"Hogyan marad pontos a cikkszámos keresés vektoros keresés mellett?","Az azonosítókat külön mezőkben indexeld egy normalizerrel, amely eltávolítja a kis- és nagybetűk közti különbséget, a kötőjeleket, pontokat és szóközöket, először pontosan és előtag alapján egyeztess, és ezeket a találatokat rangsorold a vektoros ág bármely eredménye fölé. Azonosítóknál ne a beágyazásokra építs, mert azok a hasonlónak látszó számokat hasonlónak tekintik.",{"q":101,"a":102},"Működik a szemantikus keresés német, angol és magyar katalógusra?","Igen, többnyelvű beágyazási modellel és nyelvenkénti szövegelemzéssel. Az olyan többnyelvű modellek, mint a BGE-M3, több mint 100 nyelvet fednek le, de a német összetett szavakat és a magyar ragozást a saját kérdéseiden tesztelned kell, az eredményeket pedig nyelvenként mérned.",{"q":104,"a":105},"Hogyan mérem, hogy javult-e a termékkeresés?","Szegmentálj kérdéstípus szerint, és kövesd a zero-result arányt, a keresésből kilépési arányt, az átkattintási arányt és a keresésből kosárba tételt. Egészítsd ki egy offline készlettel az értékelt kérdésekből, ahol minden pontos azonosítónak az első helyen kell lennie. A csökkenő zero-result arány önmagában elrejtheti a lényegtelen találatokat, ezért mindig az átkattintás mellett olvasd.",{"q":107,"a":108},"Hozzáadhatok szemantikus keresést Sprykerhez?","Igen. A Spryker alapból Elasticsearchcsel érkezik, és dokumentál egy OpenSearch frissítési utat, így publikáláskor vektormezőket adhatsz a keresési dokumentumokhoz, a keresőlekérdezést pedig kiegészítheted vektoros klauzulával. Pilotként építeném meg feature flag mögött, és összevetném a meglévő kereséssel.",[110,113,116,119,122,125,128,131,134,137,140,143,146],{"id":111,"title":112},"why-b2b-search-differs","Miért más a B2B keresés, mint a fogyasztói",{"id":114,"title":115},"architecture","Az architektúra: sávok, fúzió, rerank",{"id":117,"title":118},"exact-match-first","A cikkszámok és a pontos egyezés az első",{"id":120,"title":121},"hybrid-retrieval","Hibrid keresés: BM25 és vektorok, rang szerint összefésülve",{"id":123,"title":124},"filters-and-attributes","Attribútumtudatos szűrés, és miért kell struktúra a számoknak",{"id":126,"title":127},"multilingual","Német, angol és magyar egy katalógusban",{"id":129,"title":130},"synonyms","A szinonimák és az alkatrészszámok továbbra is számítanak",{"id":132,"title":133},"llm-query-understanding","Lekérdezés-értelmezés LLM-mel",{"id":135,"title":136},"reranking","A lista elejének újrarangsorolása",{"id":138,"title":139},"evaluation","Értékelés: zero result, kilépések és egy értékelt készlet",{"id":141,"title":142},"spryker-integration","Integráció Sprykerrel, Elasticsearchcsel és OpenSearchcsel",{"id":144,"title":145},"rollout-checklist","Bevezetési ellenőrzőlista",{"id":147,"title":148},"sources","Források",[150,154,157,160,168,171,254,257,258,261,270,273,276,277,280,283,308,315,316,323,334,337,344,347,348,355,358,361,362,365,372,375,376,383,386,387,401,408,435,438,439,446,454,455,458,506,509,512,513,524,527,530,533,534,537,556,559,560],{"type":151,"content":152},"paragraph",[153],"Egy szaniterkereskedés vásárlója beírja: „4711-32”. A második ezt: „rozsdamentes csavar kültéri fához”. A harmadik ezt: „hex bolt M8x40 A2”. Mindhárom ugyanazt a keresőmezőt használja, és a legtöbb általam látott B2B shopban legalább egyikük üres oldalt kap.",{"type":151,"content":155},[156],"A szemantikus keresés a második és harmadik esetet ígéri megoldani. A kockázat, hogy az elsőt tönkreteszi. Ez a cikk azt mutatja meg, hogyan építenék szemantikus keresést egy B2B katalógusba úgy, hogy a pontos cikkszámos keresés megmaradjon: az architektúrát, a kérdéstípusokat, a hibrid fúziót, a szűrőket, a három nyelvet, a szinonimákat, az LLM-es lekérdezés-értelmezést, a rerankinget, a mérést, és hogy mindez mit jelent egy Elasticsearchre vagy OpenSearchre épülő Spryker shopnál.",{"type":158,"level":159,"id":111,"text":112},"heading",2,{"type":151,"content":161},[162,163,167],"A B2B kérdések változatosabbak, mint a fogyasztóiak. A vásárlók cikkszámot másolnak egy rajzról, begépelik a beszállítói számot egy régi rendelésből, rövidítik a szakmai szlenget, vagy felhasználási esetet írnak le. A fogyasztói shopokat vizsgáló Baymard ",{"tag":164,"href":36,"children":165},"a",[166],"nyolc keresőkérdés-típust"," különböztet meg, és azt találta, hogy a tesztelt oldalak 56%-a nem szolgálja ki megfelelően a felhasználók keresési igényeit. A B2B katalógusok ráadásul azonosító- és specifikációnehéz adatokat hoznak.",{"type":151,"content":169},[170],"A gyakorlati következmény: egyetlen keresési módszer sem megfelelő mindenre. Ezzel a taxonómiával indulok egy projektben. A példák kitaláltak, de a minták megjelennek a valódi keresési naplókban.",{"type":172,"head":173,"rows":182},"table",[174,176,178,180],[175],"Kérdéstípus",[177],"Példa",[179],"Legjobb keresés",[181],"Tipikus hiba",[183,192,201,210,219,228,237,245],[184,186,188,190],[185],"Cikkszám vagy alkatrészszám",[187],"„4711-32”, „4711 32”",[189],"Azonosító sáv: normalizált pontos, majd előtag",[191],"A kötőjel és a szóköz megtöri a pontos egyezést; a vektoros ág hasonlókat ad",[193,195,197,199],[194],"Beszállítói szám, EAN",[196],"„4006381333931”",[198],"Azonosító sáv külön mezőn",[200],"Számként tárolva, az elöl álló nullák elvesznek",[202,204,206,208],[203],"Terméktípus",[205],"„Sechskantschraube”",[207],"Lexikális és vektoros, kategória-boost",[209],"Az összetett szavak és a többes számok mellémennek lexikálisan",[211,213,215,217],[212],"Specifikáció",[214],"„M8x40 A2 DIN 933”",[216],"Szűrőkre bontva és lexikális",[218],"A beágyazások elmosják a számokat és mértékegységeket",[220,222,224,226],[221],"Felhasználási eset",[223],"„csavar kültéri fához”",[225],"Vektoros és attribútumszűrők",[227],"A lexikális keresés nulla találatot ad",[229,231,233,235],[230],"Rövidítés vagy szleng",[232],"„VA Schraube”",[234],"Szinonimák, majd vektor",[236],"Az analyzer nem ismeri a rövidítést",[238,240,242,244],[239],"Nyelvek közötti",[241],"„hex bolt” német katalógusban",[243],"Többnyelvű vektor és szinonimák",[227],[246,248,250,252],[247],"Nem termék",[249],"„szállítási idő”, „adatlap”",[251],"Súgó vagy CMS-tartalom felé irányítani",[253],"A termékindex véletlen termékeket ad",{"type":151,"content":255},[256],"Mielőtt bármit választasz, számold meg, hogy a valódi kérdéseid közül hány esik az egyes sorokba. Műszaki alkatrészek katalógusában az első két sor nagy hányadot tehet ki, és pont ezekben a szemantikus keresés semmit sem ad, és árthat is.",{"type":158,"level":159,"id":114,"text":115},{"type":151,"content":259},[260],"A referencia-tervemben egy belépési pont és három párhuzamos keresési sáv van. Egy olcsó értelmező lépés normalizálja a kérdést, és felismeri, hogy azonosítónak látszik-e. Az azonosító sáv, a lexikális BM25-lekérdezés és a vektoros kNN-lekérdezés ugyanazok alatt a szűrők alatt fut. A rangsoraikat összefésüljük, egy reranker csak a lista elejét rendezi újra, a válasz pedig tartalmazza a shop által igényelt facetteket.",{"type":262,"attrs":263,"inner":267,"caption":268},"diagram",{"viewBox":264,"role":265,"aria-labelledby":266},"0 0 720 436","img","d1-sps-t d1-sps-d","\u003Ctitle id=\"d1-sps-t\">Hibrid termékkeresés sávokban\u003C\u002Ftitle>\u003Cdesc id=\"d1-sps-d\">A kérdés egy értelmező lépésen át három párhuzamos sávba jut: azonosító, lexikális BM25 és vektoros kNN, mind közös szűrők alatt. Az eredményeket RRF fésüli össze, majd újrarangsorolja és facettekkel adja vissza. A keresési naplók szinonimákat és egy értékelt kérdéskészletet táplálnak.\u003C\u002Fdesc>\u003Ctext x=\"20\" y=\"26\" class=\"d-title\">Hibrid termékkeresés sávokban\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"26\" text-anchor=\"end\" class=\"d-label\">architektúra-vázlat\u003C\u002Ftext>\u003Crect x=\"20\" y=\"120\" width=\"100\" height=\"56\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"70\" y=\"144\" text-anchor=\"middle\" class=\"d-text\">Kérdés\u003C\u002Ftext>\u003Ctext x=\"70\" y=\"163\" text-anchor=\"middle\" class=\"d-small\">beírt szöveg\u003C\u002Ftext>\u003Cpath d=\"M120 148 H132\" class=\"d-line\" \u002F>\u003Cpath d=\"M140 148 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"140\" y=\"120\" width=\"140\" height=\"56\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"210\" y=\"144\" text-anchor=\"middle\" class=\"d-text\">Értelmezés\u003C\u002Ftext>\u003Ctext x=\"210\" y=\"163\" text-anchor=\"middle\" class=\"d-small\">normalizál\u003C\u002Ftext>\u003Cpath d=\"M280 148 C298 148 292 68 312 68\" class=\"d-line\" \u002F>\u003Cpath d=\"M320 68 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"320\" y=\"40\" width=\"180\" height=\"56\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"410\" y=\"64\" text-anchor=\"middle\" class=\"d-text\">Azonosító sáv\u003C\u002Ftext>\u003Ctext x=\"410\" y=\"83\" text-anchor=\"middle\" class=\"d-small\">pontos, majd előtag\u003C\u002Ftext>\u003Cpath d=\"M500 68 C515 68 512 148 528 148\" class=\"d-line\" \u002F>\u003Cpath d=\"M280 148 C298 148 292 148 312 148\" class=\"d-line\" \u002F>\u003Cpath d=\"M320 148 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"320\" y=\"120\" width=\"180\" height=\"56\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"410\" y=\"144\" text-anchor=\"middle\" class=\"d-text\">Lexikális BM25\u003C\u002Ftext>\u003Ctext x=\"410\" y=\"163\" text-anchor=\"middle\" class=\"d-small\">szöveg, szinonima\u003C\u002Ftext>\u003Cpath d=\"M500 148 C515 148 512 148 528 148\" class=\"d-line\" \u002F>\u003Cpath d=\"M280 148 C298 148 292 228 312 228\" class=\"d-line\" \u002F>\u003Cpath d=\"M320 228 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"320\" y=\"200\" width=\"180\" height=\"56\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"410\" y=\"224\" text-anchor=\"middle\" class=\"d-text\">Vektoros kNN\u003C\u002Ftext>\u003Ctext x=\"410\" y=\"243\" text-anchor=\"middle\" class=\"d-small\">többnyelvű\u003C\u002Ftext>\u003Cpath d=\"M500 228 C515 228 512 148 528 148\" class=\"d-line\" \u002F>\u003Cpath d=\"M536 148 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Crect x=\"536\" y=\"120\" width=\"164\" height=\"56\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"618\" y=\"144\" text-anchor=\"middle\" class=\"d-text\">Fúzió (RRF)\u003C\u002Ftext>\u003Ctext x=\"618\" y=\"163\" text-anchor=\"middle\" class=\"d-small\">rangok, nem pontok\u003C\u002Ftext>\u003Cpath d=\"M618 176 V198\" class=\"d-line\" \u002F>\u003Cpath d=\"M618 206 l-5 -9 h10 z\" class=\"d-head\" \u002F>\u003Crect x=\"536\" y=\"206\" width=\"164\" height=\"56\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"618\" y=\"230\" text-anchor=\"middle\" class=\"d-text\">Rerank Top N\u003C\u002Ftext>\u003Ctext x=\"618\" y=\"249\" text-anchor=\"middle\" class=\"d-small\">cross-encoder\u003C\u002Ftext>\u003Cpath d=\"M618 262 V284\" class=\"d-line\" \u002F>\u003Cpath d=\"M618 292 l-5 -9 h10 z\" class=\"d-head\" \u002F>\u003Crect x=\"536\" y=\"292\" width=\"164\" height=\"56\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"618\" y=\"316\" text-anchor=\"middle\" class=\"d-text\">Találat + facetek\u003C\u002Ftext>\u003Ctext x=\"618\" y=\"335\" text-anchor=\"middle\" class=\"d-small\">vissza a shopba\u003C\u002Ftext>\u003Crect x=\"320\" y=\"292\" width=\"180\" height=\"56\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"410\" y=\"316\" text-anchor=\"middle\" class=\"d-text\">Pre-filterek\u003C\u002Ftext>\u003Ctext x=\"410\" y=\"335\" text-anchor=\"middle\" class=\"d-small\">választék, készlet\u003C\u002Ftext>\u003Crect x=\"20\" y=\"376\" width=\"680\" height=\"40\" rx=\"10\" class=\"d-box d-dash\" \u002F>\u003Ctext x=\"360\" y=\"401\" text-anchor=\"middle\" class=\"d-small\">Keresési naplók: zero result, kilépés, kattintás táplálja a szinonimákat és az értékelt készletet\u003C\u002Ftext>",[269],"Az azonosító-találatok közvetlenül nyernek, a többi sáv a fúzión át verseng, és minden sáv ugyanazokat a szűrőket tartja be.",{"type":151,"content":271},[272],"Két tervezési döntés viszi a súly nagy részét. Először: az azonosító sáv nem a lexikális sáv egyik funkciója, hanem saját lekérdezés saját mezőkön, és a találatai rövidre zárhatják a többit. Másodszor: a szűrők minden sáv előtt állnak, mert B2B-ben nem egyszerűen facettek, hanem jogosultságok.",{"type":151,"content":274},[275],"Motornak az Elasticsearch és az OpenSearch egyaránt megfelel. Mindkettő támogatja a BM25-öt, a közelítő kNN-t és a rangfúziót. Azt választanám, amit a platformod már üzemeltet, és nem vezetnék be második keresőmotort, amíg az elsőt ki nem nőtted.",{"type":158,"level":159,"id":117,"text":118},{"type":151,"content":278},[279],"A B2B keresés tönkretételének legolcsóbb módja, ha egy szemantikus modellre bízod, mennyire hasonló két alkatrészszám. Egy beágyazás szemében a „4711-32” és a „4711-33” szinte azonos, egy vásárlónak két különböző alkatrész. Ezért az azonosítók külön kezelést kapnak.",{"type":151,"content":281},[282],"Ezt teszem az azonosító sávba:",{"type":284,"ordered":285,"items":286},"list",false,[287,293,298,303],[288,292],{"tag":289,"children":290},"strong",[291],"Dedikált keyword mezők"," a cikkszámnak, a gyártói számnak, a beszállítói számnak, az ügyfélspecifikus számnak és az EAN-nak, mindig szövegként tárolva.",[294,297],{"tag":289,"children":295},[296],"Egy normalizer",", amely indexeléskor és kereséskor is kisbetűsít, és eltávolítja a kötőjeleket, pontokat, perjeleket és szóközöket, így a „4711-32”, a „4711 32” és a „471132” ugyanabban az alakban találkozik.",[299,302],{"tag":289,"children":300},[301],"Először pontos, utána előtag."," A teljes egyezés az előtag-egyezés fölé kerül, így aki az első számjegyeket írja, jelölteket lát, aki a teljes számot, az egyetlen terméket kapja.",[304,307],{"tag":289,"children":305},[306],"Rövidre zárás."," Ha a normalizált kérdés pontos azonosító-találat, add vissza, anélkül hogy a vektoros ágra vagy a rerankerre várnál.",{"type":151,"content":309},[310,311,314],"Légy óvatos a helyetted tokenekre bontó analyzerekkel. Az Elasticsearch ",{"tag":164,"href":48,"children":312},[313],"word delimiter graph szűrője"," betű-szám átmeneteknél is vághat, így az „XL500” „XL” és „500” lesz. Ez segít a modellnevek szabad szöveges egyeztetésében, azonosítóknál viszont káros, ami újabb ok arra, hogy külön mezőkben, saját elemzéssel tartsd őket.",{"type":158,"level":159,"id":120,"text":121},{"type":151,"content":317},[318,319,322],"A lexikális keresés pontos az általa ismert szavakon. A vektoros keresés jelentést talál olyan szavak között, amelyek sosem fordultak elő együtt. Az Elastic a ",{"tag":164,"href":39,"children":320},[321],"hibrid keresést"," gyakran a két rész összegénél sokkal jobbnak írja le, és két fúziós módszert nevez meg: a normalizált pontszámok konvex kombinációját, valamint a reciprocal rank fusiont (RRF), amely az egyes listákban elfoglalt helyet használja, ezért nem kell pontszám-normalizálás.",{"type":151,"content":324},[325,326,329,330,333],"RRF-fel indulok. A BM25-pontszámok és a vektorhasonlóságok eltérő skálán élnek, a súlyozott összeghez pedig normalizálás kell, amelyet könnyű elrontani, és a katalógus változásával elcsúszik. Az RRF listánként 1\u002F(k + rang) értéket ad hozzá, így a skáláknak sosem kell egyezniük. Az OpenSearch ugyanezt a ",{"tag":164,"href":54,"children":327},[328],"score ranker processzoron"," keresztül kínálja, amely a 2.19-ben jelent meg, 1 és 10 000 közötti rank constanttal: a nagyobb konstans elsimítja a felső helyezések hatását, a kisebb előnyben részesíti őket. Van mellé ",{"tag":164,"href":57,"children":331},[332],"normalization processor"," is min-max, L2 és z-score technikával, ha pontszám-alapú fúziót szeretnél.",{"type":151,"content":335},[336],"Két dolgot hangolj, miután az első változat működik: a rangablakot (hány jelöltet ad egy sáv) és a sávonkénti súlyt. Mindkettő olcsó kísérlet egy értékelt kérdéskészlettel szemben, amelyre az értékelésről szóló részben visszatérek.",{"type":338,"variant":339,"title":340,"body":341},"callout","warn","Licencet és verziót ellenőrizz, mielőtt elköteleződsz",[342],[343],"Amikor az Elastic közzétette a hibrid keresésről szóló cikkét, az RRF-rangsoroláshoz kereskedelmi (Enterprise) licenc kellett, próbaidőszakkal. A licencek és funkciók változnak, ezért ellenőrizd az aktuális feltételeket az Elasticsearch-verziódra. OpenSearchön az RRF processzorhoz 2.19 vagy újabb kell, ami számít, ha régi a klasztered.",{"type":151,"content":345},[346],"Egy hibamód külön figyelmeztetést érdemel. Pontos azonosító-kérdésnél a vektoros ág is ad valamit, és a fúzió egy majdnem találatot a helyes alkatrész fölé tolhat. Ezért zár rövidre az azonosító sáv, és ezért kell az értékelt készletben olyan azonosító-kérdéseknek lenniük, amelyek az első helyet ellenőrzik.",{"type":158,"level":159,"id":123,"text":124},{"type":151,"content":349},[350,351,354],"A szűrők B2B-ben nem kozmetikák. Egy vásárló csak a megtárgyalt választékát, az árlistáját és azt láthatja, ami a címére szállítható. Ha a vektoros keresés után szűrsz, a tíz legközelebbi terméket kéred, majd eldobod azokat, amelyeket az ügyfél nem vásárolhat, és rövid vagy üres lista marad. Az Elasticsearch ",{"tag":164,"href":42,"children":352},[353],"kNN query"," dokumentációja leírja a különbséget: a pre-filter a közelítő keresés közben érvényesül, így k egyező dokumentum jön vissza, a post-filter utána fut, és k-nál kevesebb találatot adhat, akkor is, ha van elég egyező.",{"type":151,"content":356},[357],"A választék, az elérhetőség, a nyelv és a láthatóság ezért pre-filterként kerül minden sávra. Ezt biztonsági tulajdonságnak tekintem, nem relevanciarészletnek: a jogosultsági szűrő nélküli vektoros sáv olyan termékeket mutathat, amelyeket az ügyfél nem láthat.",{"type":151,"content":359},[360],"A beágyazások gyengék a számokon és mértékegységeken. Az „M8x40” és az „M8x50” szinte ugyanoda esik, az „1,5 hüvelyk” és a „38 mm” pedig alig hasonlít. Specifikációknál a kérdést strukturált attribútumokra bontom (menetméret, hossz, anyag, szabvány), és szűrőként vagy boostként alkalmazom azokon az attribútummezőkön, amelyeket a PIM-ed amúgy is karbantart. A vektoros ág ekkor a mondat bizonytalan részét kezeli, a felhasználási esetet és a terméktípust, az attribútumok pedig a pontos részt.",{"type":158,"level":159,"id":126,"text":127},{"type":151,"content":363},[364],"Egy többnyelvű katalógus három külön problémát hoz. A német hosszú összetett szavakat képez, így a „Sechskantschraube” lexikálisan nem feltétlenül talál rá a „Schraube” szóra. A magyar erősen ragozó, ezért a vásárló által begépelt alak nem biztos, hogy egyezik a terméktextben szereplővel. Az angol kérdések egy német katalógusban lexikálisan semmit sem találnak, mert nincs közös szó.",{"type":151,"content":366},[367,368,371],"A megközelítésem a két világ kombinálása. A lexikális elemzés nyelvenként fut, az adott nyelvnek szükséges szótöveződéssel és összetett szavak kezelésével, locale-onkénti külön mezőkön. A vektoros ág egy többnyelvű modellt használ, hogy az egyik nyelven feltett kérdés egy másik nyelven leírt terméket is megtalálhasson. A ",{"tag":164,"href":69,"children":369},[370],"BGE-M3 tanulmány"," ilyen modellt ír le, több mint 100 munkanyelven végzett szemantikus kereséssel és legfeljebb 8192 tokenes bemenettel. Én ettől még két-három jelöltet összemérnék a saját kérdéseimen, mert a katalógus szókincse messze áll az általános szövegtől.",{"type":151,"content":373},[374],"Két gyakorlati szabály. Azt a szöveget ágyazd be, amelyet a vásárló felismer, vagyis a címet, a kulcsattribútumokat és egy rövid leírást, ne a teljes adatlapot. És minden mérőszámot nyelvenként jelents, mert a három nyelv átlaga elrejti azt az egyet, amelyben a keresés elromlott.",{"type":158,"level":159,"id":129,"text":130},{"type":151,"content":377},[378,379,382],"A vektorok nem szüntetik meg a szinonimák szükségességét, csak csökkentik. A szakmai rövidítéseket, márkarövidítéseket, a régi és új terméknevet és a beszállítói számokat továbbra is explicit szabályokkal kezelni a legjobb, mert elolvashatod, tesztelheted és visszavonhatod őket. Az Elasticsearch ",{"tag":164,"href":51,"children":380},[381],"synonym graph szűrőjét"," csak kereső analyzerekhez tervezték, updateable jelöléssel újraindexelés nélkül újratölthető, és kezelt szinonimakészletekből veszi a szabályokat (alapértelmezésben készletenként legfeljebb 100 000 szabály).",{"type":151,"content":384},[385],"A szinonimák legjobb forrása a saját zero-result naplód. Hetente nézd át a leggyakoribb sikertelen kérdéseket, döntsd el, hogy hiányzó szinonima, hiányzó termék vagy olyasmire irányuló kérdés-e, amit nem árulsz, és rögzítsd a döntést. Ez a kis rituálé többet ér bármely modellfrissítésnél, és tiszta kiindulópontot ad a vektoros ágnak, amelyet felül kell múlnia.",{"type":158,"level":159,"id":132,"text":133},{"type":151,"content":388},[389,390,395,396,400],"Az LLM a középső lépésben jó: a „rozsdamentes hatlapfejű csavar 8 szor 40 kültérre” kérdést strukturált lekérdezéssé alakítja terméktípussal, anyaggal, menetmérettel, hosszal és nyelvvel. Keresőmotornak gyenge. Szigorú kimeneti sémájú parserként használom (lásd a ",{"tag":391,"to":392,"children":393},"link","\u002Fblog\u002Fjev-typed-decisions-llm-routing",[394],"típusos döntésekről"," és az ",{"tag":391,"to":397,"children":398},"\u002Fblog\u002Fllm-evals-for-product-features",[399],"LLM-funkciók kiértékeléséről"," szóló írásaimat), és semmi másra.",{"type":151,"content":402},[403,404,407],"Az Instacart beszámolója a ",{"tag":164,"href":66,"children":405},[406],"lekérdezés-értelmezés LLM-ekkel való újraépítéséről"," hasznos referencia a mintához. A katalógus taxonómiáját beletették a promptokba, guardraileket adtak, amelyek szemantikus hasonlósággal ellenőrzik a kimeneteket, az eredményt pedig egy kisebb, finomhangolt modellbe desztillálták. A gyakori kérdéseket offline cache-ből szolgálták ki, csak a ritka farok ment valós idejű modellhez, így 300 ms-os késleltetési célt értek el. Ez fogyasztói élelmiszeres eset, de a forma átvihető B2B-re.",{"type":284,"ordered":285,"items":409},[410,415,420,430],[411,414],{"tag":289,"children":412},[413],"Ellenőrizd a katalógussal."," Ha az LLM olyan anyagot, attribútumértéket vagy alkatrészszámot ad vissza, amely nincs az adataidban, dobd el. Soha ne hagyd, hogy azonosítókat találjon ki.",[416,419],{"tag":289,"children":417},[418],"Cache-eld a gyakori kérdéseket."," A B2B kérdéseloszlás rövid fejű, ezért egy éjszakai batch a top kérdéseken kiveszi a valós idejű hívások nagy részét.",[421,424,425,429],{"tag":289,"children":422},[423],"Állíts be késleltetési keretet és fallbacket."," Ha a parser késik vagy hibázik, fusson az egyszerű hibrid lekérdezés. A keresés sosem eshet ki azért, mert egy modell lassú. Lásd a ",{"tag":391,"to":426,"children":427},"\u002Fblog\u002Fllm-cost-latency-prompt-caching-routing",[428],"költség- és késleltetés-routingról"," szóló írásomat.",[431,434],{"tag":289,"children":432},[433],"Tartsd távol az azonosítóktól."," Ha az azonosító sávnak pontos találata van, a parsert meg sem hívjuk.",{"type":151,"content":436},[437],"A parsolt mezőket tippként kezeld, ne igazságként. A parsolt attribútumra tett boost megbocsátó, egy rosszul parsolt attribútumra tett kemény szűrő viszont találat nélküli oldalt eredményez, ezért boosttal kezdek, és egy attribútumot csak akkor léptetek elő szűrővé, ha a parse-pontossága bizonyított.",{"type":158,"level":159,"id":135,"text":136},{"type":151,"content":440},[441,442,445],"A fúzió tisztességes listát ad, a reranker az első tízet teszi jobbá. Az Elastic ",{"tag":164,"href":45,"children":443},[444],"szemantikus rerankingről"," szóló dokumentációja elmagyarázza a kompromisszumot: a cross-encoder a kérdést és a dokumentumot együtt olvassa, és jobban ítéli meg a relevanciát, nagyobb modellek, nagyobb késleltetés és több számítás árán. Ezért jelöltek ablakán (a rank window size-on) fut, nem a teljes találati halmazon, és ezért kínál a dokumentáció módokat a küldött tokenek korlátozására, mivel a hosszú dokumentumok levágódhatnak, mielőtt a modellhez érnek.",{"type":151,"content":447},[448,449,453],"Csak nem azonosító kérdésekre alkalmaznám, talán a top 50-100 jelöltet rangsorolnám újra, és rövid terméktextet küldenék, nem az adatlapot. Utána jönnek az üzleti jelek: elérhetőség, az ügyfél korábbi rendelései, preferált beszállítók. Az általános keresés-és-rerank mintáról bővebben a ",{"tag":391,"to":450,"children":451},"\u002Fblog\u002Frag-pipeline-chunking-hybrid-search-reranking",[452],"RAG-pipeline cikkem"," szól.",{"type":158,"level":159,"id":138,"text":139},{"type":151,"content":456},[457],"Mérés nélkül a szemantikus keresés demó. Egy kis mérőszámkészletet követek, mindig kérdéstípus és nyelv szerint bontva.",{"type":172,"head":459,"rows":466},[460,462,464],[461],"Mérőszám",[463],"Mit mond neked",[465],"Csapda",[467,478,485,492,499],[468,470,476],[469],"Zero-result arány",[471,472,475],"A találat nélküli keresések aránya; az analitikai eszközök, például az ",{"tag":164,"href":72,"children":473},[474],"Algolia"," no results rate néven jelentik",[477],"A szemantikus keresés úgy csökkenti, hogy hulladékot ad vissza; az átkattintással együtt olvasd",[479,481,483],[480],"Keresésből kilépési arány",[482],"Azon keresések aránya, amelyek után a látogató elmegy (saját definícióm: nincs kattintás, nincs finomítás, a munkamenet véget ér)",[484],"Saját eseménykövetés kell hozzá; a botok és a könyvjelzők zajt adnak",[486,488,490],[487],"Átkattintási arány",[489],"Azon keresések aránya, ahol legalább egy találatra kattintottak",[491],"Pozíciótorzítás: egy jobb első találat növeli, egy rossz a görgetés alatt rejtőzik",[493,495,497],[494],"Újrafogalmazási arány",[496],"Azon keresések aránya, amelyeket ugyanabban a munkamenetben újabb kérdés követ",[498],"Némi újrafogalmazás egészséges finomítás",[500,502,504],[501],"Első helyes találat az azonosítóknál",[503],"Értékelt készlet: a pontos alkatrész van-e az élen",[505],"100% kell maradnia; minden visszaesés regresszió",{"type":151,"content":507},[508],"Az értékelt készletet a legtöbb csapat kihagyja. Néhány száz valódi kérdést veszek a naplókból, az első táblázat kérdéstípusai szerint rétegezve, és rögzítem, mely termékek helyesek. Az azonosító-kérdések pontosan az első helyet ellenőrzik, a leíró kérdések azt, hogy egy releváns termék a top tízben van. Futtasd minden analyzer-, szinonima-, beágyazás- vagy fúziós beállítás változtatásakor, lehetőleg CI-ban.",{"type":151,"content":510},[511],"Ezután jön egy A\u002FB-teszt éles forgalmon, amely kérdéstípusonként veti össze az átkattintást, a keresésből kosárba tételt és a keresésből kilépési arányt. Egy találat nélküli kérdés néha helyes, mert az alkatrész nincs a kínálatban, ezért ne a nulla felé hajszold az arányt, hanem azon zero-result kérdések számát, amelyeknek találnia kellett volna valamit.",{"type":158,"level":159,"id":141,"text":142},{"type":151,"content":514},[515,516,519,520,523],"A Spryker ",{"tag":164,"href":60,"children":517},[518],"alapértelmezett keresőként Elasticsearchcsel érkezik",", és indexeli a termék nevét, leírását és SKU-ját, a termékattribútumokat, az értékeléseket és a CMS-oldalakat. A dokumentáció harmadik féltől származó keresőintegrációkat és egy tutorialt is leír tetszőleges keresőmotor integrálásához, valamint ",{"tag":164,"href":63,"children":521},[522],"egy OpenSearch-migrációs utat"," az 1.3-ról a 2.19-en át a 3.5-re. Ez a frissítés itt azért számít, mert a hibrid fúzióhoz OpenSearchben friss verzió kell.",{"type":151,"content":525},[526],"Az általam javasolt integráció tervjavaslat, nem Spryker-funkció, és négy lépésből áll. Számíts beágyazást minden abstract termékhez és locale-hoz a publish-and-sync folyamatban, amely a keresési dokumentumokat építi, és tárold egy vektormezőben a szövegmezők mellett. Bővítsd a keresőlekérdezést úgy, hogy az azonosító, a lexikális és a vektoros klauzulát a shop meglévő szűrői alatt adja ki, és fésüld össze őket RRF-fel. Tedd az LLM-parsert elé, timeout mögött. Az egészet csomagold feature flagbe store-onként és locale-onként.",{"type":151,"content":528},[529],"Két fenntartás ezeken a platformokon szerzett tapasztalatból. A vektorok növelik az index méretét és a publikálási időt, ezért méretezd ennek megfelelően a klasztert, és csak akkor ágyazz újra, ha a beágyazott szöveg változik. És tartsd meg a meglévő keresést fallback útvonalként: ha a vektoros sáv nem elérhető, a shop továbbra is válaszoljon a lexikális és az azonosító sávon át.",{"type":151,"content":531},[532],"Ha nulláról építesz, alternatíva egy hosztolt keresőtermék, és a Spryker dokumentál integrációkat erre az útra. Bármely szállítótól ugyanezt a négy dolgot követelném: azonosítókezelés, jogosultsági pre-filterek, nyelvenkénti mérőszámok és lehetőség az értékelt készleted futtatására.",{"type":158,"level":159,"id":144,"text":145},{"type":151,"content":535},[536],"Ebben a sorrendben dolgoznék.",{"type":284,"ordered":538,"items":539},true,[540,542,544,546,548,550,552,554],[541],"Exportálj három hónapnyi keresési naplót, és sorold a kérdéseket az első táblázat típusaiba. Számold meg őket.",[543],"Építsd fel az értékelt készletet olyan azonosító-kérdésekkel, amelyek az első helyet ellenőrzik, és mérd a jelenlegi keresést kiindulópontként.",[545],"Javítsd a lexikális alapokat: azonosítómezők normalizerrel, nyelvenkénti analyzerek, karbantartott szinonimakészlet.",[547],"Add hozzá a vektoros sávot többnyelvű modellel, jogosultsági pre-filterekkel és RRF-fúzióval, feature flag mögött.",[549],"Zárd rövidre az azonosító-találatokat, hogy a vektoros ág és a reranker sosem érjen hozzájuk.",[551],"Add hozzá az LLM-parsert séma-validációval, offline cache-sel a gyakori kérdésekre, timeouttal és boost-first szabállyal.",[553],"Adj hozzá rerankert kis ablakon a nem azonosító kérdésekre, és ellenőrizd a késleltetést p95-ön.",[555],"Futtass A\u002FB-tesztet, vesd össze a mérőszámokat kérdéstípusonként és nyelvenként, és hetente nézd át a zero-result naplót.",{"type":151,"content":557},[558],"Az ilyen projektek nyereségének nagy része a 3. és 4. lépésből jön, nem a legdivatosabb modellből, a bizalmat pedig a 2. lépés teremti. Először tedd unalmasan megbízhatóvá az azonosító sávot, és a szemantikus keresés fejlesztésnek fog tűnni, nem kockázatnak.",{"type":158,"level":159,"id":147,"text":148},{"type":284,"ordered":538,"items":561},[562,565,568,571,574,577,580,583,586,589,592,595,598],[563],{"tag":164,"href":36,"children":564},[35],[566],{"tag":164,"href":39,"children":567},[38],[569],{"tag":164,"href":42,"children":570},[41],[572],{"tag":164,"href":45,"children":573},[44],[575],{"tag":164,"href":48,"children":576},[47],[578],{"tag":164,"href":51,"children":579},[50],[581],{"tag":164,"href":54,"children":582},[53],[584],{"tag":164,"href":57,"children":585},[56],[587],{"tag":164,"href":60,"children":588},[59],[590],{"tag":164,"href":63,"children":591},[62],[593],{"tag":164,"href":66,"children":594},[65],[596],{"tag":164,"href":69,"children":597},[68],[599],{"tag":164,"href":72,"children":600},[71],[602,678,760,827],{"slug":603,"published":5,"minutes":6,"category":7,"tags":604,"keywords":610,"about":621,"sources":631,"cover":671,"og":672,"expertise":673,"locales":674,"lang":79,"title":675,"description":676,"coverAlt":677},"llm-hallucination-grounding-citations",[605,606,607,608,609],"Hallucinations","RAG","Citations","Grounding","Faithfulness",[611,612,613,614,615,616,617,618,619,620],"reduce LLM hallucinations in production","how to reduce hallucinations in RAG","LLM citations API","Anthropic citations API","RAG faithfulness metric","LLM abstention I don't know","claim-level verification LLM","grounding LLM answers in sources","check grounding API","show sources in AI chatbot UI",[622,625,628],{"name":623,"url":624},"Hallucination (artificial intelligence)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHallucination_(artificial_intelligence)",{"name":626,"url":627},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",{"name":629,"url":630},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",[632,635,638,641,644,647,650,653,656,659,662,665,668],{"title":633,"url":634},"Anthropic: Citations (Claude API documentation)","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcitations",{"title":636,"url":637},"Anthropic: Search results (Claude API documentation)","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fsearch-results",{"title":639,"url":640},"Anthropic: Reduce hallucinations (Claude API documentation)","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Ftest-and-evaluate\u002Fstrengthen-guardrails\u002Freduce-hallucinations",{"title":642,"url":643},"Anthropic: Introducing Citations on the Anthropic API","https:\u002F\u002Fclaude.com\u002Fblog\u002Fintroducing-citations-api",{"title":645,"url":646},"Simon Willison: Anthropic's new Citations API (24 January 2025)","https:\u002F\u002Fsimonwillison.net\u002F2025\u002FJan\u002F24\u002Fanthropics-new-citations-api\u002F",{"title":648,"url":649},"OpenAI: Web search guide (url_citation annotations and display requirement)","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ftools-web-search",{"title":651,"url":652},"Cohere: Documents and citations","https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fdocuments-and-citations",{"title":654,"url":655},"Google Cloud: Check grounding API","https:\u002F\u002Fdocs.cloud.google.com\u002Fgenerative-ai-app-builder\u002Fdocs\u002Fcheck-grounding",{"title":657,"url":658},"AWS: Amazon Bedrock Guardrails contextual grounding check","https:\u002F\u002Fdocs.aws.amazon.com\u002Fbedrock\u002Flatest\u002Fuserguide\u002Fguardrails-contextual-grounding-check.html",{"title":660,"url":661},"Ragas: Faithfulness metric","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Ffaithfulness\u002F",{"title":663,"url":664},"Kalai, Nachum, Vempala, Zhang: Why Language Models Hallucinate (arXiv 2509.04664)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.04664",{"title":666,"url":667},"Magesh et al.: Hallucination-Free? Assessing the Reliability of Leading AI Legal Research Tools (arXiv 2405.20362)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2405.20362",{"title":669,"url":670},"Wallat, Heuss, de Rijke, Anand: Correctness is not Faithfulness in RAG Attributions (arXiv 2412.18004)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2412.18004","\u002Fimages\u002Fblog\u002Fllm-hallucination-grounding-citations\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllm-hallucination-grounding-citations\u002Fog.jpg","ai-engineer",[77,78,79],"LLM-hallucinációk csökkentése éles rendszerben: grounding, hivatkozások és a nemet mondás tudománya","Hallucinációk csökkentése éles RAG-ban: hivatkozás-API-k, tartózkodás, állításszintű ellenőrzés, faithfulness-mérés, forrás-UI és ami mégis átcsúszik.","Ábra: egy retrieval lépés evidencia-kapuba, hivatkozásos válaszba és állításellenőrzőbe vezet, a végén forrásokkal ellátott válasz; tartózkodási és jelölési ágak térnek le.",{"slug":679,"published":5,"minutes":6,"category":7,"tags":680,"keywords":684,"about":695,"sources":703,"cover":754,"og":755,"expertise":673,"locales":756,"lang":79,"title":757,"description":758,"coverAlt":759},"pgvector-vs-vector-databases",[681,682,606,10,683],"pgvector","Vector databases","EU hosting",[685,686,687,688,689,690,691,692,693,694],"pgvector vs vector database","pgvector vs Qdrant","pgvector vs Pinecone","best vector database 2026","pgvector HNSW iterative scan","pgvector halfvec","OpenSearch vs Elasticsearch vector search","vector database EU hosting","hybrid search Postgres","Weaviate vs Milvus",[696,699,702],{"name":697,"url":698},"Vector database","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVector_database",{"name":700,"url":701},"PostgreSQL","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPostgreSQL",{"name":626,"url":627},[704,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,751],{"title":705,"url":706},"pgvector README (index limits, HNSW defaults, iterative scans, filtering, halfvec)","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FREADME.md",{"title":708,"url":709},"pgvector CHANGELOG (0.4.0 to 0.8.7)","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FCHANGELOG.md",{"title":711,"url":712},"pgvectorscale: StreamingDiskANN, statistical binary quantization, filtered search","https:\u002F\u002Fgithub.com\u002Ftimescale\u002Fpgvectorscale",{"title":714,"url":715},"Qdrant documentation: Filtering","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Ffiltering\u002F",{"title":717,"url":718},"Qdrant documentation: Hybrid queries","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Fhybrid-queries\u002F",{"title":720,"url":721},"Qdrant documentation: Create a cluster (providers, free tier, Hybrid Cloud)","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fcloud\u002Fcreate-cluster\u002F",{"title":723,"url":724},"Weaviate documentation: Hybrid search","https:\u002F\u002Fdocs.weaviate.io\u002Fweaviate\u002Fconcepts\u002Fsearch\u002Fhybrid-search",{"title":726,"url":727},"Weaviate documentation: Vector index types","https:\u002F\u002Fdocs.weaviate.io\u002Fweaviate\u002Fconcepts\u002Fvector-index",{"title":729,"url":730},"Weaviate Cloud pricing and deployment options","https:\u002F\u002Fweaviate.io\u002Fpricing",{"title":732,"url":733},"Milvus documentation: Overview","https:\u002F\u002Fmilvus.io\u002Fdocs\u002Foverview.md",{"title":735,"url":736},"Pinecone documentation: Database architecture","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Fget-started\u002Fdatabase-architecture",{"title":738,"url":739},"Pinecone documentation: Create an index (clouds, regions, sparse and hybrid)","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fcreate-an-index",{"title":741,"url":742},"OpenSearch documentation: Methods and engines","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fmappings\u002Fsupported-field-types\u002Fknn-methods-engines\u002F",{"title":744,"url":745},"OpenSearch documentation: Efficient k-NN filtering","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fvector-search\u002Ffilter-search-knn\u002Fefficient-knn-filtering\u002F",{"title":747,"url":748},"Elasticsearch documentation: Dense vector search","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Fvector\u002Fdense-vector",{"title":750,"url":42},"Elasticsearch documentation: kNN query (filter as pre-filter)",{"title":752,"url":753},"GitHub releases: Qdrant, Weaviate, Milvus, OpenSearch, pgvectorscale (versions as of 1 October 2026)","https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fqdrant\u002Freleases","\u002Fimages\u002Fblog\u002Fpgvector-vs-vector-databases\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpgvector-vs-vector-databases\u002Fog.jpg",[77,78,79],"pgvector vagy vektoradatbázis? Így válassz vektortárolót 2026-ban","pgvector, Qdrant, Weaviate, Milvus, Pinecone, OpenSearch vagy Elasticsearch? Gyakorlati útmutató 2026-ra: szűrés, hibrid keresés, skálázás, költség és EU-s hosztolás.","Ábra: döntési út az adataidtól a Postgres-beli pgvectorig, a vektormezős keresőmotorig vagy a dedikált vektoradatbázisig.",{"slug":761,"published":5,"minutes":6,"category":7,"tags":762,"keywords":766,"about":776,"sources":784,"cover":821,"og":822,"expertise":673,"locales":823,"lang":79,"title":824,"description":825,"coverAlt":826},"graphrag-knowledge-graph-rag",[763,764,765,606],"GraphRAG","Knowledge graphs","LightRAG",[763,767,768,769,770,771,772,773,774,775],"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",[777,780,781],{"name":778,"url":779},"Knowledge graph","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnowledge_graph",{"name":626,"url":627},{"name":782,"url":783},"Leiden algorithm","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLeiden_algorithm",[785,788,791,794,797,800,803,806,809,812,815,818],{"title":786,"url":787},"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":789,"url":790},"Microsoft GraphRAG documentation: overview","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002F",{"title":792,"url":793},"Microsoft GraphRAG documentation: default dataflow","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Findex\u002Fdefault_dataflow\u002F",{"title":795,"url":796},"Microsoft GraphRAG documentation: global search","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fquery\u002Fglobal_search\u002F",{"title":798,"url":799},"Microsoft GraphRAG documentation: local search","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fquery\u002Flocal_search\u002F",{"title":801,"url":802},"Microsoft GraphRAG documentation: DRIFT search","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fquery\u002Fdrift_search\u002F",{"title":804,"url":805},"Microsoft GraphRAG documentation: getting started","https:\u002F\u002Fmicrosoft.github.io\u002Fgraphrag\u002Fget_started\u002F",{"title":807,"url":808},"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":810,"url":811},"Guo et al.: LightRAG: Simple and Fast Retrieval-Augmented Generation (arXiv:2410.05779)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2410.05779",{"title":813,"url":814},"HKUDS\u002FLightRAG on GitHub","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FLightRAG",{"title":816,"url":817},"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":819,"url":820},"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",[77,78,79],"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.",{"slug":828,"published":5,"minutes":829,"category":7,"tags":830,"keywords":836,"about":846,"sources":854,"cover":888,"og":889,"expertise":673,"locales":890,"lang":79,"title":891,"description":892,"coverAlt":893},"rag-evaluation-metrics",12,[831,832,833,834,835],"RAG evaluation","Retrieval metrics","LLM-as-judge","Golden set","Ragas",[831,837,838,839,840,841,842,843,844,845],"how to evaluate RAG","RAG evaluation metrics","recall@k MRR nDCG","faithfulness vs answer relevance","golden dataset for RAG","LLM as a judge calibration","Ragas vs DeepEval vs TruLens","RAG evals in CI","retrieval vs generation failure",[847,848,851],{"name":626,"url":627},{"name":849,"url":850},"Discounted cumulative gain","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDiscounted_cumulative_gain",{"name":852,"url":853},"Mean reciprocal rank","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMean_reciprocal_rank",[855,858,861,864,866,869,872,875,878,881,883,885],{"title":856,"url":857},"Es et al.: RAGAS, Automated Evaluation of Retrieval Augmented Generation (arXiv 2309.15217)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2309.15217",{"title":859,"url":860},"Zheng et al.: Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (arXiv 2306.05685)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.05685",{"title":862,"url":863},"Ragas documentation: available metrics","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002F",{"title":865,"url":661},"Ragas documentation: faithfulness",{"title":867,"url":868},"Ragas documentation: context precision","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Fcontext_precision\u002F",{"title":870,"url":871},"Ragas documentation: context recall","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Fcontext_recall\u002F",{"title":873,"url":874},"DeepEval documentation: metrics introduction","https:\u002F\u002Fdeepeval.com\u002Fdocs\u002Fmetrics-introduction",{"title":876,"url":877},"TruLens","https:\u002F\u002Fwww.trulens.org\u002F",{"title":879,"url":880},"Arize Phoenix documentation","https:\u002F\u002Farize.com\u002Fdocs\u002Fphoenix",{"title":882,"url":850},"Wikipedia: Discounted cumulative gain",{"title":884,"url":853},"Wikipedia: Mean reciprocal rank",{"title":886,"url":887},"Wikipedia: Cohen's kappa","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCohen%27s_kappa","\u002Fimages\u002Fblog\u002Frag-evaluation-metrics\u002Fcover.webp","\u002Fimages\u002Fblog\u002Frag-evaluation-metrics\u002Fog.jpg",[77,78,79],"RAG kiértékelése: retrieval metrikák, faithfulness, és hogyan derül ki, melyik fele hibázott","Hogyan értékeld ki a RAG-rendszered: recall at k, MRR, nDCG vs. faithfulness és válaszrelevancia, golden set valódi kérdésekből, kalibrált LLM-bíró, evalok a CI-ban.","Ábra: egy RAG-választ két oldalon pontoznak, retrieval metrikákkal, mint a recall at k, az MRR és az nDCG, valamint generálási metrikákkal, mint a faithfulness és a válaszrelevancia, amelyek egy diagnózisba futnak.",1791009036697]