Mi az a RAG és milyen problémát old meg
A RAG a Retrieval Augmented Generation rövidítése, magyarul kereséssel támogatott válaszadás. A lényege egyszerűen összefoglalható. A nyelvi modell tudása egy adott időpontban rögzült, és nem ismeri a cég saját, belső és gyakran friss adatait. Egy modell önmagában nem tudja, mi áll a tavaly aláírt keretszerződésben, vagy mit ír elő a legutóbbi belső szabályzat. Ezért mielőtt a kérdéssel a modellhez fordulnánk, megkeressük a saját tartalmunkban a kérdéshez leginkább illő részeket, és ezeket a kérdés elé illesztjük kontextusként. A modell így nem a memóriájából próbál felelni, hanem a behúzott, releváns forrásból dolgozik.
Ettől lesz a válasz pontosabb, naprakészebb és a saját adatra szabott. A RAG tehát nem egy új modell és nem is a meglévő modell újratanítása, hanem egy előfeldolgozó és kereső réteg, amely a helyes forrást a helyes pillanatban a modell elé teszi. A modell felel, de már nem vakon.
Ez a megkülönböztetés fontos, mert sokan a modell újratanításában gondolkodnak, amikor a saját adatot szeretnék használni. A tanítás lassú, drága és nehezen frissíthető, hiszen minden új dokumentumnál újra kellene futtatni. A RAG ezzel szemben a friss tartalmat egyszerűen hozzáadja a keresett anyaghoz, és a következő kérdésnél már benne van a válaszban. A modell tudása és a cég tudása így külön marad, ami karbantartás szempontjából sokkal kényelmesebb. A modellt cserélheted, az adatod ugyanaz marad, és fordítva, az adatod bővülhet anélkül, hogy a modellhez hozzá kellene nyúlni.
A csővezeték lépései
A RAG nem egyetlen művelet, hanem egy több lépésből álló csővezeték. Az első négy lépés előre, egyszer fut le, amikor betöltjük a tartalmat, az utolsó kettő pedig minden egyes kérdésnél. Érdemes ezt a hat lépést fejben tartani, mert a megoldás minősége szinte mindig valamelyiken múlik. A beágyazás lelke egyébként az, hogy a szöveget számsorozattá alakítjuk, amelyben a hasonló jelentésű részek matematikailag is közel kerülnek egymáshoz. Amikor később keresünk, valójában ezt a közelséget mérjük a kérdés és a tárolt darabok között.
- DarabolásA dokumentumokat kezelhető méretű darabokra, chunk-okra vágjuk, mert egy egész szerződést vagy kézikönyvet egyben nem érdemes kezelni.
- BeágyazásMinden darabhoz egy beágyazó modell számsorozatot, embedding vektort rendel, amely a jelentését képviseli a keresés számára.
- IndexelésA vektorokat egy indexben tároljuk, hogy később gyorsan megtalálhatók legyenek. Az előző lecke pgvector megoldása pontosan ezt a szerepet töltheti be.
- KeresésA kérdést is beágyazzuk, majd a leginkább hasonló darabokat húzzuk elő az indexből. Ez a retrieval, a RAG szíve.
- ÚjrarangsorolásOpcionális lépés. Egy külön modell finomítja a sorrendet, és a valóban legrelevánsabb darabokat emeli előre a kérdéshez.
- VálaszgenerálásA kiválasztott darabok a kérdés elé kerülnek kontextusként, és a modell ezekből fogalmazza meg a választ.
Egy magyar céges példa
Vegyünk egy elképzelt közepes céget, amelynek több száz aktív szerződése van különböző beszállítókkal. A jogi és a beszerzési csapat nap mint nap ugyanazokat a kérdéseket teszi fel. Mikor jár le ez a keret? Milyen felmondási idő szerepel a szerződésben? Melyik partnernél van kizárólagossági kikötés? Ma valaki megnyitja a mappát, végigolvassa a dokumentumot, és kimásolja a választ. Ez lassú, és könnyű elnézni valamit.
RAG-gal ebből egy kérdés és egy válasz lesz. A szerződéstárat egyszer feldaraboljuk és beágyazzuk, létrejön az index. Ezután a kolléga magyarul felteszi a kérdést, a rendszer előhúzza a néhány valóban releváns szerződésrészletet, és a modell ezek alapján, a forrásra hivatkozva válaszol. Ugyanez a minta működik egy ügyfélszolgálati tudásbázisnál is, ahol a beérkező kérdésekre a belső dokumentumokból kell pontos, mindig egyforma választ adni. Ez a két eset, a szerződéstár és az ügyfélszolgálati tudásbázis, a leggyakoribb belépő a vállalati RAG-hoz. A közös bennük, hogy a válasz egy meglévő, belső dokumentumban ott van, csak eddig egy embernek kellett megkeresnie. A RAG pontosan ezt a keresést és kiemelést automatizálja, a döntést és a felelősséget viszont az embernél hagyja, hiszen a válasz mellé a forrás is odakerül, ellenőrizhetően.
Mit ad hozzá a LlamaIndex
Ezt a hat lépést nem kell nulláról megírni. A LlamaIndex egy nyílt forrású keretrendszer, amely pontosan ezeket az építőelemeket adja készen. Vannak benne betöltők a különböző forrásokhoz, darabolók a chunk-okhoz, csatlakozók a beágyazó modellekhez, index szerkezetek, valamint kész kereső és válaszoló komponensek. A fejlesztő nem az alacsony szintű vízvezetéket rakja össze, hanem az adott feladatra hangolja a meglévő darabokat.
Ezért lehet LlamaIndex-szel gyorsan összerakni egy működő RAG megoldást. A keretrendszer összeköti a betöltést, a beágyazást, az indexet és a keresést, és a végén egy egyszerű felületet ad, ahol a kérdésre a forrásból jön a válasz. A LlamaIndex-et nem kötelező használni, a lépéseket kézzel is meg lehet valósítani, de a kész építőelemek sok időt takarítanak meg, és kevesebb hibalehetőséget hagynak.
Egy fontos gyakorlati előny, hogy a LlamaIndex a legtöbb ponton cserélhető darabokat kínál. Kicserélhető a beágyazó modell, kicserélhető a vektortár a háttérben, és állítható a darabolás módja is anélkül, hogy az egész megoldást újra kellene írni. Így a csapat egy egyszerű alapváltozattal indulhat, és a mérések alapján cserélheti ki azt a komponenst, amelyik a leggyengébben teljesít. Ez a kísérletezés a RAG hangolásának a lényege, és a keretrendszer éppen ezt teszi olcsóvá.
Min múlik a minőség
A leggyakoribb tévhit, hogy a RAG minősége a modelltől függ. A gyakorlatban három másik dolgon múlik sokkal inkább. Az első a darabolás mérete. Ha túl nagyok a darabok, sok felesleges szöveg kerül a kontextusba, ha túl kicsik, elveszik az összefüggés. A második a beágyazó modell. Egy jó beágyazó modell a valóban hasonló tartalmakat hozza közel egymáshoz, egy gyenge összemos olyasmit, ami csak felszínesen hasonlít. A harmadik a keresés. Hiába jó minden más, ha a retrieval nem a releváns részt hozza elő, a modell rossz alapból dolgozik.
Itt kap szerepet az újrarangsorolás. A keresés általában több darabot húz elő, mint amennyire szükség van, és ezek közül nem mindegyik egyformán hasznos. Az újrarangsoroló egy külön lépésben átnézi ezt a listát, és a kérdéshez leginkább illőt emeli a sor elejére. Nagyobb, kevert tartalmú tudásbázisnál ez érezhetően javítja a válasz pontosságát, kis, tiszta anyagnál viszont sokszor el is hagyható. A hangolás mindig mérésen alapul. Érdemes néhány valós kérdést összegyűjteni, és ellenőrizni, hogy a rendszer a helyes forrásból, a helyes részletet hozza-e. Ha nem, akkor a három tényező valamelyikén kell állítani, nem a modellt cserélni.
Hangolt és hangolatlan RAG
Ugyanaz a csővezeték nagyon eltérő élményt ad attól függően, hogy a fenti három tényezőt gondosan beállították-e. Az alábbi összevetés mutatja, mi a különbség egy figyelmesen és egy elhanyagoltan hangolt megoldás között.
Rosszul hangolt RAG
- Rossz méretű darabok, szétesik az összefüggés
- Gyenge beágyazó modell, pontatlan hasonlóság
- A keresés nem a releváns részt hozza
- A modell rossz alapból, mellé válaszol
Jól hangolt RAG
- Értelmes darabméret, megmarad a kontextus
- Erős beágyazó modell, valódi hasonlóság
- A keresés a valóban releváns részt hozza
- A modell a jó forrásból, pontosan válaszol
Vezetői tanulság
A RAG az egyik leggyakoribb vállalati AI minta, mert a cég saját tudására épít anélkül, hogy modellt kellene tanítani. Vezetőként ezért érdemes tudni, hogy egy RAG projekt sikere nem azon dől el, melyik modellt választják. A minőség az adaton és a csővezeték hangolásán múlik, azon, hogy a saját tartalom rendezett és hozzáférhető-e, jól van-e feldarabolva, és a keresés valóban a releváns részt hozza-e. Ha ez a három adott, a RAG megbízható, forrásra hivatkozó válaszokat ad a cég saját anyagából.
Három tényezőn múlik a minőség. A darabolás mérete, a beágyazó modell és a keresés. Ha ez a három rendben van, a RAG a saját adatból ad pontos választ, függetlenül attól, melyik modell fogalmazza meg.
Workshop
AI Transformation Day
Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.
Érdekel a program →