AI serija pitanja za intervju 11: Kako optimizirati RAG?
Optimizacija RAG-a nije prilagođavanje jedne faze, već proces optimizacije cijelog lanca. U nastavku dajem sistematske strategije optimizacije iz četiri dimenzije: strana indeksiranja podataka, strana pretraživanja, strana generiranja i strana evaluacije, uz praktična iskustva koja se mogu spomenuti na intervjuu.
1. Optimizacija strane indeksiranja podataka (poboljšanje kvaliteta "baze znanja")
Ovo je najčešće zanemarena oblast, ali donosi najbrže rezultate.
| Tačka optimizacije | Problem | Specifičan pristup | Mjera efekta |
|---|---|---|---|
| Parsiranje dokumenata | Tabele i dijagrami u PDF-u su ignorisani, ili je tekst nečitak, redoslijed pogrešan. | Koristite bolje biblioteke za parsiranje (npr. unstructured, pypdf u modu očuvanja rasporeda); za tabele koristite pandas za ekstrakciju i pretvaranje u Markdown. |
Stopa priziva +5~15% |
| Veličina segmentacije teksta | Premali chunk gubi kontekst (npr. "njegov ovogodišnji rast prihoda" gdje "njegov" gubi referencu); preveliki chunk unosi šum u pretraživanje. | Eksperimentišite s različitim veličinama chunkova (256/512/768 tokena), preklapanje postavite na 10~20%; za duge dokumente, segmentirajte po semantičkim granicama (paragraf/naslov) umjesto fiksne dužine. | Stopa pogađanja / vjernost |
| Dodavanje metapodataka | Pronađen je relevantan paragraf, ali se ne može pratiti izvor ili vrijeme, ili je potrebno filtriranje po domeni. | Dodajte metapodatke svakom chunku: source (ime fajla/URL), timestamp, page_num, doc_type. Koristite filtere pri pretraživanju (npr. doc_type == 'legal'). |
Preciznost filtriranja |
| Izbor modela za ugrađivanje | Generičko ugrađivanje slabo radi u vertikalnim domenama (medicina, kod, pravo). | Koristite fino podešene modele za domenu (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); ili fino podesite vlastiti model za ugrađivanje (koristeći triplet loss). | MRR@10 pretraživanja +10~20% |
2. Optimizacija strane pretraživanja (učiniti "listanje" preciznijim)
Pretraživanje određuje kvalitet "referentnog materijala" koji se daje LLM-u.
| Tačka optimizacije | Problem | Specifičan pristup | Efekat |
|---|---|---|---|
| Hibridno pretraživanje | Vektorsko pretraživanje ne može da obradi precizne termine (npr. model proizvoda ABC-123), dok pretraživanje ključnim riječima ne razumije sinonime. |
Istovremeno koristite vektorsko pretraživanje (semantičko) i BM25 (ključne riječi), sa ponderisanjem (npr. 0.7vektor + 0.3BM25) ili fuzijom putem rerankiranja. | Stopa priziva +10~25% |
| Ponovno rangiranje (Rerank) | Prvih nekoliko rezultata vektorskog pretraživanja nisu najrelevantniji; deseti je možda najbolji. | Koristite cross‑encoder model (npr. BGE‑reranker-v2, Cohere Rerank) da ponovo ocijenite kandidate (npr. prvih 20) i uzmete top‑K. |
Značajno povećanje stope pogađanja (posebno top‑1) |
| Prepisivanje upita | Korisnički upit je nejasan ili u višekružnom dijalogu referenca nije jasna ("Kolika je njegova cijena?"). | Koristite LLM da preformulišete originalni upit u oblik pogodniji za pretraživanje (npr. "Kolika je cijena iPhone 15?") ili dopunite istorijom dijaloga. | Stopa priziva +5~15% |
| HyDE | Korisnički upit je prekratak ili apstraktan (npr. "Objasni fotosintezu"), direktno pretraživanje slabo radi. | Prvo neka LLM generiše hipotetički odgovor, pa zatim koristite taj odgovor za pretraživanje dokumenata. | Pogodno za otvorene domene, ali ne i za precizna činjenična pitanja |
| Podešavanje Top‑K | Premalo K može propustiti ključne informacije; previše K povećava potrošnju tokena i šum. | Eksperimentišite s K=3/5/10, posmatrajte balans između stope priziva i vjernosti odgovora. | Trade‑off između efikasnosti i efekta |
3. Optimizacija strane generiranja (naterati LLM da dobro koristi referentni materijal)
Čak i ako je pretraživanje precizno, loš prompt ili loš model neće dati dobre rezultate.
| Tačka optimizacije | Problem | Specifičan pristup | Efekat |
|---|---|---|---|
| Inženjering prompta | LLM ignoriše pronađeni sadržaj ili izmišlja. | Jasna instrukcija: "Odgovori samo na osnovu sljedećeg referentnog materijala. Ako materijal nije dovoljan ili nije relevantan, odgovori 'Nema dovoljno informacija'." Dodajte few‑shot primjere koji pokazuju kako citirati izvore. | Vjernost +20~40% |
| Kompresija konteksta | Pronađeni sadržaj je predugačak (prekoračuje kontekstni prozor modela) ili većinom šum. | Koristite LLMLingua ili selektivni kontekst za kompresiju, zadržite najrelevantnije rečenice prije nego ih date LLM-u. |
Smanjuje rizik od gubitka informacija |
| Nadogradnja LLM modela | Mali modeli (7B) ne mogu izvršiti složeno zaključivanje ili ne pamte dugi kontekst. | Koristite jače modele (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). | Značajno poboljšanje tačnosti zaključivanja |
| Strimovanje i citiranje | Korisnik ne može provjeriti vjerodostojnost odgovora. | Prilikom generiranja neka LLM ispiše [citation:1], koji odgovara broju pronađenog dokumenta. Na backendu priložite originalni link. |
Povjerenje korisnika + mogućnost debugovanja |
| Kalibracija odbijanja odgovora | Model izmišlja kada ne bi trebao, ili kaže da ne zna kada bi trebao. | Postavite prag sličnosti: ako je kosinusna sličnost top‑1 chunka s upitom ispod 0.7, upozorite LLM "materijal nije relevantan". | Smanjuje stopu halucinacija |
4. Strana evaluacije i iteracije (znati gdje usmjeriti optimizaciju)
Bez mjerenja nema optimizacije.
| Tačka optimizacije | Pristup | Mjera |
|---|---|---|
| Izrada evaluacionog skupa | Pripremite 100~300 stvarnih korisničkih pitanja + standardne odgovore + tačne ID-ove pronađenih dokumenata. | Pokrijte različite težine i namjere. |
| Automatska evaluacija | Koristite RAGAS (Faithfulness, Answer Relevance, Context Recall) ili TruLens. | Tri ključna indikatora: vjernost, relevantnost odgovora, stopa priziva konteksta. |
| Ručna evaluacija | Sedmično testirajte 20 loših slučajeva, analizirajte tip greške (neuspjeh pretraživanja / greška generiranja / nedostatak baze znanja). | Prioritetizacija poboljšanja. |
| A/B testiranje | U produkciji podijelite korisnike u grupe i testirajte različite strategije pretraživanja (npr. BM25 vs hibridno pretraživanje). | Online indikatori: zadovoljstvo korisnika, stopa bez odgovora. |
5. Praktična iskustva za intervju (dodatni bodovi)
"U RAG projektu kojim sam rukovodio, početna stopa pogađanja bila je samo 67%. Uradio sam tri stvari:
1. Segmentacija sa fiksne 1024 na dinamičku semantičku segmentaciju (prema naslovima + paragrafima), stopa pogađanja podignuta na 74%;
2. Dodao hibridno pretraživanje (vektorsko + BM25) i mali rerank model, stopa pogađanja porasla na 83%;
3. Optimizirao prompt i obavezao izlaz[Nema relevantnih informacija], stopa halucinacija smanjena sa 22% na ispod 5%.Osim toga, uspostavili smo kontinuirani evaluacioni pipeline; prije svake promjene pokrenuli smo RAGAS ocjenu na 200 pitanja kako bismo osigurali da nema regresije."
Konačni sažetak: Potpuna mapa puta za optimizaciju RAG-a
Sloj podataka → Čišćenje dokumenata, optimizacija segmentacije, poboljšanje metapodataka, domain embedding
Sloj pretraživanja → Hibridno pretraživanje, rerank, prepisivanje upita, HyDE, podešavanje Top-K
Sloj generiranja → Pojačanje prompta, instrukcije, kompresija, citiranje, prag odbijanja
Sloj evaluacije → Evaluacioni skup, RAGAS, ručna analiza, A/B eksperimenti
评论
暂无已展示的评论。
发表评论(匿名)