← 返回列表

AI serija pitanja za intervju 11: Kako optimizirati RAG?

Optimizacija RAG-a nije prilagođavanje jedne komponente, već proces optimizacije cijelog lanca. U nastavku dajem sustavne strategije optimizacije iz četiri dimenzije: strana indeksiranja podataka, strana pretraživanja, strana generiranja i strana evaluacije, uz praktična iskustva koja možete spomenuti na intervjuu.


1. Optimizacija na strani indeksiranja podataka (poboljšanje kvalitete "baze znanja")

Ovo je najčešće zanemareno, ali najbrže djelotvorno područje.

Točka optimizacije Problem Konkretan pristup Mjera učinka
Parsiranje dokumenata Tablice, dijagrami toka u PDF-u su ignorirani, ili tekst je gibberish, redoslijed je poremećen. Koristite bolju biblioteku za parsiranje (npr. unstructured, način očuvanja izgleda pypdf); za tablice koristite pandas za ekstrakciju i pretvorite u Markdown. Odziv +5-15%
Veličina fragmenta teksta Chunk premalen gubi kontekst (npr. "on je ove godine povećao prihod" gdje se "on" izgubi); chunk prevelik dovodi do puno šuma u pretraživanju. Eksperimentirajte s različitim veličinama chunkova (256/512/768 tokena), preklapanje postavite na 10-20%; za duge dokumente režite prema semantičkim granicama (odlomci/naslovi) umjesto fiksne duljine. Stopa pogađanja / vjernost
Dodavanje metapodataka Pronađen je relevantni odlomak, ali se ne može pratiti izvor ili vrijeme, ili je potrebno filtriranje po domeni. Dodajte metapodatke svakom chunku: source (naziv datoteke/URL), timestamp, page_num, doc_type. Prilikom pretraživanja koristite filtere (npr. doc_type == 'legal'). Preciznost filtriranja
Odabir modela ugrađivanja Opći embedding modeli slabo rade u vertikalnim domenama (medicina, kod, pravo). Koristite domenski fino podešene modele (BGE-large-zh, GTE-Qwen2-7B-instruct); ili fino podesite vlastiti embedding model (koristeći triplet loss). MRR@10 pretraživanja +10-20%

2. Optimizacija na strani pretraživanja (neka 'listanje' bude preciznije)

Pretraživanje određuje kvalitetu "referentnih materijala" koje dajemo LLM-u.

Točka optimizacije Problem Konkretan pristup Učinak
Hibridno pretraživanje Vektorsko pretraživanje ne može točno spojiti termine (npr. model proizvoda ABC-123), pretraživanje ključnih riječi ne razumije sinonime. Istovremeno koristite vektorsko pretraživanje (semantičko) i BM25 (ključne riječi), kombinirajte s ponderima (npr. 0.7vektor + 0.3BM25) ili rerank. Odziv +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) za ponovno ocjenjivanje kandidata (npr. prvih 20) i uzmite top-K. Značajno poboljšanje stope pogađanja (posebno top-1)
Prepisivanje upita Korisničko pitanje je nejasno ili se u višestrukom dijalogu gube reference ("A kolika je njegova cijena?"). Koristite LLM da prepiše originalno pitanje u oblik prikladniji za pretraživanje (npr. "Kolika je cijena iPhone 15?"); ili dopunite poviješću dijaloga. Odziv +5-15%
HyDE Korisničko pitanje je prekratko ili apstraktno (npr. "Objasni fotosintezu"), izravno pretraživanje je loše. Prvo neka LLM generira hipotetički odgovor, a zatim taj odgovor koristite za pretraživanje dokumenata. Prikladno za otvorene domene, ali ne za činjenična precizna pitanja
Prilagođavanje Top-K Premali K može propustiti ključne informacije; preveliki K povećava potrošnju tokena i šum. Eksperimentirajte s K=3/5/10, promatrajte balans između odziva i vjernosti odgovora. Trade-off između učinkovitosti i efekta

3. Optimizacija na strani generiranja (neka LLM dobro iskoristi referentne materijale)

Bez obzira koliko je pretraživanje točno, ako su promptni inženjering ili model loši, neće pomoći.

Točka optimizacije Problem Konkretan pristup Učinak
Promptni inženjering LLM ignorira sadržaj pretraživanja ili izmišlja. Jasna instrukcija: "Odgovori na pitanje samo na temelju sljedećih referentnih materijala. Ako materijali nisu dovoljni ili nisu relevantni, odgovori 'Nema dovoljno informacija'." Dodajte few-shot primjere koji pokazuju kako citirati izvor. Vjernost +20-40%
Kompresija konteksta Pronađeni sadržaj je predug (prekoračuje kontekstni prozor modela) ili je većinom šum. Koristite LLMLingua ili selektivni kontekst za kompresiju, zadržite najrelevantnije rečenice prije nego ih pošaljete LLM-u. Smanjenje rizika gubitka informacija
Nadogradnja LLM modela Mali model (7B) ne može izvršiti složeno zaključivanje ili ne pamti dugačak kontekst. Zamijenite jačim modelom (GPT-4o, Claude 3.5 Sonnet, Qwen2.5-72B). Točnost zaključivanja značajno povećana
Strujanje i citiranje Korisnik ne može provjeriti vjerodostojnost odgovora. Neka LLM tijekom generiranja ispisuje [citation:1], koji odgovara broju pronađenog dokumenta. Backend prilaže originalnu poveznicu. Povjerenje korisnika + mogućnost debugiranja
Kalibracija odbijanja odgovora Model izmišlja kada ne bi trebao, ili kaže "ne znam" kada bi trebao odgovoriti. Postavite prag sličnosti: ako je kosinusna sličnost top-1 chunka s pitanjem manja od 0.7, upozorite LLM "materijali nisu relevantni". Smanjenje stope halucinacija

4. Strana evaluacije i iteracije (znati kamo usmjeriti optimizaciju)

Bez mjerenja nema optimizacije.

Točka optimizacije Pristup Metrika
Izrada evaluacijskog skupa Pripremite 100-300 stvarnih korisničkih pitanja + standardnih odgovora + točnih ID-ova pronađenih dokumenata. Pokrijte različite težine i namjere.
Automatska evaluacija Koristite RAGAS (Faithfulness, Answer Relevance, Context Recall) ili TruLens. Tri ključne metrike: vjernost, relevantnost odgovora, kontekstni odziv.
Ručna evaluacija Tjedno testirajte 20 loših slučajeva, analizirajte tip greške (neuspjeh pretraživanja / greška generiranja / nedostatak baze znanja). Prioriteti za poboljšanje.
A/B testiranje U produkciji testirajte različite strategije pretraživanja (npr. BM25 vs hibridno pretraživanje) u bucketima. Online metrike: zadovoljstvo korisnika, stopa bez odgovora.

5. Praktična iskustva koja možete spomenuti na intervjuu (bonus bodovi)

"U RAG projektu kojeg sam vodio, početna stopa pogađanja je bila samo 67%. Napravio sam tri stvari:
1. Promijenio sam fiksnu podjelu na 1024 u dinamičku semantičku podjelu (prema naslovima i odlomcima), 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. Optimizirao sam prompt i obvezao zahtjev za [Nisu pronađene relevantne informacije], stopa halucinacija je pala s 22% na manje od 5%.

Osim toga, uspostavili smo kontinuirani evaluacijski pipeline, prije svake promjene pokrenuli smo RAGAS ocjenu na 200 pitanja kako bismo osigurali da nema degradacije."


Završni sažetak: kompletna mapa puta za optimizaciju RAG-a

Sloj podataka → Čišćenje dokumenata, optimizacija podjele, pojačanje metapodataka, domenski embedding
Sloj pretraživanja → Hibridno pretraživanje, rerank, prepisivanje upita, HyDE, prilagođavanje Top-K
Sloj generiranja → Pojačanje prompta, instrukcije, kompresija, citiranje, prag odbijanja
Sloj evaluacije → Evaluacijski skup, RAGAS, ručna analiza, A/B eksperiment

评论

暂无已展示的评论。

发表评论(匿名)