RAG (Retrieval-Augmented Generation, u slobodnom prevodu generisanje uz preuzimanje podataka) je postupak u kojem AI model pre odgovora dobija odgovarajuće delove vaših dokumenata, umesto da odgovara samo iz onoga što je naučio tokom treninga. Naziv potiče iz rada tima istraživača na čelu sa Patrickom Lewisom, objavljenog na konferenciji NeurIPS 2020. Danas se pod tim imenom podrazumeva prilično jednostavna ideja: sistem pronađe relevantne pasuse u dokumentaciji, priloži ih pitanju i zatraži od modela da odgovori na osnovu njih.
Ovaj vodič objašnjava kako RAG funkcioniše, kada ga firma zaista treba, kada je dovoljno jednostavnije rešenje i kojim redosledom se gradi prvi sistem.
Kako RAG funkcioniše
Anthropic u svom tehničkom tekstu o toj temi opisuje osnovni tok: dokumenti se podele na delove, delovi se pretvore u vektorske reprezentacije, takozvane embeddinge, i smeste u pretraživu bazu, a pri svakom pitanju se preuzimaju najrelevantniji delovi i dodaju upitu. Embedding modeli su dobri u hvatanju značenja, pa će pitanje „koliko traje otkazni rok“ pronaći i pasus koji govori o „periodu obaveštavanja o raskidu“. Klasična leksička pretraga, na primer algoritam BM25, traži tačna poklapanja reči i fraza, što je korisno za šifre proizvoda, brojeve članova ugovora ili nazive grešaka. Ozbiljniji sistemi obično kombinuju oba pristupa.
Kada RAG nije potreban
Anthropic u istom tekstu navodi da se baza znanja manja od 200.000 tokena, što je oko 500 stranica materijala, može jednostavno u celini uključiti u prompt. Za pravilnik od četrdesetak stranica, cenovnik ili priručnik za zaposlene to znači da nikakva posebna baza, indeks ni pretraga nisu potrebni: dokument se priloži uz pitanje. Kod pojedinih provajdera keširanje upita smanjuje cenu ponovnog slanja istog teksta, pa se taj pristup često isplati i u produkciji.
Fine-tuning modela takođe nije zamena za RAG kada je cilj da model zna činjenice iz firmine dokumentacije. On je obično pogodniji za stil, format i ponašanje, dok se činjenice koje se menjaju bolje čuvaju u dokumentima koje sistem preuzima pri svakom pitanju.
Kada RAG ima smisla
Preuzimanje dokumenata opravdano je kada je najmanje jedan od sledećih uslova ispunjen:
- dokumenata ima mnogo više nego što staje u jedan prompt, na primer hiljade stranica tehničke dokumentacije ili arhiva podrške;
- sadržaj se često menja, pa bi svaka izmena inače tražila ponovno prilagođavanje modela;
- odgovor mora da navede izvor, na primer koji član pravilnika ili koja verzija uputstva se primenjuje;
- različiti zaposleni imaju različita prava pristupa dokumentima.
Tipični primeri su interna baza znanja za korisničku podršku, dokumentacija proizvoda, ugovori i interni pravilnici. Firme sa malim brojem dokumenata, kakve opisuje tekst o AI alatima za male firme u Srbiji, često nemaju potrebu za ovakvim sistemom.
Kako izgraditi prvi sistem korak po korak
- Odredite pitanja pre tehnologije. Zapišite 30 do 50 stvarnih pitanja koja zaposleni ili klijenti postavljaju, uz tačan odgovor i dokument iz kog on dolazi. Taj skup je kasnije test kvaliteta.
- Sakupite i očistite dokumente. Skenirani PDF-ovi bez teksta traže OCR. Uklonite duplikate i zastarele verzije, a uz svaki dokument sačuvajte naslov, datum, odeljenje i broj verzije.
- Podelite dokumente na delove. Najčešća praksa je deljenje po naslovima i pasusima, na delove od nekoliko stotina tokena uz malo preklapanje. Tabelu ne treba seći na pola. Svaki deo mora da zadrži naziv dokumenta i odeljka iz kog potiče.
- Izaberite bazu. Ako već koristite PostgreSQL, ekstenzija pgvector omogućava čuvanje i pretragu embeddinga u istoj bazi. Alternativa su namenske baze poput Qdrant-a ili Chroma-e, kao i Elasticsearch ili OpenSearch, koji podržavaju i vektorsku i leksičku pretragu.
- Prilagodite pretragu srpskom jeziku. Kvalitet višejezičnih embedding modela za srpski razlikuje se od modela do modela, pa ga treba proveriti na sopstvenim pitanjima. Korisnici pišu i latinicom i ćirilicom, a često i bez dijakritika. Praktično rešenje je da se tekst pri indeksiranju i pretrazi normalizuje, na primer da se ćirilica pretvori u latinicu, a oznake č, ć, š, ž, đ svedu na osnovna slova u leksičkom indeksu.
- Preuzmite više delova nego što biste očekivali. Anthropic navodi da je prosleđivanje 20 najboljih delova modelu delotvornije od prosleđivanja 10 ili 5. Izbor se može dodatno poboljšati rerankingom, dodatnim korakom u kojem poseban model ponovo poređa preuzete delove.
- Zadajte pravila odgovaranja. Uputstvo modelu treba da kaže da odgovara samo na osnovu priloženih delova, da navede dokument i odeljak iz kojih je preuzeo podatak i da odgovori da informacije nema kada je u priloženom tekstu ne pronađe. Više o pisanju uputstava nalazi se u vodiču o dobrom promptu.
- Merite na skupu iz prvog koraka. Proverite koliko često se tačan deo nalazi među preuzetih 20 i koliko često je konačni odgovor tačan. Bez tog merenja ne zna se da li izmena poboljšava ili pogoršava sistem.
Šta poboljšava preuzimanje
Najčešći uzrok loših odgovora nije model, nego neuspešno preuzimanje pravog dela. Anthropic je 2024. objavio postupak nazvan Contextual Retrieval, u kojem se pre indeksiranja svakom delu doda kratak opis konteksta iz kog potiče. Prema njihovim merenjima na sopstvenim skupovima podataka, udeo promašenih preuzimanja među prvih 20 delova pao je sa 5,7 odsto na 2,9 odsto kada se kontekstualni embeddinzi kombinuju sa kontekstualnim BM25, a na 1,9 odsto kada se doda i reranking. Kompanija je navela da je jednokratni trošak pripreme, uz keširanje upita, iznosio oko 1,02 dolara po milion tokena dokumenata. Cene provajdera se menjaju, pa taj podatak treba shvatiti kao ilustraciju iz septembra 2024, a ne kao aktuelan cenovnik.
Najčešće greške
Zanemarena prava pristupa. Ako svi dokumenti završe u jednom zajedničkom indeksu, zaposleni može dobiti odgovor zasnovan na dokumentu koji ne bi smeo da vidi. Pretraga mora da filtrira rezultate prema pravima korisnika koji postavlja pitanje.
Lični podaci u spoljnim servisima. Dokumenti sa podacima o zaposlenima ili klijentima šalju se provajderu pri svakom upitu, pa treba proveriti njegove uslove obrade podataka. O toj temi govori vodič o korišćenju ChatGPT-a bez rizika po podatke.
Zastarele verzije. Ako stari i novi pravilnik postoje u indeksu, sistem može citirati onaj koji više ne važi. Datum i verzija zato moraju biti deo podataka o svakom delu.
Očekivanje da RAG uklanja greške. Preuzimanje smanjuje broj netačnih odgovora, ali ne isključuje ih: model i dalje može pogrešno protumačiti priloženi pasus, a pretraga može propustiti pravi.
RAG i AI agenti
U agentskim sistemima pretraga dokumenata obično postaje jedan od alata koje agent sam poziva kada proceni da mu je potrebna informacija. Standardizovano povezivanje takvih alata omogućava MCP protokol, a osnovne pojmove objašnjava tekst o tome šta je AI agent.
Često postavljana pitanja
Da li RAG zamenjuje fine-tuning?
Ne. RAG rešava problem pristupa činjenicama i dokumentima koji se menjaju, dok se fine-tuning obično koristi za stil, format i ponašanje modela. Firme ih mogu kombinovati, ali za većinu internih baza znanja dovoljan je RAG ili čak samo dokument priložen uz upit.
Da li dugi konteksti čine RAG nepotrebnim?
Za manje baze znanja delimično da. Anthropic navodi granicu od oko 200.000 tokena, do koje se sav sadržaj može uključiti u prompt. Kada je dokumenata više, kada se često menjaju ili kada je potrebna kontrola pristupa, preuzimanje delova ostaje praktičnije.
Koliko dokumenata je potrebno da bi RAG imao smisla?
Ne postoji stroga granica. Kao okvir za proveru služi navedenih 200.000 tokena, odnosno oko 500 stranica. Ispod toga se prvo isplati isprobati jednostavno slanje celog dokumenta.
Da li RAG radi na srpskom jeziku?
Radi, ali kvalitet zavisi od izabranih modela i od pripreme teksta. Zato je skup od 30 do 50 pitanja na srpskom, latinicom i ćirilicom, s dijakriticima i bez njih, najbolji način da se to proveri pre uvođenja.
Da li RAG sprečava halucinacije?
Smanjuje ih, jer model odgovara na osnovu priloženih pasusa, ali ih ne isključuje. Zato odgovori treba da navode izvor koji se može proveriti.
