Članci
RAG ili fine-tuning: šta kompanijama zaista treba
RAG, fine-tuning, dugi kontekst sa keširanjem ili strukturirani izlazi? Jasan vodič za izbor pravog pristupa, uz listu za odlučivanje.
Inženjerski tim sigmacode.io9 min čitanja
Na ovoj stranici (8)
Gotovo svaki AI projekat o kojem razgovaramo sa klijentima počinje istim pitanjem: „Da li treba da dodatno istreniramo (fine-tuning) model na našim podacima?” Ponekad je odgovor da. Češće je stvarna potreba nešto drugo: asistent koji poznaje vaša aktuelna dokumenta, navodi izvore i može da se ažurira u utorak po podne bez ikakvog treniranja. Ovaj članak jednostavnim jezikom objašnjava glavne opcije, kada koja odgovara i kako da donesete odluku bez trošenja meseci na pogrešan pristup.
Četiri alata u kutiji#
Kada ljudi kažu „naučimo model o našem poslovanju”, obično misle na jednu od četiri različite tehnike. One rešavaju različite probleme i mogu da se kombinuju.
Generisanje potpomognuto pretragom (RAG)#
RAG ne menja model. Umesto toga, kada stigne pitanje, sistem najpre pretražuje vaš sopstveni sadržaj, na primer priručnike, ugovore, tikete ili katalog proizvoda, i modelu uz pitanje prosleđuje najrelevantnije odlomke. Model zatim odgovara na osnovu tih odlomaka.
Tri pojma su ključna:
- Pretraga (retrieval): pronalaženje pravih odlomaka. Obično je to kombinacija semantičke pretrage preko embedinga i klasične pretrage po ključnim rečima, često uz dodatni korak ponovnog rangiranja.
- Utemeljenje (grounding): uputstvo modelu da odgovara iz dostavljenog materijala i da to jasno kaže kada materijal ne sadrži odgovor.
- Citati: upućivanje na tačan dokument, stranicu ili odlomak iz kojeg odgovor potiče, kako bi čovek mogao da ga proveri.
RAG dolazi do izražaja kada se znanje često menja, kada je korpus veliki i kada ljudi treba da proveravaju odgovore.
Fine-tuning#
Fine-tuning nastavlja da trenira model na vašim sopstvenim primerima, tako da mu se promeni ponašanje. Dobar je za učenje kako da se odgovara: dosledan ton, strog format izlaza, klasifikaciona šema specifična za domen ili uzak zadatak koji se izvršava hiljadama puta dnevno. Loš je način da se nauči šta je trenutno istina. Činjenice naučene fine-tuningom teško je ažurirati, teško ih je povezati sa izvorom i mogu da se pomešaju ili pogrešno zapamte.
Fine-tuning takođe omogućava da se uzak zadatak prebaci na manji, jeftiniji i brži model, što pri velikom obimu može mnogo da znači.
Dugi kontekst sa keširanjem upita (prompt caching)#
Savremeni modeli kompanija Anthropic i OpenAI, kao i nekoliko porodica modela otvorenog koda, prihvataju veoma duge ulaze. Ako je vaša baza znanja umerene veličine, na primer priručnik za proizvod, skup pravila ili zbirka čestih pitanja, često možete da je u celosti stavite direktno u upit. Bez indeksa, bez sistema za pretragu, bez odluka o deljenju na delove.
Očigledna zamerka su trošak i latencija: slanje istog velikog dokumenta uz svaki zahtev je rasipno. Tu pomaže prompt caching. Provajderi mogu da keširaju stabilan početni deo upita, pa ponovljeni zahtevi koriste već obrađen sadržaj i efikasnije se naplaćuju i opslužuju. Za stabilan, ograničen skup znanja dugi kontekst sa keširanjem često je najjednostavnije rešenje koje funkcioniše.
Strukturirani izlazi#
Mnogi „AI” projekti su zapravo projekti ekstrakcije: pročitati račun, CV, ugovor ili imejl i dobiti uredna polja. Ključna mogućnost ovde je strukturirani izlaz (structured outputs), kod kojeg je model ograničen na vraćanje podataka koji odgovaraju šemi koju vi definišete, na primer JSON sa određenim poljima i tipovima. Tu uopšte nije reč o znanju, već o pouzdanosti formata, a u zadacima ekstrakcije to obično uklanja potrebu za fine-tuningom.
Kada koji pristup odgovara#
Koristan način razmišljanja: odvojite znanje od ponašanja.
- Sveže ili promenljivo znanje i odgovori koje ljudi moraju da provere: koristite RAG ili dugi kontekst ako je materijal dovoljno mali. Oba pristupa omogućavaju ažuriranje znanja ažuriranjem dokumenata i oba podržavaju citate.
- Stabilno, ograničeno znanje koje staje u kontekstni prozor: počnite sa dugim kontekstom i keširanjem upita. Pređite na RAG kada materijal preraste prozor ili kada vam je potrebna precizna kontrola pristupa po dokumentu.
- Dosledan stil, ton ili format kroz mnogo izlaza: najpre pokušajte sa jasnim uputstvima i nekoliko dobrih primera u upitu. Ako to pri vašem obimu nije dovoljno, fine-tuning je legitimna opcija.
- Uska klasifikacija ili rutiranje u velikom obimu: fine-tuning manjeg modela, ili jednostavno manji opšti model sa dobro osmišljenim upitom, često je najisplativiji put.
- Ekstrakcija polja iz dokumenata: strukturirani izlazi, po potrebi u kombinaciji sa dokumentima kao ulazom i citatima, kako bi svaka izdvojena vrednost mogla da se proveri.
Ovi pristupi se međusobno ne isključuju. Zreo sistem može da koristi RAG za znanje, strukturirane izlaze za format odgovora i mali fine-tunovan model za rutiranje dolaznih zahteva.
Poređenje#
| Kriterijum | RAG | Dugi kontekst + keširanje | Fine-tuning | Strukturirani izlazi |
|---|---|---|---|---|
| Svežina znanja | Visoka: ažurirajte indeks | Visoka: ažurirajte dokumente | Niska: potrebno ponovno treniranje | Nije tehnika za znanje |
| Trošak ažuriranja | Nizak: ponovno indeksiranje izmenjenih dokumenata | Veoma nizak: izmenite izvor | Visok: novi skup podataka i treniranje | Veoma nizak: izmenite šemu |
| Sledljivost i citati | Jaka, ako je ugrađena | Jaka, uz citate iz dokumenata | Slaba: nema izvora na koji se može uputiti | Dobra u kombinaciji sa citatima |
| Zahtevi za podacima | Vaši postojeći dokumenti | Vaši postojeći dokumenti | Mnogo pažljivo odabranih, kvalitetnih primera | Šema i ogledni dokumenti |
| Vreme do prve verzije | Od nekoliko dana do nekoliko nedelja | Od nekoliko sati do nekoliko dana | Nedelje, uključujući pripremu podataka | Od nekoliko sati do nekoliko dana |
| Glavni rizici | Loša pretraga, zastareo indeks, prompt injection kroz dokumente | Ograničenja konteksta, trošak bez keširanja | Zastarele činjenice, preterano prilagođavanje, skrivena pristrasnost u podacima za treniranje | Previše kruta ili previše labava šema |
Praktična lista za odlučivanje#
Pre izbora arhitekture iskreno odgovorite na ova pitanja:
- Koji je tačno zadatak? Odgovaranje na pitanja, pisanje teksta, klasifikacija ili ekstrakcija? Zapišite pet stvarnih primera ulaza i idealnog izlaza.
- Koliko često se menja osnovno znanje? Dnevne ili nedeljne promene snažno govore protiv fine-tuninga.
- Da li korisnici treba da proveravaju odgovore? U pravnom, finansijskom, zdravstvenom kontekstu, u usklađenosti sa propisima ili korisničkoj podršci citati su obično neizostavni.
- Koliko je velika baza znanja? Ako lako staje u kontekstni prozor, najpre isprobajte dugi kontekst sa keširanjem.
- Ko sme da vidi šta? Ako različiti korisnici imaju pristup različitim dokumentima, potrebna vam je pretraga sa filtriranjem prema ovlašćenjima, a ne jedan zajednički upit ili model istreniran na svemu.
- Kakav obim i latenciju očekujete? Veliki obim na uskom zadatku upravo je oblast u kojoj se manji ili fine-tunovani modeli isplate.
- Da li imate označene primere? Fine-tuning bez velikog skupa dobrih primera retko nadmašuje dobro napisan upit.
- Kako ćete meriti uspeh? Ako na to ne možete da odgovorite, zastanite i najpre napravite skup za evaluaciju.
Ako većina odgovora upućuje na „promenljivo znanje, potrebni citati, umeren obim”, potreban vam je RAG ili dugi kontekst. Ako upućuju na „stabilan zadatak, strog format, veoma veliki obim”, razmotrite fine-tuning ili manji model.
Česte zamke#
Ovo su problemi na koje najčešće nailazimo kada pregledamo AI sisteme koji „skoro rade”.
- Loše deljenje na delove (chunking). Deljenje dokumenata na proizvoljne delove fiksne veličine preseca tabele, odvaja naslove od sadržaja i gubi kontekst. Delite prema strukturi dokumenta i zadržite korisne metapodatke poput naslova, odeljka i datuma.
- Nema evaluacija. Bez test skupa svaka promena je nagađanje. Timovi menjaju upite, zamenjuju modele i veličine delova, a da ne znaju da li se stanje poboljšalo ili pogoršalo.
- Zastareli indeksi. Izvorni dokumenti su ažurirani, indeks nije. Asistent samouvereno citira prošlogodišnja pravila. Ponovno indeksiranje mora da bude deo procesa upravljanja sadržajem, a ne ručni naknadni korak.
- Halucinacije bez citata. Ako sistem ne pokazuje odakle odgovor potiče, korisnici ne mogu da razlikuju utemeljen odgovor od izmišljenog. Zahtevajte citate i naučite model da kaže „Ne znam” kada izvori ćute.
- Privatnost i GDPR. Lični podaci u dokumentima, upitima i logovima i dalje su lični podaci. Znajte koji ih provajder obrađuje, u kom regionu, prema kom ugovoru o obradi podataka i koliko dugo se logovi čuvaju. Fine-tuning na ličnim podacima zahteva dodatan oprez jer ih je kasnije teško ukloniti.
- Prompt injection iz dokumenata. Preuzeti sadržaj je nepouzdan ulaz. Dokument može da sadrži tekst koji pokušava da daje uputstva modelu, na primer da zanemari svoja pravila ili otkrije druge podatke. Preuzeti tekst tretirajte kao podatke, ograničite šta model sme da radi sa alatima i nikada ne dozvolite da sadržaj dokumenta dodeljuje ovlašćenja.
Najpre evaluirajte, zatim optimizujte#
Najvredniji korak u svakom AI projektu ujedno je i najmanje glamurozan: napravite skup za evaluaciju pre nego što izaberete arhitekturu.
Dobar početak je jednostavno nekoliko desetina do nekoliko stotina stvarnih pitanja ili ulaza, svaki sa očekivanim odgovorom ili dokumentima koje treba citirati. Zatim merite:
- Kvalitet pretrage: da li je sistem pronašao prave odlomke?
- Kvalitet odgovora: da li je odgovor tačan, potpun i utemeljen na izvorima?
- Tačnost citata: da li citirani odlomci zaista podržavaju tvrdnju?
- Ponašanje pri odbijanju: da li sistem kaže „Ne znam” kada bi trebalo?
- Usklađenost sa formatom: da li kod ekstrakcije svaki izlaz odgovara šemi?
Kada to imate, poređenja postaju činjenična. Možete da testirate dugi kontekst naspram RAG-a, jedan model naspram drugog ili fine-tunovan model naspram modela vođenog upitom, i to na sopstvenim podacima umesto na generičkim benčmarkovima. Često ćete otkriti da je najjeftinije rešenje bolja pretraga ili jasniji upit, a ne veći model ili novo treniranje.
Automatsko ocenjivanje pomoću modela može da ubrza taj proces, ali ga, naročito na početku, povremeno proverite ljudskim pregledom.
Kako naše sopstvene demonstracije prikazuju ove obrasce#
Trudimo se da primenjujemo ono što preporučujemo, a dve demonstracije na ovom sajtu prikazuju ove obrasce u praksi.
sigmacode Assistant odgovara na pitanja o našim uslugama i načinu rada. Njegova baza znanja je mala i namerno zamrznuta, pa umesto sistema za pretragu koristi dugi kontekst sa keširanjem upita: cela baza znanja nalazi se u keširanom početnom delu upita, a model ima uputstvo da odgovara isključivo iz nje. Za ograničen skup znanja to je jednostavnije izgraditi i lakše održavati tačnim od vektorskog indeksa.
Demonstracija Document Q&A prikazuje drugu stranu. Priložite dokument, postavite pitanja, a svaki odgovor stiže sa citatima koji upućuju na odlomke na kojima se zasniva. To je osnovno obećanje utemeljene veštačke inteligencije: svaka tvrdnja može da se proveri u svom izvoru.
Nijedna od ovih demonstracija nije zahtevala fine-tuning. To je tipično. Za većinu poslovnih problema sa znanjem utemeljenje i dobra evaluacija važniji su od prilagođenog treniranja.
Ukratko#
- Koristite RAG kada je znanje obimno, često se menja, zahteva kontrolu pristupa ili mora da se citira.
- Koristite dugi kontekst sa keširanjem upita kada je znanje stabilno i staje u kontekstni prozor.
- Koristite fine-tuning ili manje modele za dosledno ponašanje ili uske zadatke velikog obima, a ne za činjenice.
- Koristite strukturirane izlaze za ekstrakciju i svaki izlaz koji sistem mora mašinski da obradi.
- Najpre evaluirajte, a zatim optimizujte ono na šta vas upućuju rezultati.
Ako razmatrate ove opcije za stvaran projekat, naš tim za AI i automatizaciju, koji vodi tehnički lider sa više od 20 godina iskustva, može da vam pomogne da definišete obim, napravite skup za evaluaciju i isporučite prvu verziju koju zaista možete da merite. Javite nam se i recite nam šta želite da rešite.