Ieguvumi:
- Hibrīda meklēšanas ieviešana, kas apvieno top-k atlasi un semantisko un atslēgvārdu meklēšanu
- Pirmās meklēšanas precizitātes paaugstināšana ar atkārtotu ranžēšanu
- Padarot sarežģītus jautājumus meklējamākus, izmantojot tādas metodes kā vaicājumu pārveidošana un HyDE
Jūs labi sasmalcinājāt dokumentus un ievietojāt tos vektoru datubāzē. Tagad īstais darbs: pareizo daļu iegūšana, kad lietotājs uzdod jautājumu. To sauc par izguvi, un tas ir RAG kvalitātes pamats. Atcerieties frāzi "Retrieval quality = RAG quality"; Šī vienība ir tieši šīs kvalitātes uzlabošanas māksla. Mēs apskatīsim praktiskus paņēmienus no augstākās kvalitātes atlases līdz hibrīdai meklēšanai, no atkārtotas ranžēšanas līdz vaicājuma transformācijai.
Top-k: cik gabalu mēs atvedīsim?
Visvienkāršākais iestatījums: cik gabalu (k) jāatgriežas no meklēšanas. Ja paņemat līdzi mazāk (k=1), pastāv liels risks, ka palaidīs garām pareizo gabalu; Ja pievienosit pārāk daudz (k=20), tas modelim radīs troksni un palielināsies marķiera izmaksas.
Atšķirt divus jēdzienus. Atsaukt: ātrums, ar kādu pareizais gabals ir starp izgūtajiem. Precizitāte: ātrums, ar kādu izgūtais ir būtisks. K palielināšana palielina atsaukšanu, bet samazina precizitāti. Mērķis ir līdzsvarot abus.
top-k
Ietekme
piemērota situācija
1-3
Augsta precizitāte, palaišanas risks
Vienkārši jautājumi ar vienu atbildi
4-8
Līdzsvars; vairums scenāriju
Vispārējā korporatīvā RAG
10-20
Lielāka atsaukšana, palielinās troksnis
Ar pārkārtošanu (zemāk)
Padoms. Izplatīts un spēcīgs raksts: paceliet platu (k=20), pēc tam sašauriniet, veicot atkārtotu ranžēšanu (4. top.). Tādā veidā jūs neko nepalaidīsit garām un piešķirat modelim tīru kontekstu.
Hibrīda meklēšana: divu meklējumu spēks
Semantiskā (vektora) meklēšana uztver nozīmi, bet palaiž garām lietas: pilns produkta kods ("XR-4471"), reta saīsinājums, īpašvārds, versijas numurs. Šiem precīzās atbilstības uzdevumiem ļoti laba ir vecās skolas atslēgvārdu meklēšana, jo īpaši klasiskais algoritms BM25.
Hibrīda meklēšana apvieno abus: darbojas gan semantiskā, gan atslēgvārdu meklēšana, apvienojot rezultātus. Tādējādi tādā jautājumā kā "Garantijas laiks
Apvienošana parasti tiek veikta ar RRF (Reciprocal Rank Fusion): celiņš, kas ir augstāks abos sarakstos, tiek parādīts uz priekšu.
# Hibrīda izguve (konceptuālā)sem = vektora_meklēšana(jautājums, k=20) # nozīmēatslēga = bm25_search(jautājums, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # apvienot abus, top 8
Pārkārtošana: otrā un viedākā ieskaite
Pirmais zvans var būt ātrs, bet rupjš. Pārvērtējot pirmajā meklēšanā atgrieztos kandidātus pa vienam, izmantojot jaudīgāku modeli (parasti krustenisko kodētāju — modeli, kas kopā nolasa jautājumu un fragmentu un novērtē atbilstību), un atbilstošākos tiek pārvietotas uz augšu.
Loģika ir šāda: pirmajā meklēšanā atsaukšanai tiek piešķirts liels skaits kandidātu (20 kandidāti), pārkārtotājs atlasa 4 labākos precizitātes labad. Šī divpakāpju pieeja ir daudz precīzāka nekā viena posma meklēšana. Tas maksā zināmu kavēšanos un papildu apstrādi; Ieguvums ir ievērojams kvalitātes pieaugums.
# Divpakāpju izguves (konceptuālie) kandidāti = hybrid_search(jautājums, k = 20) # plaša, ātrais rādītājs = reranker.score(jautājums, kandidāti) # atbilstības rādītājs katram kandidāta kontekstam = rated.rank()[:4] # top 4
Vaicājuma pārveidošana
Dažreiz problēma nav meklēšanā, bet gan pašā jautājumā. Ja lietotājs jautā "kā ar attālinātajiem darbiniekiem?" ', to nevar meklēt atsevišķi (nav skaidrs, kas ir paredzēts attālinātiem darbiniekiem). Tālāk ir norādītas vaicājumu pārveidošanas metodes.
- Pārrakstiet: izmantojiet sarunu vēsturi, lai padarītu jautājumu par atsevišķu: "Kādiem attāliem darbiniekiem ir tiesības uz ikgadējo atvaļinājumu?"
- Vairāki vaicājumi: ģenerējiet 3 dažādas viena jautājuma izteiksmes, meklējiet ar visām, apvienojiet rezultātus. Dažādi vārdi atrod dažādus gabalus.
- HyDE (hipotētiskā dokumentu iegulšana): vispirms izdrukājiet modelim "iespējamo atbildi", pēc tam ieguliet un meklējiet šo iedomāto atbildi. Iedomātā atbilde dažreiz tiek atrasta labāk, jo tā vārdos ir tuvāka reālajam dokumentam.
# Vairāku vaicājumu (konceptuālie)varianti = model.uret("Izsakiet šo jautājumu 3 dažādos veidos: " + jautājums)tum_sonuc = []for v variantos: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Vāja atgūšana / spēcīga atgūšana
Vāji (vienpakāpe, tikai semantika, konstante k=3):
rezultāts = vector_search(jautājums, k=3)# Problēma: preces kods ir izlaists, nevar ievadīt pareizo 3. daļu sarežģītos jautājumos.
Jaudīgs (hibrīds + widek + pārkārtošana + vairāku vaicājumu, ja nepieciešams):
kandidāti = hybrid_search(pārrakstīt(jautājums, pagātne), k=20)konteksts = reranker.score(jautājums, kandidāti).first(4)# Tiek uztverta gan precīzā atbilstība, gan nozīme; Tas attiecas uz 4 labākajiem modeļiem.
Trīs mini futrāļi
1. gadījums — produkta kods ir izmainīts. Veicot tīru semantisku meklēšanu atbalsta komandā, nevarēja atrast vārdu "RTX-9080" jautājumā "RTX-9080 draivera kļūda"; Viņš atveda citus produktus ar līdzīgiem nosaukumiem. Kad tika pievienota hibrīda meklēšana, notika precīza kodu atbilstība, un pareizo rakstu atgriešanas rādītājs palielinājās no 58% līdz 92%.
2. gadījums — pārkārtošanas atšķirība. Pārstāvis strādāja ar k=5, bet pareizā pozīcija lielākoties ir 7-10. Viņš palika ierindā. Ieviešot k=20 + pārkārtošanu, pareizā raksta iekļūšanas pirmajā trijniekā rādītājs pieauga no 61% līdz 94%; Latentums palielinājās tikai par 300 ms — pieņemams kompromiss.
3. gadījums — papildu jautājums bez konteksta. Personālvadības palīgā lietotājs jautā: "kā ar nepilnu darba laiku?" Kad jautāju, sistēma atnesa nebūtiskas daļas. Pārrakstot vaicājumu (izvelkot "ikgadējā atvaļinājuma" kontekstu no pagātnes un pievienojot "Nepilnu darba laiku darbiniekiem pienākas ikgadējais atvaļinājums"), pareizo atbilžu rādītājs pieauga no 40% līdz 86%.
Biežas kļūdas
- Paļaujoties tikai uz semantisko meklēšanu: nav norādīts produkta kods, saīsinājums, īpašvārds; Pievienojiet hibrīdu.
- Turot k pārāk mazu: Pareizais gabals nevar iekļūt sarakstā; padariet to platu un sašauriniet to, mainot rangu.
- Nekad nedomāju par atkārtotu ranžēšanu: pirmā meklēšana ir nepieklājīga; Otrā viedā caurlaide ievērojami uzlabo kvalitāti.
- Papildjautājumu meklēšana tādi, kādi tie ir: Jautājums bez konteksta meklē bezjēdzīgus jautājumus; pārrakstīt.
- Akli palielinot k (bez pārkārtošanas): modelis ir piepildīts ar troksni, reakcija ir izkropļota un izmaksas palielinās.
Uzmanieties: katrs paņēmiens palielina izmaksas un kavēšanos. Vairāku vaicājumu veikšana nozīmē trīskāršu meklēšanu, pārkārtošana nozīmē papildu modeļa izsaukumu. Sāciet ar vienkāršu hibrīdu + vispirms saprātīgais k; Izmēriet un pievienojiet smagas metodes, kur tas patiešām nepieciešams. Pievienošana bez mērīšanas.
Rezumējot
- Top-k ir līdzsvars starp atsaukšanu un precizitāti; Parasti 4-8 ir labs sākums.
- Hibrīda meklēšana apvieno semantisko meklēšanu ar atslēgvārdu (BM25) meklēšanu; Atgūst precīzas atbilstības.
- Pārkārtojot ranžēšanu, kandidāti tiek atkārtoti novērtēti no plašās sākotnējās meklēšanas, izmantojot stabilu modeli, un tiek atlasīti labākie.
- Vaicājumu pārveidošana (pārrakstīšana, vairāku vaicājumu, HyDE) padara sarežģītus un bez konteksta jautājumus meklējamus.
- Spēcīgs raksts: plats ienesums → apvienot ar hibrīdu → šaurs ar atkārtotu rangu; bet pievienojiet katru tehniku, to izmērot.
Lietojumprogrammas uzdevums
Sagatavojiet 6 sarežģītus jautājumus ar datiem no iepriekšējām vienībām: vismaz 2, kuriem nepieciešama precīza atbilstība (produkta kods, saīsinājums, datums), 2 semantiski (tā pati tēma ar dažādiem vārdiem), 2 papildu jautājumi bez konteksta. (1) Vispirms domājiet par katru jautājumu kā tīru semantisku meklēšanu un manuāli atzīmējiet, kuras daļas tiks parādītas. (2) Atkārtoti novērtējiet tos pašus jautājumus, pievienojot hibrīdu un atkārtotu ranžēšanu. (3) Pārrakstiet papildu jautājumus bez konteksta. Atzīmējiet tabulas veidā, kurš paņēmiens nosaka atšķirību jautājumā.
kontrolsaraksts
- [ ] Es zinu, ka top-k ir atsaukšanas precizitātes līdzsvars un saprātīgs sākuma diapazons.
- [ ] Es varu izskaidrot, kāpēc hibrīda meklēšana atgūst precīzas atbilstības.
- [ ] Es varu pielietot divpakāpju pārkārtošanas loģiku (plašs → vieds šaurs).
- [ ] Es atzīstu nepieciešamību pārrakstīt papildu jautājumus bez konteksta.
- [ ] Apstiprinu, ka smagus paņēmienus pievienoju mērot, nevis mērot.