Jedinica 4 / 11

Strategije pronalaženja: Top-k, Hybrid, Re-ranking

Dobici:

  • Implementacija hibridne pretrage koja kombinuje top-k odabir i semantičko pretraživanje i pretraživanje po ključnim riječima
  • Povećanje tačnosti prve pretrage uz ponovno rangiranje
  • Učinite teška pitanja lakšim za pretraživanje pomoću tehnika kao što su transformacija upita i HyDE

Lijepo ste isjeckali dokumente i stavili ih u vektorsku bazu podataka. Sada pravi posao: preuzimanje pravih delova kada korisnik postavi pitanje. Ovo se zove pronalaženje i predstavlja okosnicu kvaliteta RAG-a. Zapamtite frazu "Kvalitet preuzimanja = kvalitet RAG"; Ova jedinica je upravo umjetnost poboljšanja tog kvaliteta. Pokrićemo praktične tehnike od top-k selekcije do hibridnog pretraživanja, od ponovnog rangiranja do transformacije upita.

Top-k: Koliko komada ćemo donijeti?

Najosnovnije podešavanje: koliko komada (k) vratiti iz pretrage. Ako donesete manje (k=1) postoji veliki rizik da propustite pravi komad; Ako dodate previše (k=20), to će dodati buku modelu i trošak tokena će se povećati.

Razlikovati dva koncepta. Podsjetimo: stopa po kojoj je ispravan komad među preuzetima. Preciznost: stopa po kojoj je ono što se preuzima relevantno. Povećanje k povećava pamćenje, ali smanjuje preciznost. Cilj je uravnotežiti to dvoje.

top-k

Uticaj

odgovarajuća situacija

1-3

Visoka preciznost, rizik od promašaja

Jednostavna pitanja sa jednim odgovorom

4-8

Balans; većina scenarija

Generalni korporativni RAG

10-20

Veće prisjećanje, buka se povećava

Sa ponovnim rangiranjem (ispod)

Savjet: Uobičajeni i moćni uzorak: dohvatite široko (k=20), a zatim suzite s ponovnim rangiranjem (top 4). Na ovaj način nećete ništa propustiti i modelu dajete čist kontekst.

Hibridna pretraga: moć dva pretraživanja

Semantička (vektorska) pretraga hvata značenje, ali propušta stvari: punu šifru proizvoda („XR-4471“), rijetku skraćenicu, vlastito ime, broj verzije. Za ove zadatke s potpunim podudaranjem, pretraživanje po ključnim riječima stare škole – posebno klasični algoritam nazvan BM25 – je vrlo dobar.

Hibridna pretraga kombinuje to dvoje: i semantička i pretraga ključnih reči funkcionišu, kombinujući rezultate. Dakle, u pitanju kao što je „Garantni rok

Spajanje se obično vrši pomoću RRF-a (Reciprocal Rank Fusion): pjesma koja je viša na obje liste dolazi naprijed.

# Hibridno pronalaženje (konceptualno)sem = vector_search(pitanje, k=20) # valuekey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # spoji dva, top 8

Ponovno rangiranje: Drugi i pametniji prolaz

Prvi poziv može biti brz, ali nepristojan. Ponovno rangiranje boduje kandidate koje je vratila prva pretraga jednog po jednog sa snažnijim modelom (obično unakrsnim koderom — modelom koji zajedno čita pitanje i odlomak i ocjenjuje relevantnost) i pomiče one najrelevantnije na vrh.

Logika je sledeća: prva pretraga dodeljuje veliki broj kandidata za opoziv (20 kandidata), reranker bira najbolja 4 radi preciznosti. Ovaj dvostepeni pristup je mnogo precizniji od jednostepenog pretraživanja. To košta određeno kašnjenje i dodatnu obradu; Dobitak je značajno povećanje kvaliteta.

# Dvostepeni pronalazak (konceptualnih)kandidata = hybrid_search(pitanje, k=20) # širok, brzi rezultat = reranker.score(pitanje, kandidati) # ocjena relevantnosti za svaki kontekst kandidata = rated.rank()[:4] # top 4

Transformacija upita

Ponekad problem nije u traženju, već u samom pitanju. Ako korisnik pita "što je s udaljenim radnicima?" ', ovo se ne može tražiti sam (nije jasno šta je za udaljene radnike). Evo tehnika transformacije upita:

  • Ponovo napišite: Koristite istoriju razgovora da postavite pitanje kao samostalno: "Šta radnici na daljinu imaju pravo na godišnji odmor?"
  • Više upita: 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 odštampajte "mogući odgovor" na model, a zatim ugradite i potražite taj imaginarni odgovor. Imaginarni odgovor se ponekad nalazi bolje jer je riječima bliži stvarnom dokumentu.

# Višestruke (konceptualne) varijante = model.uret("Izrazite ovo pitanje na 3 različita načina: " + pitanje)tum_sonuc = []za v u varijantama: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]

Slabo pronalaženje / jako vraćanje

Slab (jednostepena, samo semantika, konstanta k=3):

rezultat = vector_search(question, k=3)# Problem: kod proizvoda je promašen, ne može se uneti tačan dio 3 u teška pitanja.

Moćan (hibrid + widek + ponovno rangiranje + više upita ako je potrebno):

kandidati = hybrid_search(rewrite(pitanje, prošlost), k=20)context = reranker.score(pitanje, kandidati).first(4)# Uhvate se i tačno podudaranje i značenje; Ide na najbolja 4 modela.

Tri mini futrole

Slučaj 1 — Kod proizvoda je izbačen. Čista semantička pretraga na timu za podršku nije mogla da nađe "RTX-9080" doslovno u pitanju "Greška upravljačkog programa RTX-9080"; Donosio je druge proizvode sa sličnim nazivima. Kada je dodana hibridna pretraga, došlo je do tačnog podudaranja koda i stopa vraćanja tačnih članaka porasla je sa 58% na 92%.

Slučaj 2 — Razlika u ponovnom rangiranju. Paralegal je radio sa k=5, ali tačna stavka je većinu vremena 7-10. Ostao je u redovima. Kada je uvedeno k=20 + ponovno rangiranje, stopa ispravnog članka koji je u top 3 porasla je sa 61% na 94%; Latencija je povećana za samo 300 ms - prihvatljiv kompromis.

Slučaj 3 — Naknadno pitanje bez konteksta. U HR asistentu, korisnik pita „šta je sa honorarnim radnicima?“ Kada sam pitao, sistem je doneo nebitne delove. Prepisivanjem upita (izvlačenje konteksta "godišnji odmor" iz prošlosti i dodavanjem "Zaposleni sa nepunim radnim vremenom imaju pravo na godišnji odmor"), stopa tačnih odgovora porasla je sa 40% na 86%.

Uobičajene greške

  • Oslanjajući se isključivo na semantičku pretragu: Propuštena je šifra proizvoda, skraćenica, vlastiti naziv; Dodajte hibrid.
  • Održavanje k premalim: tačan komad ne može ući na listu; učinite ga širokim i suzite ga ponovnim rangiranjem.
  • Nikada ne razmišljam o ponovnom rangiranju: Prva pretraga je nepristojna; Drugi pametni prolaz značajno poboljšava kvalitet.
  • Traženje dodatnih pitanja kakva jeste: Pitanje bez konteksta traži besmisleno; prepisati.
  • Slijepo povećanje k (bez ponovnog rangiranja): model je ispunjen šumom, odgovor je izobličen i cijena se povećava.
Pazite: svaka tehnika dodaje troškove i kašnjenje. Više upita znači trostruko pretraživanje, ponovno rangiranje znači dodatni poziv modela. Počnite sa jednostavnim hibridom + razumnim k prvo; Izmjerite i dodajte teške tehnike tamo gdje je zaista potrebno. Sabiranje bez mjerenja.

Ukratko

  • Top-k je ravnoteža između prisjećanja i preciznosti; Generalno, 4-8 je dobar početak.
  • Hibridna pretraga kombinuje semantičku pretragu sa pretraživanjem po ključnim rečima (BM25); Oporavlja tačna podudaranja.
  • Ponovno rangiranje ponovno ocjenjuje kandidate iz široke početne pretrage sa robusnim modelom i bira one najbolje.
  • Transformacija upita (ponovno pisanje, više upita, HyDE) čini teška pitanja bez konteksta pretraživa.
  • Snažan obrazac: široki dohvat → spajanje sa hibridom → uski sa ponovnim rangiranjem; ali dodajte svaku tehniku ​​mjerenjem.

Zadatak aplikacije

Pripremite 6 teških pitanja s podacima iz prethodnih jedinica: najmanje 2 koja zahtijevaju tačna podudaranja (šifra proizvoda, skraćenica, datum), 2 semantička (ista tema s različitim riječima), 2 dodatna pitanja bez konteksta. (1) Prvo zamislite svako pitanje kao čistu semantičku pretragu i ručno označite koji će se dijelovi pojaviti. (2) Ponovo procijenite ista pitanja s dodanim hibridnim i rerangiranim. (3) Prepišite dodatna pitanja bez konteksta. Zabilježite u obliku tabele koja tehnika čini razliku u kojoj vrsti pitanja.

kontrolna lista

  • [ ] Znam da je top-k balans preciznosti opoziva i razuman početni raspon.
  • [ ] Mogu objasniti zašto hibridna pretraga obnavlja tačna podudaranja.
  • [ ] Mogu primijeniti dvostepenu logiku ponovnog rangiranja (široko → pametno usko).
  • [ ] Prepoznajem potrebu za prepisivanjem dodatnih pitanja bez konteksta.
  • [ ] Potvrđujem da sam teške tehnike dodao mjerenjem, a ne mjerenjem.