← Blog

RAG

Image RAG: welke lagen in de pipeline echt waarde leveren

Image RAG ziet er simpel uit op een whiteboard. In productie doet de helft van de lagen echt werk, de andere helft is theater, en de rerank redt stilletjes het geheel.

Jacob Molkenboer· Oprichter · A Brand New Company· 4 jun 2026· 6 min
Open eiken kaartenbaklade met één lichtgroene kaart rechtop, stapel crèmekleurige kaarten ernaast, koperen tussenschot, ivoren papier.

Een document-agent voor een Nederlandse verzekeringsmakelaar haalde op ongeveer één query op de negen polisclausules uit het verkeerde product. De vector index was gezond. De embeddings kwamen uit een vision model dat goed had gescoord op benchmarks. Toch bleef de verkeerde pagina in de top drie staan. Twee dagen aan audit kwamen steeds bij dezelfde vraag uit. Welke lagen van een image-RAG-stack dragen echt hun eigen gewicht, en welke zijn theater?

De vier stappen waar de meeste image-RAG-stacks op uitkomen

Na een jaar deze pipelines bouwen voor klanten, komt bijna elke pipeline die we hebben opgeleverd uit op dezelfde vier stappen. Render, embed, retrieve, rerank. De namen verschillen. De vorm niet.

Render is het stuk waar je de bron, wat het ook is (een PDF, een gescand contract, een Figma-export, een screenshot van een Notion-tabel), omzet in een schone afbeelding van een pagina of regio. Embed maakt van elke afbeelding een vector. Retrieve doet een approximate nearest-neighbour lookup tegen een query embedding. Rerank gebruikt een zwaarder cross-attention model om de top vijftig hits te herordenen voordat er ook maar één bij de LLM aankomt.

In die laatste stap investeren de meeste teams te weinig. Het is ook het goedkoopste in de stack.

Waar embeddings hun kosten verdienen

Het stille nieuws van de afgelopen twaalf maanden was ColPali. In plaats van een pagina te embedden in één vector van 768 dimensies, embed je 'm in een grid van patch-vectoren en scoor je een query tegen dat grid met een late-interaction operator. De kosten zijn reëel. De opslag gaat ongeveer een factor honderd omhoog. Maar de recall-curves zijn geen toeval. Op documentpagina's met gemengde tekst en figuren mis je niet langer de pagina waar het antwoord in een grafiek staat in plaats van in de tekst eromheen.

Dat is de embedding die zijn kosten verdient. Niet omdat de wiskunde slim is, maar omdat één vector per pagina nooit genoeg was om een pagina te representeren die tegelijk een tabel, een paragraaf, een header-logo en drie bijschriften bevat.

Heb je geen page-level retrieval nodig (jouw corpus is puur fotomateriaal, of puur UI-screenshots), dan voldoet een single-vector CLIP of SigLIP embedding nog steeds prima. Er is geen winst in betalen voor ColPali-opslag als jouw documenten geen noemenswaardige layout hebben.

Wat chunking betekent zodra afbeeldingen in beeld komen

Chunking is het woord dat in image RAG het hardst stuk gaat. Voor tekst gaat chunking over het opdelen van een lang document in vindbare units. Voor afbeeldingen betekent het bijna het tegenovergestelde. Je splitst geen afbeelding op. Je kiest de korrel waarop een pagina een unit is, of een regio een unit is, of een figuur plus zijn bijschrift een unit is.

Wij hanteren in productie drie korrelgroottes:

  • Pagina als unit, voor contracten, rapporten en polisdocumenten waar het antwoord bijna altijd binnen één pagina zit.
  • Regio als unit, voor gescande papers met meerdere kolommen en oude PDFs waar de layout het antwoord over kolommen verdeelt.
  • Figuur plus bijschrift als unit, voor technische documentatie waar de grafiek en het bijschrift het antwoord zijn en de tekst eromheen vulling is.

De fout die we het vaakst zien is dat teams één korrelgrootte kiezen en het hele corpus daardoorheen forceren. Het corpus is heterogeen. De chunking hoort dat ook te zijn.

Waarschuwing

Doe geen regiodetectie door een vision LLM te vragen om 'de regio's op deze pagina te vinden'. Je geeft meer uit aan inference dan aan het embedding-model. Gebruik een kleine open-source layout-detector getraind op PubLayNet of DocLayNet en hou de LLM uit deze stap.

De rerank als goedkope verzekering

Rerank is de stap die als eerste wegbezuinigd wordt zodra de rekening binnenkomt, en de stap die wij als laatste zouden schrappen. Een kleine cross-encoder over de top vijftig hits kost bijna niets. De winst is het verschil tussen 'de juiste pagina staat op positie zeven' en 'de juiste pagina staat op positie één'. Als je drie resultaten in een LLM context window stopt, is positie zeven onzichtbaar.

Cohere, Voyage en Jina publiceren allemaal vision-aware rerankers in dezelfde prijsklasse, in de orde van een fractie van een cent per query bij top-50. Is je retrieve-stap fatsoenlijk maar ontbreekt de rerank, dan dropt jouw pipeline stilletjes juiste antwoorden omdat het juiste document de top drie nooit haalde.

Wat we als eerste zouden schrappen bij krimpend budget

Dit is de volgorde waarin wij dingen zouden schrappen.

  1. De OCR-stap die parallel loopt aan de image embedding. Is jouw embedding-model ColPali of een opvolger, dan leest die de tekst van de gerenderde pagina al. De aparte OCR-pass is een dubbele beveiliging die je indexeringskosten verdubbelt voor een marginale recall-winst.
  2. De metadata-extractie LLM-pass. We hebben teams gezien die enkele honderden euro's per tienduizend pagina's uitgeven om een LLM 'onderwerp, auteur, datum' uit elke pagina te laten halen. De retriever heeft het niet nodig. De query van de gebruiker doet die filtering al op query time.
  3. De preprocessing-stap die 'de query herschrijft naar drie queries'. Soms nuttig. Vaker een manier om tokens uit te geven zonder meetbare recall-winst.

Schrap geen rerank. Schrap geen layout-bewuste chunking. Schrap niet de render-DPI.

Het patroon is consistent in elke pipeline die we auditen. De onderdelen van de stack die eruitzien alsof ze hun kosten waard zijn (OCR, metadata-extractie, query rewriting) zijn dat vaak niet. De onderdelen die op overhead lijken (rerank, render-kwaliteit, layout-detectie) zijn dat bijna altijd wel.

De audit die je vandaag kunt draaien

Pak twintig queries uit je productie-logs. Kijk voor elke query naar de top tien opgehaalde chunks vóór rerank, en de top drie erna. Tel hoe vaak de juiste chunk vóór rerank op positie vier tot tien stond en erna op positie één tot drie. Dat getal vertelt je hoeveel werk je rerank doet. Zit het boven de twintig procent, dan is rerank de goedkoopste winst in je hele pipeline.

De makelaar waar we mee begonnen had rerank volledig overgeslagen en duwde elk documenttype door dezelfde chunking-korrel. Twee dagen werk om een vision rerank toe te voegen en de chunking-korrel per documenttype te groeperen brachten het percentage verkeerde clausules van elf procent terug naar onder de één procent. Het meeste van ons RAG- en kennisbankwerk volgt diezelfde vorm: één of twee ontbrekende stappen die het meeste schade aanrichten.

Trek vanavond die twintig queries. Noteer de rerank-delta. Laat dat ene getal je vertellen waar de volgende euro budget thuishoort.

Kern

In image RAG verdienen de onderdelen die op overhead lijken (rerank, render-kwaliteit, layout-detectie) meestal hun kosten. De onderdelen die op werk lijken vaak niet.

FAQ

Heb ik nog wel image RAG nodig als mijn model native PDFs kan lezen?

Voor losse vragen niet. Voor herhaalde queries over een groot corpus is retrieval nog steeds goedkoper en beter te auditen. De kosten van native vision context schalen lineair met de corpus-omvang; retrieval niet.

Is ColPali altijd beter dan single-vector CLIP?

Nee. Voor corpora van pure foto's of UI-screenshots zonder layout voldoet single-vector CLIP of SigLIP en is dat ongeveer 100x goedkoper in opslag. ColPali verdient zich terug op documentpagina's met gemengde tekst en figuren.

Wat kost een rerank-pass eigenlijk per query?

Vision-aware rerankers van Cohere, Voyage en Jina draaien op een fractie van een cent per query bij top-50. De kosten zijn verwaarloosbaar vergeleken met embedding-opslag of LLM-inference.

Wat is de snelste manier om te zien of mijn pipeline een rerank mist?

Pak twintig productie-queries. Verschijnt de juiste chunk vaak op positie vier tot tien in je ruwe retrieval, dan verlies je antwoorden die een rerank-pass had gered.

ragknowledge baseai agentsarchitecturetooling

Iets bouwen?

Start een project