Kas yra RAG architektūra? Išsamus apibrėžimas su detaliais praktiniais pavyzdžiais

RAG architektūra – tai komponentų visuma, kuri saugo, išgauna ir perduoda išorinę informaciją LLM; šiame vadove aptariama 10 tipų – nuo bazinio ir hibridinio RAG iki agentinio RAG ir GraphRAG – ir pateikiami du pavyzdžiai žingsnis po žingsnio.

Diagram of the types of RAG architecture branching from a central hub: basic, hybrid, adaptive, corrective (CRAG), self-RAG, multimodal, agentic, GraphRAG, HyDE, and branched.

RAG (angl. retrieval augmented generation – paieška papildytas generavimas) – tai procesas, kurio metu LLM naudoja išorinę informaciją, kad praplėstų ir pagerintų savo atsakymus. RAG architektūra – tai komponentų ir ryšių visuma, kuri leidžia RAG veikti.

Yra kelios skirtingos RAG kategorijos, ir kiekviena jų veikia pagal savitą architektūrą. Iš esmės RAG sistemos architektūra lemia, kokiu unikaliu būdu informacija saugoma, išgaunama ir perduodama LLM.

Kas yra RAG architektūra?

RAG architektūra – tai pagrindinė komponentų (ir su jais susijusių galimybių) konfigūracija, kuria grindžiamas konkrečios RAG sistemos veikimas. Visos šios architektūros remiasi baziniu šablonu, dažnai vadinamu „paprastuoju“ arba „naiviuoju“ RAG.

Štai bendra bazinės RAG architektūros apžvalga:

  • Informacijos šaltinis: Čia saugoma išorinė informacija. Tai gali būti paieškos indeksas, vektorinė duomenų bazė, kurioje pateikiami dideli informacijos kiekiai, arba neapdorotų dokumentų saugykla.
  • Išgavimo komponentas: Tai mechanizmas, kuriuo teikiamos užklausos informacijos šaltiniui. Pavyzdžiui, RAG sistema gali naudoti paprastą raktinių žodžių paiešką, kad rastų aktualius teksto fragmentus, arba sudėtingesnes vektorines užklausas panašumo paieškai atlikti.
  • Orkestravimo komponentas: Šis sluoksnis yra LLM pagrįstos programos dalis, kuri pagal naudotojo užklausą paleidžia RAG konvejerį – kartu su LLM arba savarankiškai. Jis taip pat sujungia išgautą informaciją į išplėstą užklausą.

RAG architektūros komponentai paprastai organizuojami į du kelius. Įkėlimo kelias priima duomenis ir sutvarko juos į informacijos šaltinį, kuriame galima ieškoti. Vektorinės duomenų bazės, kuriose dideli teksto kiekiai paverčiami paieškai pritaikyta vektorinių įterpinių saugykla, – vienas plačiausiai naudojamų sprendimų.

Išgavimo kelias priima naudotojo užklausą ir sugeneruoja paieškos užklausą informacijos šaltiniui. Tada orkestratorius prideda išgautą informaciją prie LLM įvesties konteksto. Agentinėse ir hibridinėse RAG architektūrose gali būti keli išgavimo keliai.

RAG architektūros tipai

Klaidinga manyti, kad RAG sudaro visiškai atskiros architektūros. Dauguma inžinierių renkasi modulinį požiūrį ir diegia atskirus komponentus, pritaikytus konkretiems naudojimo atvejams. Nors galima nubrėžti apytiksles ribas, svarbu pažymėti, kad architektūros modeliai gerokai persidengia.

1. Bazinis RAG

Bazinis RAG, dar vadinamas „naiviuoju“ arba „paprastuoju“ RAG, yra architektūrinis šablonas kitiems RAG tipams.

Pagrindinis procesas gana paprastas: naudotojas įveda užklausą, orkestratorius (savarankiškai arba kartu su LLM) nustato, ar reikia išorinės informacijos, ir atitinkamai suformuluoja bei išsiunčia paieškos užklausą.

Išorinės informacijos šaltinis dažniausiai yra vektorinė duomenų bazė, tačiau tai gali būti ir SQL duomenų bazė, žiniatinklio API, žinių grafas ar net „neapdorotų“ dokumentų saugykla. Ši papildoma informacija tada pridedama prie LLM įvesties konteksto.

Be SQL užklausų ir API, išskiriami du pagrindiniai išgavimo metodų tipai:

  • Leksinė paieška (raktinių žodžių paieška): Tai paprasta RAG forma, kai iš naudotojo užklausos išskiriami raktiniai žodžiai ir lyginami su teksto ištraukomis, kuriose tie raktiniai žodžiai yra. Šiuolaikiniuose konvejeriuose orkestratorius tam gali atlikti vadinamąją retųjų vektorių užklausą, kuri neatspindi prasmės.
  • Tankiųjų vektorių paieška (semantinė paieška): Tankieji vektoriniai įterpiniai atspindi prasmę. Orkestratorius gali teikti užklausas tankiųjų vektorių duomenų bazei taip, kad būtų užfiksuota tiek naudotojo užklausos, tiek šaltinio informacijos prasmė.

Atminties naudojimas taip pat yra svarbi RAG architektūros dalis. Ji apibrėžia, kaip LLM naudoja ankstesnių pokalbių kontekstą paieškos užklausai sudaryti ir taip susieja ją su platesniu diskusijos (ar kelių diskusijų) kontekstu. Pokalbių RAG yra norma daugumoje pokalbių robotų, nors kai kuriais naudojimo atvejais, pavyzdžiui, atsakant į pagalbos užklausas, gali būti taikomas vieno klausimo RAG.

2. Hibridinis RAG

Hibridinis RAG sujungia du skirtingus išgavimo tipus – dažniausiai raktinių žodžių ir semantinį išgavimą. Raktinių žodžių paieška randa sutampančius terminus, o vektorinė paieška – susijusios prasmės ištraukas.

Gali būti naudojamos ir kitos išgavimo formos, pavyzdžiui, žinių grafo apėjimas ar SQL duomenų bazės užklausos. Procesą dažnai valdo maršruto parinkimo logika – užprogramuotos taisyklės arba modelio atliekama klausimo klasifikacija (nors keli konvejeriai gali veikti ir vienu metu).

Orkestratorius sujungia rezultatus ir, prieš perduodamas juos LLM, gali juos iš naujo reitinguoti. Pakartotinis reitingavimas – tai procesas, kai išgautiems fragmentams priskiriami aktualumo balai, kad LLM pirmenybę teiktų tinkamiausiai informacijai.

3. Adaptyvusis RAG

Adaptyviajame RAG maršruto parinkimo komponentas pasirenka išgavimo strategiją pagal naudotojo užklausos reikalavimus, o orkestratorius tada vykdo pasirinktą darbo eigą.

Pradinėje sistemoje (Adaptive-RAG) mažesnis modelis veikdavo kaip klasifikatorius ir nuspręsdavo, ar išgavimo visai nereikia, ar pakanka vieno žingsnio išgavimo, ar reikia daugiažingsnio išgavimo. Kai kuriose architektūrose dabar vietoj to naudojami generatyviniai modeliai arba taisyklėmis pagrįstos euristikos.

Tai populiari architektūra, nes ji paskirsto skaičiavimo pajėgumus pagal užklausos sudėtingumą ir reikalavimus, todėl paprastesnėms užklausoms sumažėja nereikalingų išgavimo žingsnių. Ji dažnai naudojama asistentuose, kuriems tenka atsakyti į įvairių tipų klausimus.

4. Koreguojantysis RAG (CRAG)

Koreguojantysis RAG įvertina išgautą informaciją prieš pridėdamas ją prie LLM įvesties konteksto. Išgavimo vertintojas nustato, ar išgauta informacija yra aktuali ir naudinga. Išskirtinis šios architektūros bruožas – aiškus vertinimo ir taisymo etapas prieš generuojant atsakymą.

Jei nustatoma, kad informacija yra neišsami arba netinka užklausai, inicijuojamos papildomos užklausos. Jose gali būti taikomi kitokie išgavimo metodai nei pradinei užklausai, pavyzdžiui, žiniatinklio paieška ar žinių grafo apėjimas.

Koreguojantysis RAG dažnai taikomas srityse, kuriose svarbus tikslumas, pavyzdžiui, medicinoje ir teisėje. Vis dėlto jam reikalingas papildomas informacijos šaltinis, galintis papildyti iš pradžių išgautas ištraukas.

5. Self-RAG

Taikant self-RAG, modelis gali inicijuoti užklausas gavęs pradinį įvesties kontekstą. Sugeneruoti atsakymai vertinami pagal išgautus įrodymus naudojant refleksijos žetonus, o prireikus per orkestratorių siunčiamos papildomos užklausos. Ir atvirkščiai – LLM gali nuspręsti, kad išgavimo visai nereikia.

Nuo koreguojančiojo RAG jis skiriasi tuo, kad LLM pats vertina savo išvestis, nustato, ar reikia išgavimo ir ar išgautas tekstas naudingas, bei stebi savo atsakymus, prireikus juos keisdamas. Koreguojantysis RAG, priešingai, įvertina išgautos informacijos kokybę prieš generavimą.

Ši architektūra ypač naudinga sudėtingoms giluminio tyrimo pobūdžio užklausoms. Kadangi (išgautos informacijos) aktualumo vertinimas integruojamas į atsakymo generavimą, tai geras pasirinkimas užklausoms, kurioms reikia įrodymais pagrįstų atsakymų.

6. Agentinis RAG

Agentinis RAG – tai bet kokia RAG forma, vykdoma agentinėje platformoje. Modelis pasitelkia savo protavimo gebėjimus, kad nustatytų, kokios informacijos reikia, ir pasirenka iš galimų išgavimo variantų.

Prireikus išgavimas gali būti inicijuojamas kelis kartus, o sudėtingesnėms užklausoms modelis gali paskirti agentus. Pavyzdžiui, LLM galėtų paprašyti atlikti paiešką duomenų bazėje, kad nustatytų tiekėją, inicijuoti dokumentų paiešką, kad rastų susijusias sutartis, ir galiausiai atlikti žiniatinklio paiešką, kad patikrintų kontaktinius duomenis viešuose šaltiniuose.

Agentinis RAG yra pagrindinis architektūros sprendimas populiariuose pokalbių robotuose, tokiuose kaip Perplexity, ChatGPT, Claude ir kt. Kadangi šios platformos suteikia pagrindiniam modeliui prieigą prie daugybės įrankių ir RAG konvejerių, jis gali pasirinkti, kuri išgavimo forma geriausiai tinka konkrečiai užklausai.

7. Multimodalinis RAG

Multimodalinis RAG išgauna kontekstą iš įvairių tipų medijos. Tai svarbi RAG forma, nes ji suteikia LLM prieigą prie informacijos, kuri kitaip būtų nepasiekiama, pavyzdžiui, diagramų ir garso įrašų.

Pagrindinė architektūra tokia pati kaip ir bet kurioje kitoje sistemoje. Pavyzdžiui, indeksavimo konvejeris gali paruošti vaizdus paieškai, paversdamas juos tiesioginiais įterpiniais. Tada agentinė RAG sistema galėtų išgauti šiuos vaizdus kartu su semantiškai susijusiu tekstu ir perduoti juos vaizdo ir kalbos modeliui dvejopam apdorojimui.

8. GraphRAG

GraphRAG kartu su vektorine paieška naudoja žinių grafus, kad išgautų informaciją apie esybes. Paprastai orkestratorius randa aktualias pradines esybes, dar vadinamas mazgais, išskirdamas raktinius žodžius arba kartais atlikdamas preliminarią vektorinę paiešką. Grafo išgavimo komponentas apeina žinių grafą ir sukuria platesnį kontekstą.

Pavyzdžiui, gavęs prašymą išsamiai išanalizuoti produktų kategoriją, LLM gali inicijuoti vektorinę paiešką, kad nustatytų konkrečias esybes (produktus). Tada orkestratorius inicijuos žinių grafo paiešką, kad rastų susijusias esybes, pavyzdžiui, tiekėjus, mažmeninės prekybos vietas, atsiliepimus ir pan.

9. Šakotasis RAG

Hibridinė RAG architektūra leidžia naudoti skirtingus išgavimo metodus, o šakotasis RAG reiškia procesą, kai vienu metu vykdomos kelios užklausos, vadinamos šakomis. Kiekviena šaka gali teikti užklausas atskiram informacijos šaltiniui, arba šakos gali lygiagrečiai kreiptis į tą patį šaltinį su skirtingomis užklausomis ar filtrais. Agentinė RAG architektūra dažnai naudoja šakotąjį RAG.

10. HyDE (Hypothetical Document Embeddings – hipotetinių dokumentų įterpiniai)

HyDE – tai novatoriška RAG forma, kai LLM sukuria hipotetinį tekstinį dokumentą, parodantį, kaip galėtų atrodyti optimalus atsakymas. Šis „hipotetinis dokumentas“ tada naudojamas užklausai sudaryti, kad išgavimas būtų tikslesnis. Net jei aktualių žinių LLM parametruose nėra, logika tokia: į atsakymą panaši ištrauka gali geriau atitikti aktualius dokumentus nei trumpas klausimas ar dviprasmiška užklausa.

Paprastos RAG architektūros pavyzdys: vektorinė duomenų bazė

Bazinis RAG yra sudėtingesnių architektūros tipų pagrindas. Paprastoje RAG sistemoje, naudojančioje vektorinę duomenų bazę, šaltinio dokumentacija suskaidoma į mažesnes dalis (fragmentus) ir paverčiama tankiaisiais įterpiniais. Kai naudotojas įveda užklausą, orkestratorius sugeneruoja paieškos užklausą, ją užkoduoja ir pateikia duomenų bazei, kad rastų aktualias ištraukas.

Štai proceso aprašymas žingsnis po žingsnio:

  1. Dideli teksto kiekiai paverčiami vektoriais naudojant automatizuotą įkėlimo konvejerį ir įterpinių modelį, pavyzdžiui, BERT.
  2. Duomenų bazės programa sutvarko, indeksuoja ir saugo vektorius, kad paieška būtų greita.
  3. Naudotojas įveda užklausą į pokalbių robotą (pavyzdžiui, Perplexity).
  4. Programos orkestratorius užkoduoja užklausą (naudodamas įterpinių modelį), kad išgautų aktualią informaciją iš vektorinės duomenų bazės.
  5. Vektorinė duomenų bazė grąžina aktualius fragmentus, o orkestratorius prideda juos prie įvesties konteksto („didžiosios užklausos“) ir perduoda jį LLM.
  6. LLM naudoja papildomą kontekstą ir savo vidines žinias (saugomas parametriniuose svoriuose), kad sugeneruotų atsakymą.

Pažangios RAG architektūros pavyzdys: agentinis RAG

Agentinis RAG – tai RAG sistemų architektūra agentinėje platformoje. Agentinio RAG srautai paprastai būna sudėtingi, nes DI agentai, priklausomai nuo užklausos pobūdžio, gali iškviesti skirtingus įrankius ir konvejerius, o prireikus – pasitelkti kelis agentus.

Štai praktinis šio proceso pavyzdys:

  1. Naudotojas pateikia sudėtingą klausimą, kuriam reikia giluminio temos tyrimo. Tarkime, šiame pavyzdyje užklausa yra tokia: „Pateik įmonės pelno prognozę ateinantiems šešiems mėnesiams, atsižvelgdamas į svarbiausius geopolitinius įvykius“.
  2. LLM nusprendžia, kad reikės skirtingų tipų turinį apimančių RAG užklausų derinio.
  3. Pasitelkiami trys skirtingi agentai: (a) vektorinei paieškai, (b) pagrindimui žiniatinklio šaltiniais ir (c) vaizdų (multimodalinei) paieškai.
  4. Agentai per orkestratorių, naudodami turimus išgavimo įrankius, ieško aktualios informacijos, pavyzdžiui, naujienų ir vidinių finansinių duomenų.
  5. LLM palygina išgautus rezultatus su kiekvieno agento tyrimo klausimu ir surikiuoja juos pagal aktualumą.
  6. LLM įvertina informaciją ir, jei jos trūksta, per atskirus agentus inicijuoja papildomas paieškas.
  7. Išgavus pakankamai informacijos, LLM sugeneruoja scenarijų prognozes pagal esamus finansinius rodiklius (išgautus iš vidinės dokumentacijos) ir iškviečia skaičiuoklės įrankį, kad apskaičiuotų kiekvieno scenarijaus prognozuojamą pelną.
  8. LLM sugeneruoja galutinį atsakymą, remdamasis išgauta informacija ir skaičiavimais, o prireikus nurodo šaltinius.

Kas laukia RAG ateityje?

Dabartinės inovacijos sutelktos į tai, kad esamos RAG architektūros taptų gilesnės ir spartesnės, gerėtų multimedijos išgavimo tikslumas ir būtų kuriamos sistemos, skirtos dirbti su naujausia informacija.

Štai trys tendencijos, šiuo metu formuojančios tyrimų kryptį:

  • Giluminis tyrimas keliuose šaltiniuose: Tai RAG architektūra, galinti planuoti paieškas, vykdyti kelias šakas skirtinguose šaltiniuose, vertinti išgautus įrodymus ir pati optimizuoti sugeneruotus atsakymus. Agentinis RAG, galintis atlikti visas šias užduotis, nuolat tampa spartesnis ir ekonomiškesnis.
  • Multimodaliniai taikymai: Išgavimo konvejeriai vis geriau dirba su vaizdais ir vaizdo įrašais. Jie vis tiksliau geba aptikti konkrečių tipų informaciją sudėtinguose multimodaliniuose duomenyse, pavyzdžiui, ilguose vaizdo įrašuose ir sudėtingose diagramose.
  • Atsakymų grindimas nuolat kintančia informacija: LLM pagrįstos programos gali naudotis tiesioginiais informacijos šaltiniais (pavyzdžiui, vaizdo srautais ir jutikliais), kad gautų įvesties kontekstą. Sistemos taip pat gali kurti daugialypius informacijos tinklus, pavyzdžiui, naudodamos GraphRAG, kad interpretuotų šiuos duomenis.

RAG yra LLM pagrįstų programų veikimo pagrindas. Jis leidžia įvairiems naudotojams – nuo kasdienių vartotojų iki specializuotose srityse veikiančių įmonių – įveikti problemas, susijusias su haliucinacijomis, neišsamiais mokymo duomenimis ir prieigos prie specializuotų vidinių žinių trūkumu.

Todėl RAG sistemos ir jų architektūra yra viena sparčiausiai besivystančių ir įdomiausių DI tyrimų sričių.