Eenheid 4 / 11

Ophaalstrategieën: Top-k, Hybride, Herrangschikking

Winst:

  • Implementatie van hybride zoeken die top-k-selectie en semantisch zoeken en zoeken op trefwoorden combineert
  • Verhoging van de nauwkeurigheid van de eerste zoekopdracht door herrangschikking
  • Moeilijke vragen beter doorzoekbaar maken met technieken als querytransformatie en HyDE

Je hebt de documenten netjes versnipperd en in de vectordatabase geplaatst. Nu het echte werk: de juiste stukjes ophalen als de gebruiker een vraag stelt. Dit heet ophalen en is de ruggengraat van RAG-kwaliteit. Onthoud de zinsnede "Ophaalkwaliteit = RAG-kwaliteit"; Dit toestel is precies de kunst om die kwaliteit te verbeteren. We behandelen praktische technieken, van top-k-selectie tot hybride zoeken, van herrangschikking tot zoekopdrachttransformatie.

Top-k: Hoeveel stuks nemen we mee?

De meest elementaire instelling: hoeveel stuks (k) er uit de zoekopdracht moeten worden geretourneerd. Als je minder meebrengt (k=1), is de kans groot dat je het juiste stuk mist; Als u te veel toevoegt (k=20), wordt er ruis aan het model toegevoegd en stijgen de tokenkosten.

Maak onderscheid tussen twee concepten. Recall: de snelheid waarmee het juiste stuk wordt opgehaald. Precisie: de snelheid waarmee wat wordt opgehaald relevant is. Het verhogen van k vergroot de herinnering, maar vermindert de precisie. Het doel is om de twee in evenwicht te brengen.

top-k

Impact

geschikte situatie

1-3

Hoge precisie, risico op missen

Simpele vragen met één antwoord

4-8

Saldo; de meeste scenario's

Algemene bedrijfs-RAG

10-20

Hogere herinnering, ruis neemt toe

Met herrangschikking (hieronder)

Tip: Algemeen en krachtig patroon: breed halen (k=20), dan smal met herrangschikking (top 4). Zo mis je niets en geef je een nette context aan het model.

Hybride zoeken: de kracht van twee zoekopdrachten

Semantisch (vector) zoeken legt de betekenis vast, maar mist dingen: volledige productcode ("XR-4471"), zeldzame afkorting, eigennaam, versienummer. Voor deze exacte match-taken is het zoeken op trefwoorden op de ouderwetse manier, vooral het klassieke algoritme genaamd BM25, erg goed.

Hybride zoeken combineert de twee: zowel semantische als trefwoordzoekopdrachten werken, waarbij de resultaten worden gecombineerd. Dus bij een vraag als "Garantieperiode van de

Samenvoegen gebeurt meestal met RRF (Reciprocal Rank Fusion): de track die hoger in beide lijsten staat, komt naar voren.

# Hybride ophalen (conceptueel) sem = vector_search(vraag, k=20) # betekenissleutel = bm25_search(vraag, k=20) # fullwordresult = rrf_merge(sem, sleutel)[:8] # combineer de twee, top 8

Herrangschikking: tweede en slimmere pas

Het eerste telefoontje kan snel maar onbeleefd zijn. Door de kandidaten opnieuw te rangschikken worden de bij de eerste zoekopdracht teruggezonden kandidaten één voor één beoordeeld met een krachtiger model (meestal een cross-encoder – een model dat de vraag en de passage samen leest en de relevantie beoordeelt) en worden de meest relevante naar de top verplaatst.

De logica is deze: de eerste zoekopdracht wijst een groot aantal kandidaten toe voor terugroeping (20 kandidaten), de herrangschikking selecteert de beste 4 voor precisie. Deze aanpak in twee fasen is veel nauwkeuriger dan zoeken in één fase. Het kost wat vertraging en extra verwerking; De winst is een aanzienlijke kwaliteitsverbetering.

# Tweetraps retrieval (conceptuele)kandidaten = hybrid_search(vraag, k=20) # breed, quickscore = reranker.score(vraag, kandidaten) # relevantiescore voor elke kandidaatcontext = Rated.rank()[:4] # top 4

De vraag transformeren

Soms zit het probleem niet in de zoekopdracht, maar in de vraag zelf. Als de gebruiker vraagt: “Hoe zit het met externe medewerkers?” ', dit kan niet alleen worden gezocht (het is niet duidelijk wat voor externe werknemers geldt). Dit zijn de technieken voor querytransformatie:

  • Herschrijven: gebruik de gespreksgeschiedenis om de vraag op zichzelf te stellen: "Wat hebben externe werknemers recht op jaarlijks verlof?"
  • Multi-query: Genereer 3 verschillende uitdrukkingen van dezelfde vraag, zoek met ze allemaal, combineer de resultaten. Verschillende woorden vinden verschillende stukken.
  • HyDE (Hypothetical Document Embeddings): Druk eerst een "mogelijk antwoord" af op het model, sluit vervolgens in en zoek naar dat denkbeeldige antwoord. Het denkbeeldige antwoord wordt soms beter gevonden omdat het qua woorden dichter bij het echte document ligt.

# Multi-query (conceptuele)varianten = model.uret("Expresseer deze vraag op 3 verschillende manieren: " + vraag)tum_sonuc = []for v in varianten: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]

Zwakke terugwinning/sterke terugwinning

Zwak (enkel stadium, alleen semantiek, constante k=3):

result = vector_search(quest, k=3)# Probleem: productcode wordt gemist, kan deel 3 niet correct invoeren bij moeilijke vragen.

Krachtig (hybride + widek + herrangschikking + multi-query indien nodig):

kandidaten = hybrid_search(rewrite(vraag, verleden), k=20)context = reranker.score(vraag, kandidaten).first(4)# Zowel exacte match als betekenis worden vastgelegd; Het gaat naar de beste 4 modellen.

Drie mini-hoesjes

Geval 1 — Productcode is ontsnapt. Een puur semantische zoekopdracht van een ondersteuningsteam kon "RTX-9080" niet woordelijk vinden in de vraag "RTX-9080 driver error"; Hij bracht andere producten met soortgelijke namen mee. Toen hybride zoeken werd toegevoegd, vond exacte codematching plaats en steeg het percentage correcte artikelen van 58% naar 92%.

Geval 2 — Verschil opnieuw rangschikken. Een paralegal werkte met k=5, maar het juiste item is meestal 7-10. Hij bleef in de gelederen. Toen k=20 + herrangschikking werd geïntroduceerd, steeg het percentage dat het juiste artikel in de top 3 stond, van 61% naar 94%; De latentie is met slechts 300 ms toegenomen: een acceptabel compromis.

Geval 3 — Vervolgvraag zonder context. In een HR-assistent vraagt ​​de gebruiker “hoe zit het met parttimers?” Toen ik het vroeg, bracht het systeem irrelevante onderdelen mee. Door de vraag te herschrijven (de context van "jaarlijks verlof" uit het verleden te halen en "Deeltijdwerknemers hebben recht op jaarlijkse vakantie") toe te voegen, steeg het juiste antwoordpercentage van 40% naar 86%.

Veel voorkomende fouten

  • Alleen vertrouwen op semantisch zoeken: productcode, afkorting, eigennaam worden gemist; Voeg hybride toe.
  • K te klein houden: het juiste stuk kan niet in de lijst terechtkomen; maak het breed en smal door opnieuw te rangschikken.
  • Nooit nadenken over een nieuwe rangschikking: de eerste zoekopdracht is onbeleefd; De tweede slimme pas verbetert de kwaliteit aanzienlijk.
  • Zoeken naar vervolgvragen zoals ze zijn: Een vraag zonder context zoekt naar betekenisloos; herschrijven.
  • Blindelings verhogen van k (zonder herrangschikking): Het model is gevuld met ruis, de respons is vervormd en de kosten stijgen.
Let op: elke techniek voegt kosten en vertraging toe. Multi-query betekent drievoudig zoeken, opnieuw rangschikken betekent extra modeloproep. Begin eerst met eenvoudige hybride + redelijke k; Meet en voeg zware technieken toe waar dat echt nodig is. Toevoegen zonder meten.

Samengevat

  • Top-k is de balans tussen herinnering en precisie; Over het algemeen is 4-8 een goed begin.
  • Hybride zoeken combineert semantisch zoeken met zoeken op trefwoord (BM25); Herstelt exacte overeenkomsten.
  • Bij het opnieuw rangschikken worden de kandidaten uit de brede initiële zoekopdracht opnieuw beoordeeld met een robuust model en worden de beste geselecteerd.
  • Querytransformatie (herschrijven, multi-query, HyDE) maakt moeilijke en contextvrije vragen doorzoekbaar.
  • Sterk patroon: breed ophalen → samenvoegen met hybride → smal met herrangschikking; maar voeg elke techniek toe door deze te meten.

Applicatie taak

Bereid 6 moeilijke vragen voor met gegevens uit eerdere eenheden: minstens 2 vereisen exacte overeenkomsten (productcode, afkorting, datum), 2 semantische vragen (hetzelfde onderwerp met andere woorden), 2 vervolgvragen zonder context. (1) Beschouw elke vraag eerst als een puur semantische zoektocht en markeer handmatig welke onderdelen naar voren zullen komen. (2) Evalueer dezelfde vragen opnieuw met hybride en herrangschikking toegevoegd. (3) Herschrijf vervolgvragen zonder context. Noteer in tabelvorm welke techniek verschil maakt bij welk vraagtype.

controlelijst

  • [ ] Ik weet dat top-k een terugroepprecisiebalans is en een redelijk startbereik.
  • [ ] Ik kan uitleggen waarom hybride zoeken exacte overeenkomsten oplevert.
  • [ ] Ik kan de tweestapslogica van herrangschikking toepassen (breed → slim smal).
  • [ ] Ik erken de noodzaak om vervolgvragen zonder context te herschrijven.
  • [ ] Ik bevestig dat ik zware technieken heb toegevoegd door te meten, niet door te meten.