Mi történik, ha a RAG rendszer „iránytűjét” manipuláljuk? A tudásbázis-mérgezés és a kontextus-injektálás után egy sokkal finomabb, matematikai szintű támadással ismerkedünk meg. Itt nem a dokumentumokat vagy a kontextusablakot, hanem magát a jelentést hordozó vektorteret, a beágyazási teret vesszük célba. Ez a technika arról szól, hogyan kényszeríthetünk egy rendszert arra, hogy egy látszólag irreleváns kérdésre egy nagyon is specifikus, általunk kiválasztott dokumentumot találjon meg.
De mit is jelent pontosan a beágyazási tér?
Mielőtt a támadásba mélyednénk, tisztázzuk a fogalmat. Amikor egy RAG rendszernek kérdést teszel fel, az első lépések egyike, hogy a kérdésed szövegét egy embedding modell átalakítja egy numerikus vektorrá. Ez a vektor egy sokdimenziós (gyakran több száz vagy ezer dimenziós) térben helyezkedik el. A térben a hasonló jelentésű szövegekhez tartozó vektorok közel kerülnek egymáshoz, míg az eltérő jelentésűek távol.
Analógia: A Galaktikus Könyvtár
Képzeld el a tudásbázisodat egy hatalmas, galaktikus könyvtárként, ahol minden könyv (dokumentum) egy csillag. A beágyazási tér a galaxis térképe. Amikor kérdezel valamit, a rendszer a kérdésed alapján meghatároz egy koordinátát ezen a térképen. Ezután megkeresi a legközelebbi csillagokat (dokumentumokat) ehhez a ponthoz. A beágyazási tér manipulációja olyan, mintha egy „gravitációs anomáliát” hoznál létre a kérdéseddel, ami eltorzítja a térképet, és a keresést egy távoli, de általad kiszemelt csillag felé vonzza.
Hogyan működik a manipuláció a gyakorlatban?
A támadás lényege egy olyan bemeneti szöveg (query) létrehozása, ami emberi szemmel ártalmatlannak tűnik, de a belőle generált vektor a beágyazási térben rendkívül közel esik egy célzott dokumentum vektorához. Ezzel lényegében „becsapjuk” a hasonlóságkeresést (pl. koszinusz-hasonlóság), és a rendszer azt a dokumentumot fogja relevánsnak ítélni, amit mi szeretnénk.
Gyakori technikák
A támadói perturbáció (a kérdés módosítása) többféleképpen valósulhat meg:
| Technika | Leírás | Nehézség | Szükséges tudás |
|---|---|---|---|
| Adverzárius utótag/előtag (Adversarial Suffix/Prefix) | A támadó látszólag értelmetlen karaktersorozatokat vagy szavakat fűz a felhasználói kérdéshez, amelyek célzottan „eltolják” a generált vektort a kívánt irányba. | Közepes | Az embedding modell viselkedésének heurisztikus ismerete vagy kísérletezés. |
| Szemantikai perturbáció | A kérdés finom átfogalmazása, szinonimák használata, vagy olyan relevánsnak tűnő, de valójában a célpontra utaló kulcskifejezések becsempészése, amelyek közelebb viszik a vektort a célponthoz. | Közepes-Nehéz | A cél dokumentum tartalmának és az embedding modell szemantikai érzékenységének ismerete. |
| Gradiens-alapú támadások | (White-box forgatókönyv) A támadó hozzáfér az embedding modellhez, és a gradiensek segítségével iteratívan, matematikailag optimalizálja a bemeneti szöveget, hogy annak vektora a lehető legközelebb kerüljön a célvektorhoz. | Nehéz | Teljes hozzáférés az embedding modellhez és annak súlyaihoz. |
Egy leegyszerűsített példa
Tegyük fel, hogy egy céges RAG rendszerben van egy bizalmas dokumentum „Project_Orion_leallitasi_terv.pdf” címmel. A tartalmát nem ismerjük pontosan, de a címéből sejtjük, hogy érzékeny. Célunk, hogy egy ártalmatlan kérdéssel ezt a dokumentumot hívjuk elő.
Egy normál felhasználó kérdése: "Mik a legutóbbi negyedéves pénzügyi eredmények?". Ez valószínűleg a pénzügyi riportokhoz közeli vektort generál.
A mi manipulált kérdésünk lehet valami ilyesmi: "Mik a legutóbbi negyedéves pénzügyi eredmények? Különösen érdekelnek a csillagászati projektekkel kapcsolatos költségvetési átcsoportosítások és lezárások." A „csillagászati projektek”, „költségvetési”, „lezárások” szavak együttesen eltolhatják a keresési vektort az „Orion” projekt leállítási terve felé.
Fontos: Ez nem egyszerű kulcsszótömés (keyword stuffing). A modern embedding modellek komplex szemantikai összefüggéseket kódolnak. A sikeres támadás nem arról szól, hogy minél több kulcsszót ismételgetünk, hanem arról, hogy megtaláljuk azt a finom szövegkombinációt, ami a vektorok szintjén hozza létre a kívánt közelséget.
# Pszeudokód egy adverzárius utótag keresésére (black-box)
# Cél: megtalálni azt a suffix-et, ami maximalizálja a hasonlóságot
TARGET_DOC_EMBEDDING = get_embedding("Project_Orion_leallitasi_terv.pdf")
BASE_QUERY = "Mik a negyedéves eredmények?"
best_suffix = ""
max_similarity = 0.0
# Különböző, potenciálisan hatásos szavak és karakterláncok tesztelése
# A valóságban ez egy sokkal szofisztikáltabb keresési algoritmus lenne
for suffix in ["lezárás", "csillag", "terv", "projekt", "xyz_pert_123"]:
manipulated_query = BASE_QUERY + " " + suffix
query_embedding = generate_embedding(manipulated_query)
# Koszinusz-hasonlóság számítása
similarity = cosine_similarity(query_embedding, TARGET_DOC_EMBEDDING)
print(f"Tesztelt suffix: '{suffix}', Hasonlóság: {similarity:.4f}")
if similarity > max_similarity:
max_similarity = similarity
best_suffix = suffix
print(f"\nLegjobb megtalált utótag: '{best_suffix}'")
# Eredmény: A manipulált kérdés a "Mik a negyedéves eredmények? lezárás"
# ami már nagyobb eséllyel hozza elő a cél dokumentumot.
Védekezési stratégiák
Hogyan védekezhetsz az ilyen finom, matematikai szintű támadások ellen?
- Robusztusabb Embedding Modellek: Olyan modellek használata, amelyeket kifejezetten adverzárius támadásokkal szembeni ellenállóságra képeztek.
- Bemenet szűrése és normalizálása: Bár nem mindenható, a furcsa, nem nyelvtani karaktersorozatok (potenciális adverzárius utótagok) kiszűrése csökkentheti a támadási felületet.
- Anomáliadetekció a beágyazási térben: A bejövő kérdések vektoraiból mintát véve detektálhatók a „szokatlan” helyre eső, potenciálisan manipulált lekérdezések.
- Több visszakeresési stratégia kombinálása: Ne csak a vektorhasonlóságra támaszkodj. Kombináld hibrid kereséssel (pl. kulcsszavas BM25), ami kevésbé érzékeny a tisztán szemantikai manipulációra.
- Hasonlósági küszöbök finomhangolása: Egy túl megengedő hasonlósági küszöb sebezhetőbbé teszi a rendszert. A szigorúbb küszöb csökkentheti a hamis pozitív (sikeres támadói) találatokat.
A beágyazási tér manipulációja egy elegáns, de nehezen kivitelezhető támadási forma, ami rávilágít, hogy a RAG rendszerek sebezhetőségei nemcsak a szöveges, hanem a mögöttes matematikai reprezentáció szintjén is léteznek.