Gevinster:
- Implementering av hybridsøk som kombinerer topp-k-valg og semantisk og nøkkelordsøk
- Øke nøyaktigheten av det første søket med omrangering
- Gjør vanskelige spørsmål mer søkbare med teknikker som spørringstransformasjon og HyDE
Du makulerte dokumentene fint og la dem inn i vektordatabasen. Nå er det virkelige arbeidet: å hente de riktige brikkene når brukeren stiller et spørsmål. Dette kalles gjenfinning og er ryggraden i RAG-kvalitet. Husk setningen "Hentingkvalitet = RAG-kvalitet"; Denne enheten er akkurat kunsten å forbedre den kvaliteten. Vi vil dekke praktiske teknikker fra topp-k-valg til hybrid søk, fra omrangering til spørringstransformasjon.
Top-k: Hvor mange stykker vil vi ta med?
Den mest grunnleggende innstillingen: hvor mange brikker (k) som skal returneres fra søket. Hvis du tar med mindre (k=1) er det stor risiko for å gå glipp av riktig brikke; Hvis du legger til for mye (k=20), vil det legge til støy til modellen og tokenkostnaden vil øke.
Skille mellom to begreper. Tilbakekalling: hastigheten som den riktige brikken er blant de som er hentet. Presisjon: hastigheten som det som hentes er relevant. Å øke k øker gjenkallingen, men reduserer presisjonen. Målet er å balansere de to.
topp-k
Virkning
passende situasjon
1-3
Høy presisjon, fare for glipp
Enkle spørsmål med ett svar
4-8
Balanse; de fleste scenarier
Generell bedrifts-RAG
10-20
Høyere gjenkalling, støy øker
Med omrangering (nedenfor)
Tips: Felles og kraftig mønster: hent bredt (k=20), deretter smalt med omrangering (topp 4). På denne måten går du ikke glipp av noe, og du gir ren kontekst til modellen.
Hybridsøk: Kraften til to søk
Semantisk (vektor) søk fanger opp meningen, men går glipp av ting: full produktkode ("XR-4471"), sjelden forkortelse, egennavn, versjonsnummer. For disse oppgavene med eksakt samsvar er gammeldags søkeordsøk – spesielt den klassiske algoritmen kalt BM25 – veldig bra.
Hybridsøk kombinerer de to: både semantiske søk og søkeordsøk fungerer, og kombinerer resultatene. Således, i et spørsmål som "Garantiperiode for
Sammenslåing gjøres vanligvis med RRF (Reciprocal Rank Fusion): sporet som er høyere på begge listene kommer frem.
# Hybrid gjenfinning (konseptuell)sem = vektorsøk(spørsmål, k=20) # meningsnøkkel = bm25_søk(spørsmål, k=20) # fullordresult = rrf_merge(sem, nøkkel)[:8] # smelte de to, topp 8
Omrangering: Second and Smarter Pass
Den første samtalen kan være rask, men frekk. Omrangering scorer kandidatene som ble returnert av det første søket én etter én med en kraftigere modell (vanligvis en krysskoder – en modell som leser spørsmålet og passasjen sammen og skårer relevansen) og flytter de mest relevante til toppen.
Logikken er denne: det første søket tildeler et stort antall kandidater for tilbakekalling (20 kandidater), omrangeren velger de 4 beste for presisjon. Denne to-trinns tilnærmingen er mye mer nøyaktig enn et enkelt-trinns søk. Det koster noe forsinkelse og ekstra behandling; Gevinsten er en betydelig kvalitetsøkning.
# To-trinns gjenfinning (konseptuelle) kandidater = hybrid_search(question, k=20) # bred, quickscore = reranker.score(spørsmål, kandidater) # relevanspoengsum for hver kandidatkontekst = rated.rank()[:4] # topp 4
Transformering av spørringen
Noen ganger ligger ikke problemet i søket, men i selve spørsmålet. Hvis brukeren spør "hva med eksterne arbeidere?" ', kan dette ikke søkes alene (det er ikke klart hva som er for fjernarbeidere). Her er teknikkene for spørringstransformasjon:
- Omskriv: Bruk samtalehistorikk for å gjøre spørsmålet frittstående: "Hva har fjernarbeidere rett til årlig ferie?"
- Multi-query: Generer 3 forskjellige uttrykk for det samme spørsmålet, søk med dem alle, kombiner resultatene. Ulike ord finner forskjellige deler.
- HyDE (Hypotetical Document Embeddings): Skriv først ut et "mulig svar" på modellen, så bygg inn og søk etter det imaginære svaret. Det imaginære svaret er noen ganger funnet bedre fordi det i ord er nærmere det virkelige dokumentet.
# Multi-query (konseptuelle) varianter = model.uret("Uttrykk dette spørsmålet på 3 forskjellige måter: " + question)tum_sonuc = []for v i varianter: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Svak henting / Sterk henting
Svak (enkelt trinn, kun semantikk, konstant k=3):
result = vector_search(question, k=3)# Problem: produktkoden mangler, kan ikke angi riktig del 3 i vanskelige spørsmål.
Kraftig (hybrid + widek + re-rangering + multi-spørring om nødvendig):
candidates = hybrid_search(rewrite(question, past), k=20)context = reranker.score(question, candidates).first(4)# Både eksakt samsvar og betydning fanges opp; Den går til de 4 beste modellene.
Tre minivesker
Tilfelle 1 — Produktkode unnlatt. Et rent semantisk søk på et støtteteam kunne ikke finne "RTX-9080" ordrett i spørsmålet "RTX-9080 driverfeil"; Han tok med andre produkter med lignende navn. Når hybridsøk ble lagt til, skjedde nøyaktig kodematching, og frekvensen av returnerte korrekte artikler økte fra 58 % til 92 %.
Tilfelle 2 — Omrangeringsforskjell. En advokatfullmektig jobbet med k=5, men det riktige elementet er 7-10 mesteparten av tiden. Han ble i rekkene. Når k=20 + omrangering ble introdusert, økte frekvensen av riktig artikkel i topp 3 fra 61 % til 94 %; Latency økt med bare 300ms – et akseptabelt kompromiss.
Case 3 — Oppfølgingsspørsmål uten kontekst. I en HR-assistent spør brukeren "hva med deltidsansatte?" Da jeg spurte, brakte systemet irrelevante deler. Ved å omskrive spørringen (trekke «årlig permisjon»-konteksten fra fortiden og legge til «Deltidsansatte har rett til årlig ferie»), økte korrekt svarprosent fra 40 % til 86 %.
Vanlige feil
- Baserer seg utelukkende på semantisk søk: Produktkode, forkortelse, egennavn mangler; Legg til hybrid.
- Holder k for liten: Riktig brikke kan ikke komme inn på listen; gjør den bred og smal den med omrangering.
- Tenker aldri på omrangering: Første søk er frekt; Det andre smartpasset forbedrer kvaliteten betraktelig.
- Søker etter oppfølgingsspørsmål som det er: Et spørsmål uten kontekst søker etter meningsløst; omskrive.
- Blindt økende k (uten omrangering): Modellen fylles med støy, responsen er forvrengt og kostnaden øker.
Pass på: Hver teknikk legger til kostnader og forsinkelser. Multi-spørring betyr tre ganger søk, omrangering betyr ekstra modellanrop. Start med enkel hybrid + rimelig k først; Mål og legg til tunge teknikker der det virkelig trengs. Legger til uten å måle.
Oppsummert
- Top-k er balansen mellom gjenkalling og presisjon; Generelt er 4-8 en god start.
- Hybridsøk kombinerer semantisk søk med søkeord (BM25) søk; Gjenoppretter eksakte treff.
- En ny rangering gir kandidatene fra det brede innledende søket en robust modell og velger ut de beste.
- Spørringstransformasjon (omskriving, multi-spørring, HyDE) gjør vanskelige og kontekstfrie spørsmål søkbare.
- Sterkt mønster: bred apport → slå sammen med hybrid → smal med omrangering; men legg til hver teknikk ved å måle den.
Søknadsoppgave
Forbered 6 vanskelige spørsmål med data fra tidligere enheter: minst 2 som krever nøyaktige treff (produktkode, forkortelse, dato), 2 semantiske (samme emne med forskjellige ord), 2 oppfølgingsspørsmål uten kontekst. (1) Tenk først på hvert spørsmål som et rent semantisk søk og merk manuelt hvilke deler som kommer opp. (2) Revurder de samme spørsmålene med hybrid og omrangering lagt til. (3) Omskriv oppfølgingsspørsmål uten kontekst. Noter i tabellform hvilken teknikk som utgjør en forskjell i hvilken spørsmålstype.
sjekkliste
- [ ] Jeg vet at top-k er en balanse mellom gjenkalling og presisjon og et rimelig startområde.
- [ ] Jeg kan forklare hvorfor hybridsøk gjenoppretter eksakte treff.
- [ ] Jeg kan bruke to-trinns logikken for omrangering (bred → smart smal).
- [ ] Jeg anerkjenner behovet for å omskrive oppfølgingsspørsmål uten kontekst.
- [ ] Jeg bekrefter at jeg har lagt til tunge teknikker ved å måle, ikke ved å måle.