Dobici:
- Implementacija hibridnog pretraživanja koje kombinira top-k odabir i semantičko pretraživanje i pretraživanje po ključnim riječima
- Povećanje točnosti prve pretrage s ponovnim rangiranjem
- Učiniti teška pitanja lakšim za pretraživanje pomoću tehnika kao što su transformacija upita i HyDE
Lijepo si isjeckao dokumente i stavio ih u vektorsku bazu podataka. Sada pravi posao: dohvaćanje pravih dijelova kada korisnik postavi pitanje. To se zove pronalaženje i okosnica je RAG kvalitete. Zapamtite frazu "Kvaliteta preuzimanja = RAG kvaliteta"; Upravo je ova jedinica umjetnost poboljšanja te kvalitete. Pokrit ćemo praktične tehnike od top-k odabira do hibridnog pretraživanja, od ponovnog rangiranja do transformacije upita.
Top-k: Koliko komada ćemo donijeti?
Najosnovnija postavka: koliko komada (k) vratiti iz pretrage. Ako donesete manje (k=1) postoji veliki rizik da ćete propustiti pravi dio; Ako dodate previše (k=20), to će dodati buku modelu i trošak tokena će se povećati.
Razlikovati dva pojma. Podsjetimo: stopa kojom je ispravan komad među onima koji su vraćeni. Preciznost: brzina kojom je ono što je dohvaćeno relevantno. Povećanje k povećava pamćenje, ali smanjuje preciznost. Cilj je uravnotežiti to dvoje.
vrh-k
Utjecaj
pogodna situacija
1-3
Visoka preciznost, rizik od promašaja
Jednostavna pitanja s jednim odgovorom
4-8
ravnoteža; većina scenarija
Opći korporativni RAG
10-20 (prikaz, stručni).
Veći doziv, buka se povećava
S ponovnim rangiranjem (ispod)
Savjet: Uobičajeni i moćni uzorak: dohvaćanje široko (k=20), zatim sužavanje s ponovnim rangiranjem (top 4). Na taj način nećete ništa propustiti i modelu dajete čist kontekst.
Hibridno pretraživanje: Snaga dvaju pretraživanja
Semantičko (vektorsko) pretraživanje hvata značenje, ali propušta stvari: punu šifru proizvoda ("XR-4471"), rijetku kraticu, pravo ime, broj verzije. Za ove zadatke točnog podudaranja staro pretraživanje ključnih riječi—posebno klasični algoritam nazvan BM25—vrlo je dobro.
Hibridno pretraživanje kombinira to dvoje: funkcioniraju i semantičko pretraživanje i pretraživanje ključnih riječi, kombinirajući rezultate. Dakle, u pitanju kao što je "Jamstveni rok za
Spajanje se obično vrši pomoću RRF (Reciprocal Rank Fusion): pjesma koja je viša na oba popisa dolazi naprijed.
# Hybrid retrieval (conceptual)sem = vector_search(question, k=20) # meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # spajanje dva, top 8
Ponovno rangiranje: drugi i pametniji prolaz
Prvi poziv može biti brz, ali nepristojan. Ponovno rangiranje ocjenjuje kandidate vraćene prvim pretraživanjem jednog po jednog s moćnijim modelom (obično unakrsnim koderom — modelom koji čita pitanje i odlomak zajedno i ocjenjuje relevantnost) i pomiče one najrelevantnije na vrh.
Logika je sljedeća: prva pretraga dodjeljuje veliki broj kandidata za opoziv (20 kandidata), reranker odabire 4 najbolja radi preciznosti. Ovaj pristup u dvije faze puno je točniji od pretrage u jednoj fazi. To košta odgode i dodatne obrade; Dobitak je značajno povećanje kvalitete.
# Dvostupanjsko pronalaženje (konceptualnih) kandidata = hybrid_search(pitanje, k=20) # široko, brzi rezultat = reranker.score(pitanje, kandidati) # rezultat relevantnosti za svaki kontekst kandidata = rated.rank()[:4] # prva 4
Transformacija upita
Ponekad problem nije u pretrazi, nego u samom pitanju. Ako korisnik pita "što je s udaljenim radnicima?" ', to se ne može tražiti samo (nije jasno što je za udaljene radnike). Evo tehnika transformacije upita:
- Prepišite: upotrijebite povijest razgovora kako bi pitanje bilo samostalno: "Koliko zaposlenici na daljinu imaju pravo na godišnji odmor?"
- Višestruki upit: Generirajte 3 različita izraza istog pitanja, pretražujte sa svima njima, kombinirajte rezultate. Različite riječi nalaze različite dijelove.
- HyDE (Hypothetical Document Embeddings): Prvo ispišite "mogući odgovor" na model, zatim ugradite i potražite taj imaginarni odgovor. Imaginarni odgovor se ponekad nalazi boljim jer je riječima bliži stvarnom dokumentu.
# Multi-query (conceptual)variants = model.uret("Izrazite ovo pitanje na 3 različita načina: " + question)tum_sonuc = []za v u varijantama: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Slabo dohvaćanje/jako dohvaćanje
Slab (jedna faza, samo semantika, konstanta k=3):
result = vector_search(question, k=3)# Problem: kod proizvoda je promašen, ne može se unijeti točan dio 3 u teška pitanja.
Snažan (hibrid + widek + ponovno rangiranje + višestruki upit ako je potrebno):
kandidati = hybrid_search(rewrite(pitanje, prošlo), k=20)kontekst = reranker.score(pitanje, kandidati).first(4)# Hvataju se i točno podudaranje i značenje; Ide na najbolja 4 modela.
Tri mini kućišta
Slučaj 1 — Kod proizvoda je izbjegnut. Čisto semantičko pretraživanje na timu za podršku nije moglo pronaći "RTX-9080" doslovno u pitanju "RTX-9080 driver error"; Donosio je i druge proizvode sličnih naziva. Kada je dodano hibridno pretraživanje, došlo je do točnog podudaranja koda i stopa vraćanja točnih članaka porasla je s 58% na 92%.
Slučaj 2 — Razlika u ponovnom rangiranju. Pomoćni pravnik je radio s k=5, ali točna stavka je 7-10 većinu vremena. Ostao je u redovima. Kada je uvedeno k=20 + ponovno rangiranje, stopa ispravnih članaka u top 3 porasla je sa 61% na 94%; Latencija se povećala za samo 300 ms — prihvatljiv kompromis.
Slučaj 3 — Naknadno pitanje bez konteksta. U asistentu za ljudske resurse, korisnik pita "što je s honorarcima?" Kad sam pitao, sustav je donio nebitne dijelove. Prepisivanjem upita (izvlačenjem konteksta "godišnji odmor" iz prošlosti i dodavanjem "Zaposlenici koji rade na određeno vrijeme imaju pravo na godišnji odmor"), stopa točnih odgovora porasla je s 40% na 86%.
Uobičajene greške
- Oslanjanje isključivo na semantičko pretraživanje: šifra proizvoda, kratica, vlastito ime su propušteni; Dodajte hibrid.
- Održavanje premalenog k: Ispravan dio ne može ući na popis; učiniti ga širokim i suziti ga ponovnim rangiranjem.
- Nikad ne razmišljam o ponovnom rangiranju: Prvo pretraživanje je nepristojno; Drugi pametni prolaz značajno poboljšava kvalitetu.
- Traženje dodatnih pitanja kao što je: Pitanje bez konteksta traži besmisleno; prepisati.
- Slijepo povećanje k (bez ponovnog rangiranja): Model je ispunjen šumom, odziv je izobličen i trošak raste.
Pazite: svaka tehnika povećava troškove i kašnjenje. Višestruki upit znači trostruko pretraživanje, ponovno rangiranje znači dodatno pozivanje modela. Prvo počnite s jednostavnim hibridom + razumnim k; Mjerite i dodajte teške tehnike tamo gdje je stvarno potrebno. Dodavanje bez mjerenja.
Ukratko
- Top-k je ravnoteža između prisjećanja i preciznosti; Općenito, 4-8 je dobar početak.
- Hibridno pretraživanje kombinira semantičko pretraživanje s pretraživanjem po ključnim riječima (BM25); Oporavlja točna podudaranja.
- Ponovno rangiranje ponovno ocjenjuje kandidate iz širokog početnog pretraživanja s robusnim modelom i odabire one najbolje.
- Transformacija upita (prepisivanje, višestruki upit, HyDE) čini teška pitanja bez konteksta pretraživim.
- Snažan obrazac: široko dohvaćanje → spajanje s hibridom → usko s ponovnim rangiranjem; ali dodajte svaku tehniku mjereći je.
Zadatak aplikacije
Pripremite 6 teških pitanja s podacima iz prethodnih jedinica: najmanje 2 koja zahtijevaju točna podudaranja (šifra proizvoda, kratica, datum), 2 semantička (ista tema s različitim riječima), 2 dodatna pitanja bez konteksta. (1) Prvo zamislite svako pitanje kao čisto semantičko pretraživanje i ručno označite koji će se dijelovi pojaviti. (2) Ponovno procijenite ista pitanja s dodatkom hibrida i ponovnog rangiranja. (3) Prepišite dodatna pitanja bez konteksta. Zabilježite u tabličnom obliku koja tehnika čini razliku u kojoj vrsti pitanja.
popis za provjeru
- [ ] Znam da je top-k vaga s preciznošću prisjećanja i razuman početni raspon.
- [ ] Mogu objasniti zašto hibridno pretraživanje vraća točna podudaranja.
- [ ] Mogu primijeniti logiku ponovnog rangiranja u dva koraka (široko → pametno usko).
- [ ] Shvaćam potrebu za prepisivanjem dodatnih pitanja bez konteksta.
- [ ] Potvrđujem da sam dodao teške tehnike mjerenjem, a ne mjerenjem.