A RAG (Retrieval-Augmented Generation) rendszerekben kulcsszerepe van a dokumentumok relevanciájának pontos megítélésében. A keresési folyamat során gyakran előfordul, hogy számos dokumentumot találunk, de nem mindegyik tartalmaz valódi relevanciát az adott kérdéshez. Ezért a dokumentumok újrasorrendezése kulcsfontosságú ahhoz, hogy a legmegfelelőbb válaszokat találjuk. A Cross-Encoder modellek, mint a ms-marco-MiniLM-L-6-v2, különösen alkalmasak a dokumentumok és a kérdések közötti relevancia pontos mérésére, még akkor is, ha ez lassabb folyamatot jelent a hagyományos vektor alapú hasonlósági megoldásokhoz képest.
A Cross-Encoder modellek működésének alapja, hogy mind a kérdés, mind a dokumentum együttes figyelembevételével végzik el a relevancia mérését. Az alapvető előnyük abban rejlik, hogy képesek figyelembe venni az összes szöveges kapcsolatot egy dokumentum és a lekérdezés között, miközben a vektor alapú módszerek csak a statikus hasonlóságokat vizsgálják. Ezt a módszert az alábbi lépésekkel valósíthatjuk meg egy RAG rendszerben:
Első lépésként inicializáljuk a Cross-Encoder modellt. A ms-marco-MiniLM-L-6-v2 modell egy olyan előre betanított modellt jelent, amelyet kifejezetten a dokumentumok és kérdések közötti relevancia mérésére optimalizáltak. Ehhez a sentence_transformers könyvtárat használjuk:
Miután inicializáltuk a modellt, az egyes dokumentumokat párba állítjuk a lekérdezéssel, és a modell segítségével relevancia pontszámokat rendelünk hozzájuk. A magasabb pontszámok azt jelzik, hogy a dokumentum szorosabb kapcsolatban áll a lekérdezéssel. Ezután az alábbi kód segít a legmagasabb pontszámú dokumentum kiválasztásában:
Ezáltal elérhetjük, hogy a keresett információk közül a legmegfelelőbb dokumentum kerül előtérbe. Az alábbi eredmény például három dokumentum relevanciáját mutatja a lekérdezéshez viszonyítva: array([-8.52623 , -6.328738, -8.750055], dtype=float32). A legmagasabb pontszámú dokumentum a legrelevánsabb a kérdés szempontjából.
A RAG rendszerekben a műveletek sorrendje a következőképpen alakul: először a dokumentumok bevitele, majd előfeldolgozása és darabolása, például PDF-ek vagy HTML fájlok esetén. Ezután a vektorizálás következik, és a dokumentumok vektorformában kerülnek tárolásra egy vektor adatbázisban. Ezt követi a szeminálszerű hasonlóság számítása, amely gyors, de esetlegesen pontatlan, majd a legjobb K eredmény újrasorrendezése a pontosabb, de lassabb Cross-Encoder modell segítségével. Ez a megközelítés egyensúlyba hozza a gyorsaságot és a pontosságot, mivel csak a legrelevánsabb dokumentumokat kell újrasorrendezni.
Miután az újrasorrendezett dokumentumok kiválasztásra kerültek, következhet a LLM (Large Language Model) integrációja, amelyhez az in-context learning módszert használhatjuk. Az LLM-ek az így előállított kontextus alapján képesek pontos válaszokat generálni a felhasználói kérdésekre. Az alábbiakban egy egyszerű példa látható, amely bemutatja, hogyan lehet az LLM-t egy RAG rendszerrel kombinálni:
Ezt követően a rendszer generálja a választ az alábbi kód segítségével:
Ez a válasz segít a rendszer számára, hogy a legrelevánsabb információk alapján generálja a kérdésre adott választ. Az RAG alkalmazások tehát különösen jól használhatók komplex, de pontos válaszokat igénylő kérdéseknél.
A RAG rendszerek alkalmazásakor fontos tisztában lenni azok kihívásaival és korlátaival. Az adatok minősége és pontossága kulcsfontosságú tényező, mivel a rendszerek megbízhatósága közvetlenül függ az alkalmazott tudásforrások hitelességétől. Ha a források elavultak, pontatlanok vagy torzítottak, a válaszok is hasonlóan megbízhatatlanok lesznek. A RAG rendszerek gyorsan tudják kezelni a változó adatokat, ha azok naprakészek és megbízhatóak.
A számítási költségek és a késleltetés szintén problémát jelenthetnek, különösen akkor, amikor nagy tudásbázisokon kell végrehajtani a keresést és a hasonlóság számítást. Azonban különféle optimalizációs lehetőségek léteznek, amelyek csökkenthetik ezeket a költségeket.
A magyarázhatóság és értékelés kérdései szintén kihívást jelentenek, mivel a RAG rendszerek komplexitása miatt nehéz nyomon követni, hogy miért és hogyan hoz meg egy-egy választ a modell. Ezt különösen fontos figyelembe venni, ha a rendszert valódi alkalmazásokban szeretnénk használni.
Bár a RAG rendszerek segítenek csökkenteni a „hallucination” jelenségét, amikor a modell a valóságotól eltérő információkat generál, nem garantálják, hogy a válaszok mindig pontosak lesznek. A megfelelő források kiválasztása és azok megfelelő kezelése elengedhetetlen a megbízhatóság érdekében.
Hogyan javíthatjuk a RAG rendszerek teljesítményét és alkalmazhatjuk őket valós esetekben?
A RAG (Retrieval-Augmented Generation) rendszerek olyan technológiák, amelyek képesek információt keresni és generálni, hogy a felhasználóknak pontos, kontextushoz illeszkedő válaszokat adjanak. Azonban nem minden esetben teljesítenek megfelelően, különösen a legújabb kutatások szerint, amelyek rávilágítottak a RAG rendszerekben használt új technikák kritikusan fontos korlátaira, különösen a dokumentumok újrarendezése (reranking) kapcsán.
Az egyik fontos megfigyelés, hogy a RAG rendszerek gyakran rossz információkat mutatnak be, miközben egyértelmű forrást is társítanak hozzá. A kutatások azt mutatták, hogy a következő főbb problémák jelentkezhetnek, amikor a RAG rendszerekhez alkalmazott technikákat vizsgálják:
A teljesítmény romlása: Ahogy a dokumentumok száma (K) növekszik, a rendszer teljesítménye csökkenhet, és néha még a legegyszerűbb keresési rendszerek is jobban teljesítenek a nagy adathalmazok esetében.
Gyenge dokumentum-differenciálás: A rendszerek tévesen adhatnak magas pontszámot olyan dokumentumoknak, amelyek csak minimálisan kapcsolódnak a kérdéshez, és így nehézséget okoznak a relevancia megítélésében.
Konzisztenciával kapcsolatos problémák: Az újrarendezők teljesítménye és az egyes újrarendezők közötti rangsorolás jelentős eltéréseket mutathat, attól függően, hogy hány dokumentumot dolgoznak fel.
Ezek a problémák nem meglepőek, hiszen a RAG rendszerek egy új és folyamatosan fejlődő alkalmazási paradigmát képviselnek. Ugyanakkor fontos hangsúlyozni, hogy ezek a rendszerek jelenleg a legkiemelkedőbb megvalósításai az LLMBAs (Large Language Model-Based Applications), ami nemcsak hogy felerősíti ezeket a kihívásokat, hanem lehetőséget ad számunkra, hogy értéket adjunk hozzá a problémák megértésével és megoldásával.
A fent említett problémák mellett kulcsfontosságú, hogy a rendszer képes legyen a szövegeket olyan módon feldolgozni, hogy azok hosszú távú koherenciát és minőséget megőrizzék, miközben a modellek kimeneti tokenek számának korlátaihoz igazodnak. Ez a kihívás különösen a hosszú formátumú tartalmak generálásakor válik egyre fontosabbá. Egyre inkább szükség van olyan technikákra, amelyek a szövegeket kisebb egységekre bontják (chunking), miközben fenntartják a kontextust, hogy a rendszer folyamatosan és koherensen képes legyen választ adni.
A tartalom feldarabolása és kontextus alapú összekapcsolása, mint a Chunking with Contextual Linking technika, egy olyan módszer, amely képes a bemeneti adatokat úgy szétválasztani, hogy azok ne veszítsenek el fontos kontextust. Ez különösen fontos, ha hosszú szövegeket kell feldolgozni, miközben meg akarjuk tartani a rendszer által generált válaszok koherenciáját.
A technika implementálásához az alábbi lépések szükségesek:
-
Tartalom darabolása: Az input szöveget kisebb darabokra bontjuk. Ez lehetővé teszi a rendszer számára, hogy minden egyes részt külön-külön dolgozzon fel, így biztosítva, hogy minden szakaszra részletes és teljes választ adjon.
-
A kontextus megőrzése alapértelmezett prompttal: Minden egyes darabhoz kapcsolódóan kontextuális információkat adunk hozzá, így biztosítva a szöveg folytonosságát és koherenciáját a különböző szakaszok között.
-
Dinamikus prompt paraméterek létrehozása: Minden darabhoz olyan promptot generálunk, amely tartalmazza a szakasz tartalmát és annak kontextusát. Ez a prompt segíti a rendszer működését, így a válaszok még jobbak lehetnek.
-
A válaszok összevonása: Az összes darab válaszát egyesítjük, hogy egy hosszú formátumú tartalom jöjjön létre, így kezelve a modell kimeneti tokenek korlátozásait, miközben megőrizzük a szöveg koherenciáját.
Ez a megközelítés rendkívül hasznos lehet például a 10-K riportok elemzésére, ahol hosszú és összetett információkat kell feldolgozni és azokból koherens jelentést generálni. A Chunking with Contextual Linking technika segítségével a rendszer képes a teljes dokumentumot részleteiben feldolgozni, és egyértelmű, összefüggő választ adni anélkül, hogy a modellek tokenkorlátai problémát jelentenének.
A szöveg darabolására és kontextus megőrzésére számos különféle technika létezik. Például, a Langchain könyvtár számos szövegfeldarabolási módszert kínál, mint a karakter-alapú szétválasztás, amely a Tiktoken tokenizálót használva képes biztosítani, hogy ne lépjük túl a modell maximális token limitjét. Az egyes darabokat így külön-külön, de összekapcsolva dolgozhatjuk fel, biztosítva a magas minőségű kimenetet.
Ezen módszerek alkalmazása nem csupán a hosszú szövegek feldolgozásában segít, hanem az olyan kihívások leküzdésében is, mint a dokumentumok közötti relevancia különbségeinek kezelése és a konzisztens, minőségi válaszok generálása.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский