Mesterséges intelligencia

Hogyan készíts egyszerű RAG rendszert Pythonban lépésről lépésre

Az utóbbi időben a Retrieval-Augmented Generation, azaz RAG, egyre nagyobb figyelmet kap az AI és a nagyméretű nyelvi modellek világában. A RAG lényege, hogy a nyelvi modellek válaszadása nem csupán a bennük rejlő tudáson alapul, hanem kiegészül külső információforrásokból származó releváns adatokkal. Ez a megközelítés jelentősen javítja a modellek pontosságát és alkalmazhatóságát, legyen szó akár kérdés-válasz rendszerekről, chatbotokról vagy tartalomgenerálásról. Ebben a cikkben egy egyszerű RAG rendszer megalkotását mutatom be lépésről lépésre Python nyelven, az ollama eszköz segítségével.

Mi is az a RAG valójában?

Egy hagyományos chatbot vagy nyelvi modell önmagában csak az általa betanult adatok alapján válaszol, ami gyakran korlátozza a tudását, különösen ha specifikus vagy friss információkra lenne szükség. Például, ha megkérdeznénk egy modelltől, hogy „Mi az én anyukám neve?”, nem lenne képes válaszolni, mert nincs hozzáférése a felhasználó személyes adataihoz. Ezt a hiányt pótolja a RAG: a rendszer két fő elemből áll – egy lekérdező modulból, ami keres az adatbázisban vagy más külső forrásban, és egy nyelvi modellből, ami a lekért információk alapján generálja a választ.

Egyszerű RAG rendszer felépítése

A cikkben bemutatott egyszerű RAG rendszert három fő komponens alkotja. Először is, egy előre betanított beágyazó modell (embedding model), amely a szöveges adatokat vektorokká alakítja, így lehetővé téve a hasonlóság alapú keresést. Másodszor, egy vektor adatbázis, ami tárolja ezeket a beágyazott vektorokat és az azokhoz tartozó szöveges adatokat – ebben az esetben egy egyszerű, memóriában futó megoldást készítünk. Végül pedig egy nyelvi modell, amely a lekért releváns információk alapján válaszokat generál. Az ollama segítségével mindezeket a modelleket helyben, saját gépünkön futtathatjuk, anélkül, hogy felhőszolgáltatásokra támaszkodnánk.

Indexelési és lekérdezési fázis

Az indexelés során a forrásadatokat kisebb egységekre bontjuk, például mondatokra vagy bekezdésekre, majd ezekhez kiszámoljuk a vektoros reprezentációkat. Ezek a vektorok kerülnek a vektor adatbázisba, ahol később a lekérdezések során hatékonyan kereshetőek lesznek. A lekérdezési fázisban a felhasználó kérdése szintén vektorrá alakul, majd ezt összehasonlítjuk az adatbázisban tárolt vektorokkal, hogy megtaláljuk a leginkább releváns szövegdarabokat. A hasonlóság mérésére például a koszinusz hasonlóságot használjuk, amely egy egyszerű és hatékony módszer arra, hogy megállapítsuk két vektor mennyire áll közel egymáshoz.

Kódolási példa és eszközök

Az ollama egy kényelmes parancssori eszköz, amely lehetővé teszi, hogy helyben futtassunk modelleket a Hugging Face könyvtárból, anélkül, hogy bonyolult szerveres infrastruktúrát kellene üzemeltetni. A beágyazó modellként a hf.co/CompendiumLabs/bge-base-en-v1.5-gguf, míg a nyelvi modellként a hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF szolgál majd. A bemutatóhoz egy egyszerű, macskákról szóló tényeket tartalmazó adatbázist használunk, amelyet kisebb darabokra bontva indexelünk. A teljes folyamat során megismerhetjük, hogyan töltsünk be adatokat, hogyan készítsünk egy egyszerű vektoradatbázist, és végül hogyan állítsuk össze a lekérdezést és a válasz generálását.

Ha érdekel, hogyan építhetsz saját RAG rendszert, és szeretnél mélyebben belemerülni a témába, ajánlom figyelmedbe ezt a részletes útmutatót, amely további példákat és fejlettebb megoldásokat is bemutat.

Fejlesztési lehetőségek és további irányok

Bár az itt bemutatott egyszerű RAG modell remek kiindulópont, a valós alkalmazásokban gyakran komplexebb megoldásokra van szükség. Léteznek például hibrid megközelítések, amelyek többféle keresési technikát kombinálnak, vagy hierarchikus RAG rendszerek, amelyek több lépésben gyűjtik be és dolgozzák fel az információkat. Egyébként a vektoradatbázisok fejlettebb változatai, mint a Qdrant vagy a Pinecone, további skálázhatóságot és sebességet biztosítanak nagyobb adatmennyiségek esetén.

Ez a projekt kiváló lehetőség arra, hogy megértsük, miként működik a RAG technológia a gyakorlatban, és hogyan lehet egyszerű, mégis hatékony rendszereket építeni új generációs AI alkalmazásokhoz.