Kasu:
- Hübriidotsingu rakendamine, mis ühendab top-k valiku ning semantilise ja märksõnaotsingu
- Esimese otsingu täpsuse suurendamine reastuse muutmisega
- Muutke keerulised küsimused paremini otsitavaks selliste tehnikatega nagu päringu teisendus ja HyDE
Hakkisid dokumendid kenasti tükkideks ja panid vektorandmebaasi. Nüüd tõeline töö: õigete tükkide toomine, kui kasutaja esitab küsimuse. Seda nimetatakse otsimiseks ja see on RAG-i kvaliteedi selgroog. Pidage meeles fraasi "Retrieval quality = RAG quality"; See seade on täpselt selle kvaliteedi parandamise kunst. Käsitleme praktilisi tehnikaid top-k valikust hübriidotsinguni, ümberpaigutusest päringu teisendamiseni.
Top-k: mitu tükki me toome?
Kõige elementaarsem seadistus: mitu tükki (k) otsingust tagastada. Kui tood vähem (k=1), on suur oht õigest tükist ilma jääda; Kui lisate liiga palju (k=20), lisab see mudelile müra ja märgi maksumus suureneb.
Eristage kahte mõistet. Meenuta: määr, millega õige tükk on otsitute hulgas. Täpsus: määr, millega otsitav on asjakohane. K suurendamine suurendab meeldetuletust, kuid vähendab täpsust. Eesmärk on need kaks tasakaalustada.
top-k
Mõju
sobiv olukord
1-3
Kõrge täpsus, möödalaskmise oht
Lihtsad ühe vastusega küsimused
4-8
Tasakaal; enamik stsenaariume
Üldine ettevõtte RAG
10-20
Kõrgem meeldetuletus, müra suureneb
Ümberpaigutusega (allpool)
Näpunäide: levinud ja võimas muster: tooge lai (k=20), seejärel kitsendage järjestamisega (4 parimat). Nii ei jää millestki ilma ja annad mudelile puhta konteksti.
Hübriidotsing: kahe otsingu jõud
Semantiline (vektor)otsing tabab tähenduse, kuid jätab asjadest ilma: toote täielik kood ("XR-4471"), haruldane lühend, pärisnimi, versiooninumber. Nende täpse vastega ülesannete jaoks on vana kooli märksõnaotsing – eriti klassikaline algoritm nimega BM25 – väga hea.
Hübriidotsing ühendab need kaks: toimivad nii semantilised kui ka märksõnaotsingud, kombineerides tulemusi. Seega sellises küsimuses nagu "Garantiiaeg
Ühendamine toimub tavaliselt RRF-iga (Reciprocal Rank Fusion): mõlemas loendis kõrgem lugu tuleb ettepoole.
# Hübriidotsing (kontseptuaalne)sem = vektor_otsing(küsimus, k=20) # tähendusvõti = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # fuse need kaks, top 8
Uuesti järjestamine: teine ja targem läbimine
Esimene kõne võib olla kiire, kuid ebaviisakas. Ümberpaigutamine hindab esimese otsinguga tagastatud kandidaadid ükshaaval võimsama mudeliga (tavaliselt ristkodeerija – mudel, mis loeb küsimuse ja lõigu koos ning hindab asjakohasust) ning viib kõige asjakohasemad üles.
Loogika on järgmine: esimese otsinguga määratakse tagasikutsumiseks suur hulk kandidaate (20 kandidaati), ümberjärjestaja valib täpsuse huvides välja 4 parimat. See kaheetapiline lähenemine on palju täpsem kui üheetapiline otsing. See maksab teatud viivitust ja täiendavat töötlemist; Kasu on oluline kvaliteedi tõus.
# Kaheetapiline otsimine (kontseptuaalne) kandidaadid = hybrid_search(question, k = 20) # wide, quickscore = reranker.score(küsimus, kandidaadid) # asjakohasuse skoor iga kandidaadi konteksti kohta = hinnatud.rank()[:4] # 4 parimat
Päringu muutmine
Mõnikord pole probleem mitte otsingus, vaid küsimuses endas. Kui kasutaja küsib "kuidas on kaugtöötajatega?" ", seda ei saa üksi otsida (pole selge, mis on kaugtöötajate jaoks). Siin on päringu teisendamise tehnikad.
- Kirjutage ümber: kasutage vestluste ajalugu, et muuta küsimus eraldiseisvaks: "Millel on kaugtöötajatel õigus saada põhipuhkust?"
- Mitmikpäring: genereerige sama küsimuse kohta 3 erinevat väljendit, otsige kõigiga, kombineerige tulemused. Erinevad sõnad leiavad erinevaid tükke.
- HyDE (hüpoteetilised dokumendimanused): esmalt printige mudelile "võimalik vastus", seejärel manustage ja otsige seda kujuteldavat vastust. Väljamõeldud vastus leitakse mõnikord paremini, kuna see on sõnades tegelikule dokumendile lähemal.
# Multi-query (conceptual)variants = model.uret("Väljendage seda küsimust kolmel erineval viisil: " + küsimus)tum_sonuc = []v jaoks variantides: all_sonuc += vector_intermediate(v, k=6)context = ainsus_ja_järjestus(tum_tulemus)[:6]
Nõrk otsimine / Tugev tagasivõtt
Nõrk (üheastmeline, ainult semantika, konstant k=3):
result = vector_search(question, k=3)# Probleem: tootekood on puudu, rasketes küsimustes ei saa sisestada õiget osa 3.
Võimas (hübriid + widek + ümberpaigutamine + vajadusel mitu päringut):
kandidaadid = hybrid_otsing(ümberkirjuta(küsimus, minevik), k=20)kontekst = ümberjärjestaja.skoor(küsimus, kandidaadid).first(4)# Jäädvustatud on nii täpne vaste kui ka tähendus; See läheb 4 parimale mudelile.
Kolm miniümbrist
Juhtum 1 – tootekood on asendatud. Puhas semantiline otsing tugimeeskonnas ei leidnud küsimusest "RTX-9080 draiveri viga" sõna-sõnalt sõna "RTX-9080"; Ta tõi kaasa teisi sarnase nimega tooteid. Hübriidotsingu lisamisel toimus täpne koodisobitus ja õigete artiklite tagastamise määr kasvas 58%-lt 92%-le.
2. juhtum – järjestamise erinevus. Paralegaal töötas k=5-ga, kuid õige kirje on enamasti 7-10. Ta jäi ridadesse. Kui võeti kasutusele k=20 + ümberpaigutamine, tõusis õige artikli esikolmikusse sattumise määr 61%-lt 94%-le; Latentsus suurenes vaid 300 ms võrra – vastuvõetav kompromiss.
3. juhtum – järelküsimus ilma kontekstita. Personaliassistendis küsib kasutaja: "Aga osalise tööajaga töötajad?" Kui küsisin, tõi süsteem ebaolulisi osi. Päringut ümber kirjutades (tõmmates minevikust konteksti "põhipuhkus" ja lisades "Osalise tööajaga töötajatel on õigus põhipuhkusele") tõusis õigete vastuste määr 40%-lt 86%-le.
Levinud vead
- Tuginedes üksnes semantilisele otsingule: tootekood, lühend, pärisnimi on puudu; Lisage hübriid.
- K hoidmine liiga väikesena: õige tükk ei saa nimekirja siseneda; tehke see laiaks ja kitsendage seda ümberkorraldamisega.
- Ei mõtle kunagi ümber järjestamisele: esimene otsing on ebaviisakas; Teine nutikas pass parandab oluliselt kvaliteeti.
- Järelküsimuste otsimine nii nagu on: Kontekstita küsimus otsib mõttetut; ümber kirjutama.
- Pimesi suurendav k (ilma ümberpaigutamiseta): Mudel täitub müraga, reaktsioon on moonutatud ja maksumus suureneb.
Ettevaatust: iga tehnika lisab kulusid ja viivitust. Mitmikpäring tähendab 3-kordset otsingut, ümberpaigutamine tähendab täiendavat mudelikutset. Alusta lihtsast hübriidist + mõistlik k kõigepealt; Mõõtke ja lisage raskeid tehnikaid, kus seda tõesti vaja on. Lisamine ilma mõõtmiseta.
Kokkuvõttes
- Top-k on tasakaal meenutamise ja täpsuse vahel; Üldiselt on 4-8 hea algus.
- Hübriidotsing kombineerib semantilise otsingu märksõna (BM25) otsinguga; Taastab täpsed vasted.
- Ümberpaigutamine hindab kandidaate ulatuslikust esialgsest otsingust tugeva mudeli abil ümber ja valib välja parimad.
- Päringu teisendus (ümberkirjutamine, mitu päringut, HyDE) muudab keerulised ja kontekstivabad küsimused otsitavaks.
- Tugev muster: lai hankimine → liidetakse hübriidiga → kitsas koos ümberkorraldamisega; kuid lisage iga tehnika seda mõõtes.
Rakenduse ülesanne
Valmistage ette 6 keerulist küsimust eelmiste üksuste andmetega: vähemalt 2 täpset vastet nõudvat (tootekood, lühend, kuupäev), 2 semantilist (sama teema erinevate sõnadega), 2 järelküsimust ilma kontekstita. (1) Kõigepealt mõelge igale küsimusele kui puhtale semantilisele otsingule ja märkige käsitsi, millised osad esile kerkivad. (2) Hinnake uuesti samad küsimused koos hübriidse ja ümberpaigutamise lisamisega. (3) Kirjutage järelküsimused ilma kontekstita ümber. Märkige tabelina üles, milline tehnika mis tüüpi küsimuse puhul erineb.
kontrollnimekiri
- [ ] Ma tean, et top-k on tagasikutsumise ja täpsusega tasakaal ja mõistlik lähtevahemik.
- [ ] Ma võin selgitada, miks hübriidotsing taastab täpsed vasted.
- [ ] Oskan rakendada ümberjärjestamise kaheastmelist loogikat (lai → nutikas kitsas).
- [ ] Mõistan vajadust järelküsimused ilma kontekstita ümber kirjutada.
- [ ] Kinnitan, et lisasin raskeid võtteid mõõtes, mitte mõõtes.