Je RAG-systeem vindt de juiste passage wel. Alleen staat hij op plek acht, en je stuurt alleen de top vijf door. Het antwoord dat je gebruiker krijgt is daardoor net verkeerd, terwijl de informatie gewoon in je documenten stond.
Dat is het probleem waar een reranker voor bestaat. In deze gids zet je er in drie stappen een van Cohere tussen.
Stap 1: begrijp waar de stap zit
Een gewone RAG-pijplijn doet dit: vraag omzetten naar een embedding, de meest gelijkende passages ophalen uit je vectordatabase, die passages in de prompt plakken, taalmodel laat antwoorden.
De zwakke plek zit in stap twee. Vectorzoeken vergelijkt embeddings die los van elkaar zijn berekend. Dat is snel genoeg om over miljoenen passages te lopen, maar het meet gelijkenis, niet of een passage jouw vraag echt beantwoordt.
Een reranker doet dat wel. Die krijgt de vraag en de passage tegelijk te zien en beoordeelt de combinatie. Veel preciezer, en veel te duur om over je hele database te draaien. Vandaar de volgorde: haal er ruim op met vectorzoeken, laat de reranker de korte lijst herordenen.
💡 Beginner-tip: zie het als solliciteren. Vectorzoeken is de eerste selectie op cv’s: snel, op trefwoorden en globale gelijkenis. De reranker is het gesprek: langzamer, maar hij ziet wie er echt past. Je nodigt vijftig mensen niet uit voor een gesprek, en je selecteert ook niet op cv alleen.
Stap 2: haal ruimer op dan je nodig hebt
Dit is de aanpassing in je bestaande code. Waar je nu de top vijf ophaalt uit je vectordatabase, haal je er straks bijvoorbeeld vijftig op.
Dat voelt verkeerd, maar het is het hele punt: de reranker kan alleen goede passages naar boven halen als ze in de lijst zitten. Haal je er vijf op, dan herordent hij vijf middelmatige.
Houd wel de facturering in de gaten. Eén search bij Cohere is één query met maximaal honderd documenten, en documenten langer dan 500 tokens worden automatisch in stukken geknipt waarbij elk stuk apart meetelt. Werk je met lange documenten, knip ze dan zelf al in passages van redelijke lengte, dan houd je zowel je kosten als je resultaten voorspelbaar.
Stap 3: zet de rerank-aanroep ertussen
Installeer de client en zet je API-sleutel in je omgeving:
pip install cohere
export COHERE_API_KEY="jouw-sleutel"
Daarna komt de aanroep tussen je zoekopdracht en je prompt:
import cohere
co = cohere.ClientV2()
# passages = de ~50 resultaten uit je vectordatabase
resultaat = co.rerank(
model="<modelnaam-uit-de-cohere-docs>", # Rerank 4 Fast of Rerank 4 Pro
query=vraag,
documents=passages,
top_n=5,
)
beste = [passages[r.index] for r in resultaat.results]
⚠️ Kopieer de exacte modelnaam uit de documentatie van Cohere. De naamgeving verschuift per versie, en een verouderde string levert een foutmelding op die er onschuldig uitziet.
Wat je nu doorstuurt naar je taalmodel is beste, vijf passages die op de vraag zijn beoordeeld in plaats van op gelijkenis.
Wat het oplevert
Twee dingen tegelijk, en het tweede wordt vaak vergeten.
Je antwoorden worden nauwkeuriger, omdat de relevante passage nu wél in de prompt zit. Dat is de reden dat je het doet.
En je kosten aan de generatiekant dalen. Elke passage in je prompt is een inputtoken die je betaalt. Ga je van twintig passages naar vijf, dan scheelt dat direct. Rerank 4 Fast kost ongeveer 2 dollar per duizend searches, Rerank 4 Pro ongeveer 2,50. Reken één keer uit wat twintig passages per vraag je kosten bij je huidige model, en de vergelijking is snel gemaakt.
Zit je in een AVG-gevoelige toepassing, regel dan vooraf waar de data staat. Cohere biedt EU-hosting, een verwerkersovereenkomst en een self-hosted variant via een enterprise-contract. Dat is een gesprek dat je vóór de implementatie voert.
