Jedinica 4 / 11

Strategije dohvaćanja: Top-k, hibrid, ponovno rangiranje

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.