Enota 4 / 11

Strategije iskanja: Top-k, hibridna, ponovna uvrstitev

Dobički:

  • Izvajanje hibridnega iskanja, ki združuje izbor top-k ter semantično iskanje in iskanje po ključnih besedah
  • Povečanje natančnosti prvega iskanja s ponovnim rangiranjem
  • Izboljšanje iskanja po težkih vprašanjih s tehnikami, kot sta transformacija poizvedbe in HyDE

Lepo si razrezal dokumente in jih dal v vektorsko bazo. Zdaj pa pravo delo: pridobivanje pravih kosov, ko uporabnik postavi vprašanje. To se imenuje pridobivanje in je hrbtenica kakovosti RAG. Zapomnite si stavek "Kakovost pridobivanja = kakovost RAG"; Ta enota je ravno umetnost izboljšanja te kakovosti. Pokrivali bomo praktične tehnike od izbire top-k do hibridnega iskanja, od ponovnega razvrščanja do transformacije poizvedbe.

Top-k: Koliko kosov bomo prinesli?

Najosnovnejša nastavitev: koliko kosov (k) vrniti iz iskanja. Če prinesete manj (k=1), obstaja velika nevarnost, da boste zgrešili pravi del; Če dodate preveč (k=20), bo to modelu dodalo hrup in stroški žetona se bodo povečali.

Razlikovati med dvema pojmoma. Odpoklic: stopnja, s katero je pravi del med pridobljenimi. Natančnost: hitrost, s katero je tisto, kar je pridobljeno, relevantno. Povečanje k poveča priklic, vendar zmanjša natančnost. Cilj je uravnotežiti oboje.

top-k

Vpliv

primerna situacija

1-3

Visoka natančnost, nevarnost zgrešitve

Preprosta vprašanja z enim odgovorom

4-8

Ravnovesje; večina scenarijev

Splošni korporativni RAG

10-20

Večji priklic, hrup se poveča

S ponovno uvrstitvijo (spodaj)

Namig: Pogost in močan vzorec: poiščite široko (k=20), nato zožite s prerazvrščanjem (zgornji 4). Tako ne boste ničesar zamudili in modelu daste čist kontekst.

Hibridno iskanje: Moč dveh iskanj

Semantično (vektorsko) iskanje zajame pomen, vendar zgreši stvari: celotno kodo izdelka (»XR-4471«), redko okrajšavo, lastno ime, številko različice. Za te naloge natančnega ujemanja je staro šolsko iskanje po ključnih besedah ​​– še posebej klasični algoritem, imenovan BM25 – zelo dobro.

Hibridno iskanje združuje oboje: tako semantično iskanje kot iskanje po ključnih besedah ​​delujeta in združujeta rezultate. Tako pri vprašanju, kot je "Garancijska doba za

Združevanje se običajno izvede z RRF (Reciprocal Rank Fusion): skladba, ki je višja na obeh seznamih, pride naprej.

# Hybrid retrieval (conceptual)sem = vector_search(question, k=20) # meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # združite dva, top 8

Ponovno razvrščanje: drugi in pametnejši prehod

Prvi klic je lahko hiter, a nesramen. Ponovno razvrščanje enega za drugim oceni kandidate, vrnjene s prvim iskanjem, z močnejšim modelom (običajno navzkrižnim kodirnikom – modelom, ki prebere vprašanje in odlomek skupaj ter oceni ustreznost) in premakne najbolj ustrezne na vrh.

Logika je naslednja: prvo iskanje dodeli veliko število kandidatov za odpoklic (20 kandidatov), ​​re-ranker zaradi natančnosti izbere najboljše 4. Ta dvostopenjski pristop je veliko natančnejši od enostopenjskega iskanja. Stane nekaj zamude in dodatne obdelave; Dobitek je znatno povečanje kakovosti.

# Dvostopenjski (konceptualni) kandidati = hybrid_search(vprašanje, k=20) # široko, hitri rezultat = reranker.score(vprašanje, kandidati) # ocena ustreznosti za vsak kontekst kandidata = rated.rank()[:4] # top 4

Preoblikovanje poizvedbe

Včasih težava ni v iskanju, ampak v samem vprašanju. Če uporabnik vpraša "kaj pa delavci na daljavo?" «, tega ni mogoče iskati samo (ni jasno, kaj je za delavce na daljavo). Tukaj so tehnike preoblikovanja poizvedbe:

  • Prepišite: uporabite zgodovino pogovorov, da bo vprašanje samostojno: "Kaj so delavci na daljavo upravičeni do letnega dopusta?"
  • Več poizvedb: ustvarite 3 različne izraze istega vprašanja, iščite z vsemi, združite rezultate. Različne besede najdejo različne koščke.
  • HyDE (Hypothetical Document Embeddings): Najprej natisnite "možen odgovor" na model, nato vdelajte in poiščite ta namišljeni odgovor. Namišljeni odgovor je včasih boljši, ker je z besedami bližje pravemu dokumentu.

# Večpoizvedbene (konceptualne)različice = model.uret("Izrazi to vprašanje na 3 različne načine: " + vprašanje)tum_sonuc = []za v v različicah: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]

Šibko iskanje / močno iskanje

Šibko (ena stopnja, samo semantika, konstanta k=3):

rezultat = vector_search(question, k=3)# Težava: koda izdelka je zgrešena, v težka vprašanja ni mogoče vnesti pravilnega dela 3.

Zmogljiv (hibrid + širok + prerazvrščanje + več poizvedb, če je potrebno):

kandidati = hibridno_iskanje(rewrite(vprašanje, preteklost), k=20)kontekst = reranker.score(vprašanje, kandidati).first(4)# Zajeta sta tako natančno ujemanje kot pomen; Gre za najboljše 4 modele.

Trije mini kovčki

1. primer – Koda izdelka je ušla. Čisto semantično iskanje v skupini za podporo ni moglo najti "RTX-9080" dobesedno v vprašanju "RTX-9080 gonilnik napaka"; Prinašal je druge izdelke s podobnimi imeni. Ko je bilo dodano hibridno iskanje, je prišlo do natančnega ujemanja kod in stopnja vračanja pravilnih člankov se je povečala z 58 % na 92 ​​%.

Primer 2 – razlika v ponovni uvrstitvi. Pravni pomočnik je delal s k=5, vendar je pravilna postavka večino časa 7-10. Ostal je v vrstah. Ko je bilo uvedeno k=20 + ponovno razvrščanje, se je delež pravilnega članka med prvimi 3 povečal z 61 % na 94 %; Zakasnitev se je povečala za samo 300 ms — sprejemljiv kompromis.

Primer 3 – Nadaljnje vprašanje brez konteksta. Pri kadrovskem asistentu uporabnik vpraša "kaj pa honorarni delavci?" Ko sem vprašal, je sistem prinesel nepomembne dele. S prepisom poizvedbe (povlek konteksta »letni dopust« iz preteklosti in dodajanje »Zaposleni s krajšim delovnim časom imajo pravico do letnega dopusta«) se je delež pravilnih odgovorov povečal s 40 % na 86 %.

Pogoste napake

  • Zanašanje izključno na semantično iskanje: koda izdelka, okrajšava, lastno ime so zgrešeni; Dodajte hibrid.
  • Ohranjanje premajhnega k: Pravi kos ne more priti na seznam; razširite in zožite s ponovnim rangiranjem.
  • Nikoli ne razmišljajte o ponovni uvrstitvi: prvo iskanje je nevljudno; Drugi pametni prehod bistveno izboljša kakovost.
  • Iskanje nadaljnjih vprašanj, kot je: vprašanje brez konteksta išče nesmiselno; prepisati.
  • Slepo povečevanje k (brez ponovnega rangiranja): model je napolnjen s šumom, odziv je popačen in stroški se povečajo.
Pozor: vsaka tehnika poveča stroške in zamudo. Več poizvedb pomeni 3-kratno iskanje, ponovno rangiranje pomeni dodaten klic modela. Najprej začnite s preprostim hibridom + razumnim k; Izmerite in dodajte težke tehnike, kjer je res potrebno. Seštevanje brez merjenja.

Če povzamem

  • Top-k je ravnovesje med priklicem in natančnostjo; Na splošno je 4-8 dober začetek.
  • Hibridno iskanje združuje semantično iskanje z iskanjem po ključnih besedah ​​(BM25); Obnovi natančna ujemanja.
  • Ponovno razvrščanje ponovno oceni kandidate iz širokega začetnega iskanja z robustnim modelom in izbere najboljše.
  • Preoblikovanje poizvedb (prepisovanje, več poizvedb, HyDE) omogoča iskanje po težkih vprašanjih brez konteksta.
  • Močan vzorec: široko pridobivanje → spajanje s hibridom → ozko s prerazvrščanjem; vendar vsako tehniko dodajte tako, da jo izmerite.

Aplikacijska naloga

Pripravite 6 težkih vprašanj s podatki iz prejšnjih enot: vsaj 2, ki zahtevata natančno ujemanje (šifra izdelka, okrajšava, datum), 2 semantični (ista tema z različnimi besedami), 2 dodatni vprašanji brez konteksta. (1) Najprej si o vsakem vprašanju predstavljajte čisto semantično iskanje in ročno označite, kateri deli se bodo pojavili. (2) Ponovno ocenite ista vprašanja z dodanim hibridom in ponovnim razvrščanjem. (3) Prepišite dodatna vprašanja brez konteksta. V obliki tabele zabeležite, katera tehnika vpliva na vrsto vprašanja.

kontrolni seznam

  • [ ] Vem, da je top-k tehtnica z natančnostjo priklica in razumno začetno območje.
  • [ ] Lahko razložim, zakaj hibridno iskanje povrne natančna ujemanja.
  • [ ] Lahko uporabim dvostopenjsko logiko prerazvrščanja (široko → pametno ozko).
  • [ ] Zavedam se potrebe po prepisu nadaljnjih vprašanj brez konteksta.
  • [ ] Potrjujem, da sem težke tehnike dodal z merjenjem, ne z merjenjem.