← 返回列表

AI serija pitanja 11: Kako optimizovati RAG?

Optimizacija RAG-a nije podešavanje jedne komponente, već celoviti proces optimizacije lanca. U nastavku dajem sistematske strategije optimizacije iz četiri dimenzije: strane indeksiranja podataka, strane pronalaženja, strane generisanja i strane evaluacije, uz praktična iskustva koja možete pomenuti na intervjuu.


1. Optimizacija strane indeksiranja podataka (poboljšanje kvaliteta „baze znanja")

Ovo je najčešće zanemareno mesto koje donosi najbrže rezultate.

Tačka optimizacije Problem Konkretna praksa Metrika uticaja
Parsiranje dokumenata Tabele, dijagrami u PDF-u su ignorisani, ili je tekst nečitljiv, redosled pogrešan. Koristite bolje biblioteke za parsiranje (npr. unstructured, pypdf sa režimom očuvanja rasporeda); za tabele koristite pandas za ekstrakciju i pretvaranje u Markdown. Stopa pronalaženja +5–15%
Veličina fragmenta teksta Premali chunk gubi kontekst (npr. „on" u „on je ostvario rast prihoda ove godine" gubi referencu); preveliki chunk unosi šum. Eksperimentišite sa različitim veličinama chunka (256/512/768 tokena), preklapanje (overlap) postavite na 10–20%; za duge dokumente, delite po semantičkim granicama (pasus/naslov) umesto fiksne dužine. Stopa pogađanja / vernost
Dodavanje metapodataka Pronađen relevantan pasus, ali ne može da se prati do izvora ili vremena, ili je potrebno filtriranje po domenu. Dodajte metapodatke za svaki chunk: source (naziv fajla/URL), timestamp, page_num, doc_type. Koristite filtere prilikom pronalaženja (npr. doc_type == 'legal'). Preciznost filtriranja
Izbor modela embeddinga Generički embedding slabo radi u vertikalnim domenima (medicina, kod, pravo). Koristite fino podešene modele za domen (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); ili fino podesite sopstveni embedding model (koristeći triplet loss). MRR@10 +10–20% pronalaženja

2. Optimizacija strane pronalaženja (preciznije „listanje")

Pronalaženje određuje kvalitet „referentnog materijala" koji se daje LLM-u.

Tačka optimizacije Problem Konkretna praksa Uticaj
Hibridno pretraživanje Vektorsko pretraživanje ne može da obradi precizne termine (npr. model proizvoda ABC-123), ključno pretraživanje ne razume sinonime. Istovremeno koristite vektorsko pretraživanje (semantičko) i BM25 (ključne reči), kombinujte ponderisanjem (npr. 0.7vektor + 0.3BM25) ili rerankiranjem. Stopa pronalaženja +10–25%
Ponovno rangiranje (Rerank) Prvih nekoliko rezultata vektorskog pretraživanja nisu nužno najrelevantniji, deseti je možda najbolji. Koristite cross‑encoder model (npr. BGE‑reranker-v2, Cohere Rerank) da ponovo ocenite kandidate (npr. prvih 20) i uzmete top‑K. Značajno poboljšanje stope pogađanja (posebno top‑1)
Prepravljanje upita Korisničko pitanje je nejasno ili sa referencama iz više rundi („Kolika je njegova cena?"). Koristite LLM da prepravite originalno pitanje u oblik pogodniji za pretragu (npr. „Kolika je cena iPhone 15?"); ili dopunite istorijom dijaloga. Stopa pronalaženja +5–15%
HyDE Korisničko pitanje je previše kratko ili apstraktno (npr. „Objasni fotosintezu"), direktna pretraga je loša. Prvo neka LLM generiše hipotetički odgovor, pa tim odgovorom pretražujte dokumente. Pogodno za otvorene domene, ali ne i za precizna faktička pitanja
Podešavanje broja pronađenih Top‑K Premalo K može da propusti ključne informacije; previše K povećava potrošnju tokena i šum. Eksperimentišite sa K=3/5/10, posmatrajte ravnotežu između stope pronalaženja i vernosti odgovora. Trade‑off između efikasnosti i efekta

3. Optimizacija strane generisanja (kako da LLM bolje koristi referentni materijal)

Bez obzira na preciznost pronalaženja, loš prompt ili model neće dati dobre rezultate.

Tačka optimizacije Problem Konkretna praksa Uticaj
Inženjering prompta LLM ignoriše pronađeni sadržaj ili izmišlja. Jasna instrukcija: „Odgovarajte samo na osnovu datog referentnog materijala. Ako materijal nije dovoljan ili nije relevantan, odgovorite sa 'nema dovoljno informacija'." Dodajte few‑shot primere koji pokazuju kako citirati izvore. Vernost +20–40%
Kompresija konteksta Pronađeni sadržaj je predug (prevazilazi kontekstni prozor modela) ili sadrži mnogo šuma. Koristite LLMLingua ili selektivni kontekst za kompresiju, zadržavajući najrelevantnije rečenice pre slanja LLM-u. Smanjenje rizika od gubitka informacija
Nadogradnja LLM modela Mali model (7B) ne može da izvede složeno zaključivanje ili ne pamti dugačak kontekst. Zamenite jačim modelom (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). Značajno poboljšanje tačnosti zaključivanja
Strimovanje i citiranje Korisnik ne može da proveri verodostojnost odgovora. Tokom generisanja neka LLM ispiše [citation:1], koji odgovara broju pronađenog dokumenta. Na backend-u priložite link ka originalu. Poverenje korisnika + mogućnost debugovanja
Kalibracija odbijanja odgovora Model izmišlja kada ne treba da odgovori, ili kaže da ne zna kada bi trebalo da odgovori. Postavite prag sličnosti: ako je kosinusna sličnost između najboljeg chunka i pitanja niža od 0.7, naložite LLM-u „materijal nije relevantan". Smanjenje stope halucinacija

4. Strana evaluacije i iteracije (znati gde podešavati)

Bez merenja nema optimizacije.

Tačka optimizacije Praksa Metrika
Formiranje evaluacionog skupa Pripremite 100–300 stvarnih korisničkih pitanja + standardne odgovore + tačne ID-e pronađenih dokumenata. Pokrijte različite nivoe težine i namere.
Automatska evaluacija Koristite RAGAS (Faithfulness, Answer Relevance, Context Recall) ili TruLens. Tri ključne metrike: vernost, relevantnost odgovora, stopa pronalaženja konteksta.
Ručna evaluacija Nedeljno testirajte 20 loših slučajeva, analizirajte tip greške (neuspešno pronalaženje / greška generisanja / nedostatak u bazi znanja). Prioriteti za poboljšanje.
A/B testiranje U produkciji podelite korisnike u grupe i testirajte različite strategije pronalaženja (npr. BM25 vs hibridno pretraživanje). Online metrike: zadovoljstvo korisnika, stopa bez odgovora.

5. „Praktična iskustva" koja možete pomenuti na intervjuu (plus poeni)

„U RAG projektu kojim sam rukovodio, početna stopa pogađanja je bila samo 67%. Uradio sam tri stvari:
1. Promenio sam fiksni chunk od 1024 na dinamičku semantičku podelu (po naslovu + pasusu), stopa pogađanja je porasla na 74%;
2. Dodao sam hibridno pretraživanje (vektor + BM25) i mali rerank model, stopa pogađanja je porasla na 83%;
3. Optimizovao sam prompt i obavezno zahtevao [nije pronađena relevantna informacija], stopa halucinacija je pala sa 22% na ispod 5%.

Pored toga, uspostavili smo kontinuirani evaluacioni pipeline, pre svake promene proveravajući RAGAS skor na 200 pitanja kako bismo osigurali da nema degradacije."


Konačni sažetak: Potpuna mapa puta za optimizaciju RAG-a

Sloj podataka → Čišćenje dokumenata, optimizacija fragmentacije, poboljšanje metapodataka, domen-specifični embedding
Sloj pronalaženja → Hibridno pretraživanje, rerankiranje, prepravljanje upita, HyDE, podešavanje Top-K
Sloj generisanja → Pojačavanje prompta, instrukcije, kompresija, citiranje, prag odbijanja
Sloj evaluacije → Evaluacioni skup, RAGAS, ručna analiza, A/B eksperimenti

评论

暂无已展示的评论。

发表评论(匿名)