Enhed 4 / 11

Hentningsstrategier: Top-k, Hybrid, Re-ranking

Gevinster:

  • Implementering af hybrid søgning, der kombinerer top-k udvælgelse og semantisk søgning og søgeordssøgning
  • Forøgelse af nøjagtigheden af den første søgning med omrangering
  • Gør vanskelige spørgsmål mere søgbare med teknikker som forespørgselstransformation og HyDE

Du makulerede dokumenterne pænt og lagde dem ind i vektordatabasen. Nu er det virkelige arbejde: at hente de rigtige brikker, når brugeren stiller et spørgsmål. Dette kaldes retrieval og er rygraden i RAG-kvalitet. Husk sætningen "Gentagekvalitet = RAG-kvalitet"; Denne enhed er præcis kunsten at forbedre den kvalitet. Vi vil dække praktiske teknikker fra top-k valg til hybrid søgning, fra omrangering til forespørgselstransformation.

Top-k: Hvor mange stykker vil vi bringe?

Den mest grundlæggende indstilling: hvor mange stykker (k) der skal returneres fra søgningen. Hvis du medbringer mindre (k=1) er der stor risiko for at gå glip af den rigtige brik; Hvis du tilføjer for meget (k=20), vil det tilføje støj til modellen, og token-omkostningerne vil stige.

Skelne mellem to begreber. Tilbagekaldelse: den hastighed, hvormed det korrekte stykke er blandt de hentede. Præcision: den hastighed, hvormed det hentes er relevant. Forøgelse af k øger genkaldelsen, men mindsker præcisionen. Målet er at balancere de to.

top-k

Indvirkning

passende situation

1-3

Høj præcision, risiko for miss

Enkle spørgsmål med ét svar

4-8

Balance; de fleste scenarier

General corporate RAG

10-20

Højere genkaldelse, støj øges

Med omplacering (nedenfor)

Tip: Fælles og kraftigt mønster: Hent bredt (k=20), indsnævres derefter med omplacering (top 4). På denne måde går du ikke glip af noget, og du giver en ren kontekst til modellen.

Hybrid søgning: Kraften ved to søgninger

Semantisk (vektor) søgning fanger betydningen, men går glip af ting: fuld produktkode ("XR-4471"), sjælden forkortelse, eget navn, versionsnummer. Til disse eksakt matchende opgaver er gammeldags søgeordssøgning - især den klassiske algoritme kaldet BM25 - meget god.

Hybrid søgning kombinerer de to: både semantiske søgninger og søgeordssøgninger fungerer og kombinerer resultaterne. Således i et spørgsmål som "Garantiperiode for

Sammenlægning udføres normalt med RRF (Reciprocal Rank Fusion): det spor, der er højere på begge lister, kommer frem.

# Hybrid hentning (konceptuel)sem = vector_search(spørgsmål, k=20) # meaningkey = bm25_search(spørgsmål, k=20) # fuldordresult = rrf_merge(sem, nøgle)[:8] # fusioner de to, top 8

Omplacering: Andet og Smarter Pass

Det første opkald kan være hurtigt, men uhøfligt. Genrangering giver de kandidater, der returneres ved den første søgning, en efter en med en mere kraftfuld model (normalt en krydskoder - en model, der læser spørgsmålet og passagen sammen og scorer relevansen) og flytter de mest relevante til toppen.

Logikken er denne: den første søgning tildeler et stort antal kandidater til tilbagekaldelse (20 kandidater), genrangeren vælger de bedste 4 for præcision. Denne to-trins tilgang er meget mere præcis end en enkelt-trins søgning. Det koster en vis forsinkelse og yderligere behandling; Gevinsten er en markant kvalitetsstigning.

# To-trins hentning (konceptuelle) kandidater = hybrid_search(spørgsmål, k=20) # bred, quickscore = reranker.score(spørgsmål, kandidater) # relevansscore for hver kandidatkontekst = rated.rank()[:4] # top 4

Transformering af forespørgslen

Nogle gange ligger problemet ikke i søgningen, men i selve spørgsmålet. Hvis brugeren spørger "hvad med fjernarbejdere?" ', kan dette ikke søges alene (det er ikke klart, hvad der er for fjernarbejdere). Her er forespørgselstransformationsteknikkerne:

  • Omskriv: Brug samtalehistorik til at gøre spørgsmålet selvstændigt: "Hvad har fjernarbejdere ret til årlig ferie?"
  • Multi-forespørgsel: Generer 3 forskellige udtryk for det samme spørgsmål, søg med dem alle, kombiner resultaterne. Forskellige ord finder forskellige stykker.
  • HyDE (Hypotetical Document Embeddings): Udskriv først et "muligt svar" til modellen, indlejr derefter og søg efter det imaginære svar. Det imaginære svar findes nogle gange bedre, fordi det i ord er tættere på det rigtige dokument.

# Multi-query (konceptuelle) varianter = model.uret("Udtryk dette spørgsmål på 3 forskellige måder: " + question)tum_sonuc = []for v i varianter: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]

Svag hentning / Stærk hentning

Svag (enkelt trin, kun semantik, konstant k=3):

result = vector_search(question, k=3)# Problem: produktkoden mangler, kan ikke indtaste korrekt del 3 i vanskelige spørgsmål.

Kraftfuld (hybrid + widek + re-rangering + multi-forespørgsel, hvis nødvendigt):

candidates = hybrid_search(rewrite(question, past), k=20)context = reranker.score(question, candidates).first(4)# Både eksakt match og betydning fanges; Den går til de 4 bedste modeller.

Tre mini etuier

Tilfælde 1 — Produktkode undslippet. En ren semantisk søgning på et supportteam kunne ikke finde "RTX-9080" ordret i spørgsmålet "RTX-9080 driverfejl"; Han bragte andre produkter med lignende navne. Da hybridsøgning blev tilføjet, fandtes der nøjagtig kodematchning, og frekvensen af ​​returnering af korrekte artikler steg fra 58 % til 92 %.

Tilfælde 2 — Omplaceringsforskel. En advokat arbejdede med k=5, men det korrekte element er 7-10 det meste af tiden. Han blev i rækkerne. Når k=20 + omplacering blev indført, steg andelen af ​​den korrekte artikel i top 3 fra 61 % til 94 %; Latency øget med kun 300ms - et acceptabelt kompromis.

Case 3 — Opfølgende spørgsmål uden sammenhæng. I en HR-assistent spørger brugeren "hvad med deltidsansatte?" Da jeg spurgte, bragte systemet irrelevante dele. Ved at omskrive forespørgslen (trække "årlig orlov"-konteksten fra fortiden og tilføje "Deltidsansatte har ret til årlig ferie"), steg den korrekte svarprocent fra 40 % til 86 %.

Almindelige fejl

  • Udelukkende afhængig af semantisk søgning: Produktkode, forkortelse, egennavn mangler; Tilføj hybrid.
  • Holder k for lille: Det rigtige stykke kan ikke komme ind på listen; gør den bred og indsnæv den med omrangering.
  • Tænker aldrig på omplacering: Første søgning er uhøflig; Det andet smartpas forbedrer kvaliteten markant.
  • Søgning efter opfølgende spørgsmål som det er: Et spørgsmål uden kontekst søger efter meningsløst; omskrive.
  • Blindt stigende k (uden omrangering): Modellen er fyldt med støj, responsen forvrænges og omkostningerne stiger.
Pas på: Hver teknik tilføjer omkostninger og forsinkelse. Multi-forespørgsel betyder 3-fold søgning, omplacering betyder yderligere modelkald. Start med simpel hybrid + rimelig k først; Mål og tilføj tunge teknikker, hvor det virkelig er nødvendigt. Tilføjelse uden at måle.

Sammenfattende

  • Top-k er balancen mellem genkaldelse og præcision; Generelt er 4-8 en god start.
  • Hybrid søgning kombinerer semantisk søgning med søgeordssøgning (BM25); Gendan nøjagtige matches.
  • Genrangering giver kandidaterne fra den brede indledende søgning en robust model og udvælger de bedste.
  • Forespørgselstransformation (omskrivning, multi-forespørgsel, HyDE) gør vanskelige og kontekstfrie spørgsmål søgbare.
  • Stærkt mønster: bred hentning → flettes sammen med hybrid → smal med omrangering; men tilføj hver teknik ved at måle den.

Ansøgningsopgave

Forbered 6 svære spørgsmål med data fra tidligere enheder: mindst 2 kræver nøjagtige match (produktkode, forkortelse, dato), 2 semantiske (samme emne med forskellige ord), 2 opfølgende spørgsmål uden kontekst. (1) Tænk først på hvert spørgsmål som en ren semantisk søgning og marker manuelt, hvilke dele der kommer op. (2) Reevaluer de samme spørgsmål med hybrid og omrangering tilføjet. (3) Omskriv opfølgende spørgsmål uden kontekst. Notér i tabelform, hvilken teknik der gør en forskel i hvilken spørgsmålstype.

tjekliste

  • [ ] Jeg ved, at top-k er en genkaldelse-præcision balance og et rimeligt startområde.
  • [ ] Jeg kan forklare, hvorfor hybrid søgning genskaber eksakte matches.
  • [ ] Jeg kan anvende to-trins logikken med omrangering (bred → smart smal).
  • [ ] Jeg erkender behovet for at omskrive opfølgende spørgsmål uden kontekst.
  • [ ] Jeg bekræfter, at jeg tilføjede tunge teknikker ved at måle, ikke ved at måle.