Vinster:
- Implementering av hybridsökning som kombinerar top-k-val och semantisk sökning och nyckelordssökning
- Öka noggrannheten för den första sökningen med omrangering
- Gör svåra frågor mer sökbara med tekniker som frågetransformation och HyDE
Du strimlade dokumenten snyggt och lade in dem i vektordatabasen. Nu är det verkliga arbetet: att hämta rätt bitar när användaren ställer en fråga. Detta kallas retrieval och är ryggraden i RAG-kvalitet. Kom ihåg frasen "Hämtning kvalitet = RAG kvalitet"; Denna enhet är precis konsten att förbättra den kvaliteten. Vi kommer att täcka praktiska tekniker från top-k-val till hybridsökning, från omrangering till frågetransformation.
Top-k: Hur många bitar kommer vi att ta med?
Den mest grundläggande inställningen: hur många bitar (k) som ska returneras från sökningen. Om du tar med mindre (k=1) är risken stor att du missar rätt pjäs; Om du lägger till för mycket (k=20) kommer det att lägga till brus till modellen och tokenkostnaden kommer att öka.
Skilj mellan två begrepp. Minns: den hastighet med vilken den korrekta biten är bland de som hämtas. Precision: den hastighet med vilken det som hämtas är relevant. Att öka k ökar återkallningen men minskar precisionen. Målet är att balansera de två.
topp-k
Inverkan
lämplig situation
1-3
Hög precision, risk för miss
Enkla frågor med ett svar
4-8
Balans; de flesta scenarier
Allmänt företags RAG
10-20
Högre minne, brus ökar
Med omplacering (nedan)
Tips: Vanligt och kraftfullt mönster: hämta brett (k=20), smalna sedan med omplacering (topp 4). På så sätt missar du ingenting och du ger modellen ett rent sammanhang.
Hybridsökning: Kraften med två sökningar
Semantisk (vektor) sökning fångar innebörden men missar saker: fullständig produktkod ("XR-4471"), sällsynt förkortning, egennamn, versionsnummer. För dessa uppgifter med exakt matchning är gammaldags nyckelordssökning – särskilt den klassiska algoritmen som kallas BM25 – mycket bra.
Hybridsökning kombinerar de två: både semantiska sökningar och nyckelordssökningar fungerar och kombinerar resultaten. Således, i en fråga som "Garantiperiod för
Sammanfogning görs vanligtvis med RRF (Reciprocal Rank Fusion): spåret som är högre i båda listorna kommer fram.
# Hybridhämtning (konceptuell)sem = vector_search(question, k=20) # meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # fuse the two, top 8
Omplacering: Andra och Smarter Pass
Det första samtalet kan vara snabbt men oförskämt. Omrangeringen ger kandidaterna som returneras av den första sökningen en efter en med en kraftfullare modell (vanligtvis en korskodare — en modell som läser frågan och passagen tillsammans och poängsätter relevansen) och flyttar de mest relevanta till toppen.
Logiken är denna: den första sökningen tilldelar ett stort antal kandidater för återkallelse (20 kandidater), omrangeraren väljer de bästa 4 för precision. Denna tvåstegsmetod är mycket mer exakt än en enstegssökning. Det kostar en del förseningar och ytterligare bearbetning; Vinsten är en betydande kvalitetshöjning.
# Tvåstegshämtning (konceptuella) kandidater = hybrid_search(fråga, k=20) # bred, quickscore = reranker.score(fråga, kandidater) # relevanspoäng för varje kandidatkontext = rated.rank()[:4] # topp 4
Förvandla frågan
Ibland ligger problemet inte i sökningen, utan i själva frågan. Om användaren frågar "hur är det med distansarbetare?" ', kan detta inte sökas ensamt (det är inte klart vad som är för distansarbetare). Här är frågetransformationsteknikerna:
- Skriv om: Använd konversationshistorik för att göra frågan fristående: "Vad har distansarbetare rätt till årlig semester?"
- Multi-query: Generera 3 olika uttryck för samma fråga, sök med alla, kombinera resultaten. Olika ord hittar olika bitar.
- HyDE (Hypotetical Document Embeddings): Skriv först ut ett "möjligt svar" på modellen, bädda sedan in och sök efter det tänkta svaret. Det imaginära svaret hittas ibland bättre eftersom det i ord ligger närmare det verkliga dokumentet.
# Multi-query (konceptuella) varianter = model.uret("Uttryck denna fråga på 3 olika sätt: " + question)tum_sonuc = []för v i varianter: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Svag hämtning / Stark hämtning
Svag (enstegs, endast semantik, konstant k=3):
result = vector_search(question, k=3)# Problem: produktkoden saknas, kan inte ange korrekt del 3 i svåra frågor.
Kraftfull (hybrid + widek + omrangering + multi-query vid behov):
candidates = hybrid_search(rewrite(question, past), k=20)context = reranker.score(question, candidates).first(4)# Både exakt matchning och betydelse fångas; Den går till de 4 bästa modellerna.
Tre minifodral
Fall 1 — Produktkod escaped. En ren semantisk sökning på ett supportteam kunde inte hitta "RTX-9080" ordagrant i frågan "RTX-9080 drivrutinsfel"; Han tog med sig andra produkter med liknande namn. När hybridsökning lades till inträffade exakt kodmatchning och andelen returnerade korrekta artiklar ökade från 58 % till 92 %.
Fall 2 — Omplaceringsskillnad. En paralegal arbetade med k=5 men det korrekta objektet är 7-10 för det mesta. Han stannade i leden. När k=20 + omplacering infördes, ökade andelen av den korrekta artikeln i topp 3 från 61 % till 94 %; Latensen ökade med endast 300ms – en acceptabel kompromiss.
Fall 3 — Följdfråga utan sammanhang. I en HR-assistent frågar användaren "hur är det med deltidsanställda?" När jag frågade kom systemet med irrelevanta delar. Genom att skriva om frågan (att dra "årsledighet"-kontexten från det förflutna och lägga till "Deltidsanställda har rätt till årlig semester"), ökade den korrekta svarsfrekvensen från 40 % till 86 %.
Vanliga misstag
- Förlitar sig enbart på semantisk sökning: Produktkod, förkortning, egennamn saknas; Lägg till hybrid.
- Att hålla k för litet: Rätt pjäs kan inte komma in i listan; gör det brett och smalt in det med omplacering.
- Tänker aldrig på att ranka om: Första sökningen är oförskämd; Det andra smarta passet förbättrar kvaliteten avsevärt.
- Söka efter följdfrågor som den är: En fråga utan sammanhang söker meningslöst; skriva om.
- Blint ökande k (utan omrangering): Modellen fylls med brus, responsen förvrängs och kostnaden ökar.
Se upp: Varje teknik lägger till kostnad och fördröjning. Multi-query betyder trefaldig sökning, omrangering innebär ytterligare modellanrop. Börja med enkel hybrid + rimligt k först; Mät och lägg till tunga tekniker där det verkligen behövs. Lägger till utan att mäta.
Sammanfattningsvis
- Top-k är balansen mellan återkallelse och precision; Generellt är 4-8 en bra början.
- Hybridsökning kombinerar semantisk sökning med nyckelordssökning (BM25); Återställer exakta matchningar.
- Omrangering gör om kandidaterna från den breda initiala sökningen med en robust modell och väljer ut de bästa.
- Frågetransformation (omskrivning, multi-query, HyDE) gör svåra och sammanhangsfria frågor sökbara.
- Starkt mönster: bred apport → slå samman med hybrid → smal med omrangering; men lägg till varje teknik genom att mäta den.
Applikationsuppgift
Förbered 6 svåra frågor med data från tidigare enheter: minst 2 som kräver exakta matchningar (produktkod, förkortning, datum), 2 semantiska (samma ämne med olika ord), 2 följdfrågor utan sammanhang. (1) Tänk först på varje fråga som en ren semantisk sökning och markera manuellt vilka delar som kommer upp. (2) Omvärdera samma frågor med hybrid och omrangering tillagd. (3) Skriv om följdfrågor utan sammanhang. Notera i tabellform vilken teknik som gör skillnad i vilken frågetyp.
checklista
- [ ] Jag vet att top-k är en återkallningsprecisionsbalans och ett rimligt startintervall.
- [ ] Jag kan förklara varför hybridsökning återställer exakta matchningar.
- [ ] Jag kan tillämpa tvåstegslogiken för omrangering (bred → smart smal).
- [ ] Jag inser behovet av att skriva om följdfrågor utan sammanhang.
- [ ] Jag bekräftar att jag lagt till tunga tekniker genom att mäta, inte genom att mäta.