Uvidi
RAG ili fine-tuning: šta firmama treba
RAG, fine-tuning, dugi kontekst sa prompt cachingom ili strukturirani izlazi? Razumljiv vodič za izbor pravog pristupa, uz kontrolnu listu za odlučivanje.
Inženjerski tim sigmacode.io9 min čitanja
Na ovoj stranici (8)
Gotovo svaki AI projekat o kojem razgovaramo s klijentima počinje istim pitanjem: „Trebamo li dodatno istrenirati (fine-tuning) model na našim podacima?" Ponekad je odgovor da. Češće je stvarna potreba nešto drugo: asistent koji poznaje vaše aktuelne dokumente, navodi izvore i može se ažurirati u utorak poslijepodne bez ikakvog treniranja. Ovaj članak jednostavnim jezikom objašnjava glavne opcije, kada koja odgovara i kako donijeti odluku bez trošenja mjeseci 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 rješavaju različite probleme i mogu se kombinovati.
Generisanje potpomognuto pretragom (RAG)#
RAG ne mijenja model. Umjesto toga, kada stigne pitanje, sistem prvo pretražuje vaš vlastiti sadržaj, na primjer priručnike, ugovore, tikete ili katalog proizvoda, i modelu uz pitanje predaje najrelevantnije odlomke. Model zatim odgovara na osnovu tih odlomaka.
Tri su pojma ključna:
- Pretraga (retrieval): pronalaženje pravih odlomaka. Obično je to kombinacija semantičke pretrage preko embeddinga i klasične pretrage po ključnim riječima, često uz dodatni korak ponovnog rangiranja.
- Utemeljenje (grounding): uputa 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 ga čovjek mogao provjeriti.
RAG dolazi do izražaja kada se znanje često mijenja, kada je korpus velik i kada ljudi trebaju provjeravati odgovore.
Fine-tuning#
Fine-tuning nastavlja trenirati model na vašim vlastitim primjerima, tako da mu se promijeni ponašanje. Dobar je za učenje kako odgovarati: dosljedan ton, strogi format izlaza, klasifikacijska šema specifična za domenu 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 s izvorom i mogu se pomiješati ili pogrešno zapamtiti.
Fine-tuning također omogućuje prebacivanje uskog zadatka na manji, jeftiniji i brži model, što pri velikom volumenu može mnogo značiti.
Dugi kontekst sa keširanjem upita (prompt caching)#
Savremeni modeli kompanija Anthropic i OpenAI te nekoliko porodica modela otvorenog koda prihvataju vrlo duge ulaze. Ako je vaša baza znanja umjerene veličine, na primjer priručnik za proizvod, skup pravila ili zbirka čestih pitanja, često je možete u cijelosti staviti direktno u upit. Bez indeksa, bez pipelinea za pretragu, bez odluka o dijeljenju na dijelove.
Očigledan je prigovor trošak i latencija: slanje istog velikog dokumenta uz svaki zahtjev je rasipno. Tu pomaže prompt caching. Pružatelji usluga mogu keširati stabilan početni dio upita, pa ponovljeni zahtjevi koriste već obrađeni sadržaj te se efikasnije naplaćuju i poslužuju. Za stabilan, ograničen skup znanja dugi kontekst sa keširanjem često je najjednostavnije rješenje koje funkcionira.
Strukturirani izlazi#
Mnogi „AI" projekti zapravo su projekti ekstrakcije: pročitati račun, životopis, ugovor ili e-mail i dobiti uredna polja. Ključna je mogućnost ovdje strukturirani izlaz (structured outputs), kod kojeg je model ograničen na vraćanje podataka koji odgovaraju šemi koju vi definišete, na primjer JSON s određenim poljima i tipovima. Tu uopće nije riječ o znanju, nego 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.
- Svježe ili promjenjivo znanje te odgovori koje ljudi moraju provjeriti: koristite RAG ili dugi kontekst ako je materijal dovoljno malen. Oba pristupa omogućuju ažuriranje znanja ažuriranjem dokumenata i oba podržavaju citate.
- Stabilno, ograničeno znanje koje stane u kontekstni prozor: počnite s dugim kontekstom i keširanjem upita. Pređite na RAG kada materijal preraste prozor ili kada vam je potrebna precizna kontrola pristupa po dokumentu.
- Dosljedan stil, ton ili format kroz mnogo izlaza: prvo pokušajte s jasnim uputama i nekoliko dobrih primjera u upitu. Ako to pri vašem volumenu nije dovoljno, fine-tuning je legitimna opcija.
- Uska klasifikacija ili usmjeravanje u velikom obimu: fine-tuning manjeg modela, ili jednostavno manji opći model s dobro osmišljenim upitom, često je najisplativiji put.
- Ekstrakcija polja iz dokumenata: strukturirani izlazi, po potrebi u kombinaciji s dokumentima kao ulazom i citatima, kako bi se svaka izdvojena vrijednost mogla provjeriti.
Ti se pristupi međusobno ne isključuju. Zreo sistem može koristiti RAG za znanje, strukturirane izlaze za format odgovora i mali fine-tunirani model za usmjeravanje dolaznih zahtjeva.
Usporedba#
| Kriterij | RAG | Dugi kontekst + keširanje | Fine-tuning | Strukturirani izlazi |
|---|---|---|---|---|
| Svjež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 promijenjenih dokumenata | Vrlo nizak: uredite izvor | Visok: novi skup podataka i treniranje | Vrlo nizak: uredite šemu |
| Sljedivost i citati | Jaka, ako je ugrađena | Jaka, uz citate iz dokumenata | Slaba: nema izvora na koji se može uputiti | Dobra u kombinaciji s citatima |
| Zahtjevi za podacima | Vaši postojeći dokumenti | Vaši postojeći dokumenti | Mnogo pažljivo odabranih, kvalitetnih primjera | Šema i ogledni dokumenti |
| Vrijeme do prve verzije | Od nekoliko dana do nekoliko sedmica | Od nekoliko sati do nekoliko dana | Sedmice, uključujući pripremu podataka | Od nekoliko sati do nekoliko dana |
| Glavni rizici | Loša pretraga, zastarjeli indeks, prompt injection kroz dokumente | Ograničenja konteksta, trošak bez keširanja | Zastarjele činjenice, pretjerana prilagodba, skrivena pristranost u podacima za treniranje | Preruta ili prelabava šema |
Praktična lista za odlučivanje#
Prije odabira arhitekture iskreno odgovorite na ova pitanja:
- Koji je tačno zadatak? Odgovaranje na pitanja, pisanje teksta, klasifikacija ili ekstrakcija? Zapišite pet stvarnih primjera ulaza i idealnog izlaza.
- Koliko se često mijenja osnovno znanje? Dnevne ili sedmične promjene snažno govore protiv fine-tuninga.
- Trebaju li korisnici provjeravati odgovore? U pravnom, finansijskom, zdravstvenom kontekstu, u usklađenosti s propisima ili korisničkoj podršci citati su obično neizostavni.
- Koliko je velika baza znanja? Ako lako stane u kontekstni prozor, prvo isprobajte dugi kontekst sa keširanjem.
- Ko smije vidjeti šta? Ako različiti korisnici imaju pristup različitim dokumentima, potrebna vam je pretraga s filtriranjem prema ovlastima, a ne jedan zajednički upit ili model istreniran na svemu.
- Kakav volumen i latenciju očekujete? Velik volumen na uskom zadatku upravo je područje u kojem se manji ili fine-tunirani modeli isplate.
- Imate li označene primjere? Fine-tuning bez velikog skupa dobrih primjera rijetko nadmašuje dobro napisan upit.
- Kako ćete mjeriti uspjeh? Ako na to ne možete odgovoriti, zastanite i prvo izradite skup za evaluaciju.
Ako većina odgovora upućuje na „promjenjivo znanje, potrebni citati, umjeren volumen", trebate RAG ili dugi kontekst. Ako upućuju na „stabilan zadatak, strogi format, vrlo velik volumen", razmotrite fine-tuning ili manji model.
Česte zamke#
Ovo su problemi na koje najčešće nailazimo kada pregledamo AI sisteme koji „gotovo rade".
- Loše dijeljenje na dijelove (chunking). Dijeljenje dokumenata na proizvoljne dijelove fiksne veličine presijeca tabele, odvaja naslove od sadržaja i gubi kontekst. Dijelite prema strukturi dokumenta i zadržite korisne metapodatke poput naslova, odjeljka i datuma.
- Nema evaluacija. Bez testnog skupa svaka je promjena nagađanje. Timovi mijenjaju upite, zamjenjuju modele i veličine dijelova, a da ne znaju je li se stanje poboljšalo ili pogoršalo.
- Zastarjeli indeksi. Izvorni dokumenti su ažurirani, indeks nije. Asistent samouvjereno citira prošlogodišnja pravila. Ponovno indeksiranje mora biti dio procesa upravljanja sadržajem, a ne ručni naknadni korak.
- Halucinacije bez citata. Ako sistem ne pokazuje odakle odgovor potiče, korisnici ne mogu razlikovati utemeljen odgovor od izmišljenog. Zahtijevajte 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 pružatelj usluga obrađuje, u kojoj regiji, prema kojem ugovoru o obradi podataka i koliko se dugo logovi čuvaju. Fine-tuning na ličnim podacima zahtijeva dodatan oprez jer ih je kasnije teško ukloniti.
- Prompt injection iz dokumenata. Dobavljeni sadržaj je nepouzdan ulaz. Dokument može sadržavati tekst koji pokušava davati upute modelu, na primjer da zanemari svoja pravila ili otkrije druge podatke. Dobavljeni tekst tretirajte kao podatke, ograničite šta model smije raditi s alatima i nikada ne dopustite da sadržaj dokumenta dodjeljuje ovlasti.
Prvo evaluirajte, zatim optimizirajte#
Najvrjedniji korak u svakom AI projektu ujedno je i najmanje glamurozan: izradite skup za evaluaciju prije nego što odaberete arhitekturu.
Dobar je početak jednostavno nekoliko desetaka do nekoliko stotina stvarnih pitanja ili ulaza, svaki s očekivanim odgovorom ili dokumentima koje treba citirati. Zatim mjerite:
- Kvalitetu pretrage: je li sistem pronašao prave odlomke?
- Kvalitetu odgovora: je li odgovor tačan, potpun i utemeljen na izvorima?
- Tačnost citata: podupiru li citirani odlomci doista tvrdnju?
- Ponašanje pri odbijanju: kaže li sistem „Ne znam" kada bi trebao?
- Usklađenost s formatom: odgovara li kod ekstrakcije svaki izlaz šemi?
Kada to imate, usporedbe postaju činjenične. Možete testirati dugi kontekst protiv RAG-a, jedan model protiv drugoga ili fine-tunirani model protiv modela vođenog upitom, i to na vlastitim podacima umjesto na generičkim mjerilima. Često ćete otkriti da je najjeftinije rješenje bolja pretraga ili jasniji upit, a ne veći model ili novo treniranje.
Automatsko ocjenjivanje pomoću modela može ubrzati taj proces, ali ga, posebno na početku, povremeno provjerite ljudskim pregledom.
Kako naše vlastite demonstracije prikazuju ove obrasce#
Nastojimo primjenjivati ono što preporučujemo, a dvije demonstracije na ovoj stranici prikazuju te obrasce u praksi.
sigmacode Assistant odgovara na pitanja o našim uslugama i načinu rada. Njegova je baza znanja mala i namjerno zamrznuta, pa umjesto pipelinea za pretragu koristi dugi kontekst sa keširanjem upita: cijela baza znanja nalazi se u keširanom početnom dijelu upita, a model ima uputu 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 dolazi s citatima koji upućuju na odlomke na kojima se zasniva. To je temeljno obećanje utemeljene umjetne inteligencije: svaka se tvrdnja može provjeriti u svom izvoru.
Nijedna od tih demonstracija nije zahtijevala 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 opsežno, često se mijenja, zahtijeva kontrolu pristupa ili se mora citirati.
- Koristite dugi kontekst sa keširanjem upita kada je znanje stabilno i stane u kontekstni prozor.
- Koristite fine-tuning ili manje modele za dosljedno ponašanje ili uske zadatke velikog volumena, a ne za činjenice.
- Koristite strukturirane izlaze za ekstrakciju i svaki izlaz koji sistem mora mašinski obraditi.
- Prvo evaluirajte, a zatim optimizirajte ono na što vas upućuju rezultati.
Ako razmatrate ove opcije za stvaran projekat, naš tim za AI i automatizaciju, koji vodi tech lead s više od 20 godina iskustva, može vam pomoći definisati opseg, izraditi skup za evaluaciju i isporučiti prvu verziju koju zaista možete mjeriti. Javite nam se i recite nam šta želite riješiti.