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.