← 返回列表

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

评论

暂无已展示的评论。

发表评论(匿名)