Interviewvragen voor multimodale Machine Learning Engineers
15 geselecteerde interviewvragen over multimodale machine learning, gegroepeerd per senioriteitsniveau. Gebruik ze om basisprincipes, praktische afwegingen en redeneringen op seniorniveau voor productieomgevingen door te nemen.
1Leg het kernidee van contrastief leren uit voor het uitlijnen van beeld- en tekstrepresentaties, en waarom een gedeelde embedding-ruimte nuttig is.
Het kernidee van contrastief leren voor beeld-tekstrepresentatie is om beeld- en tekstinvoer te projecteren in een gedeelde latente vectorruimte, zodanig dat semantisch overeenkomende (positieve) paren dichter bij elkaar worden getrokken, terwijl niet-overeenkomende (negatieve) paren verder uit elkaar worden geduwd. Door aparte visie- en tekstencoders te trainen met behulp van gelijkenisdoelstellingen (zoals cosinusgelijkenis), lijnt het model de semantiek van continue visuele pixels uit met discrete tekstuele tokens. Een gedeelde embedding-ruimte is nuttig omdat deze multimodale taken direct kan oplossen via vector-gelijkeniszoekopdrachten. In deze uniforme ruimte worden cross-modale retrieval (afbeeldingen vinden op basis van tekstquery's, of vice versa) en zero-shot classificatie (een afbeeldings-embedding evalueren tegen prompt-embeddings zoals 'een foto van een hond') eenvoudige, zeer efficiënte nearest-neighbor of puntproduct-zoekopdrachten zonder dat taakspecifieke classificatiehoofden nodig zijn.
import torch
import torch.nn.functional as F
# image_features: [B, D], text_features: [B, D]
image_norm = F.normalize(image_features, dim=-1)
text_norm = F.normalize(text_features, dim=-1)
# Pairwise cosine similarity matrix: [B, B]
sim_matrix = image_norm @ text_norm.T
# Positive pairs lie on the diagonal; off-diagonals are negatives
2Leg de CLIP-stijl dual-encoder architectuur uit en de aannames die deze maakt over beeld-tekst interactie.
De CLIP-stijl dual-encoder architectuur bestaat uit twee afzonderlijke, ontkoppelde neurale netwerken: een visuele encoder (bijv. Vision Transformer of ResNet) die beelden verwerkt tot visuele feature-vectoren, en een tekst-encoder (bijv. Transformer) die tekst verwerkt tot tekst-feature-vectoren. Beide representaties worden geprojecteerd in een gemeenschappelijke embedding-dimensie, waar uitlijning wordt gemeten met behulp van een eenvoudige similariteitsmetriek (zoals genormaliseerde cosinus-similariteit of het inproduct). De fundamentele architecturale aanname is 'late fusion' (of gefactoriseerde cross-modale interactie): beeld- en tekstmodaliteiten interacteren niet op tussenliggende lagen via 'cross-attention' of 'token-level interactions'. In plaats daarvan wordt aangenomen dat de volledige semantiek van elke modaliteit comprimeerbaar is tot één dichte vector-samenvatting, en dat cross-modale interactie volledig ontbindbaar is in een inproduct. Deze afweging prioriteert extreme retrieval-efficiëntie (waardoor offline voorberekening van beeld-embeddings mogelijk is voor vectorzoekopdrachten op miljardenschaal) boven fijnmazig cross-modaal redeneren (zoals 'token-to-region grounding' of complexe compositionele ruimtelijke relaties).
3Beschrijf de intuïtie achter het projecteren van beeld- en tekstfeatures in een gemeenschappelijke genormaliseerde ruimte en het optimaliseren van cosinusgelijkenis.
Het projecteren van beeld- en tekstfeatures in een gemeenschappelijke genormaliseerde ruimte (doorgaans op een eenheidshypersfeer via `L2`-normalisatie) en het optimaliseren van cosinusgelijkenis ontkoppelt de semantische richting van een `embedding` van zijn vectormagnitude. Zonder normalisatie kan een onbeperkt inproduct het model in staat stellen de trainingsverliezen te minimaliseren door triviaal de featurenormen op te blazen voor eenvoudige of frequente samples, in plaats van hun semantische richtingen uit te lijnen. Het normaliseren van vectoren op de eenheidshypersfeer begrenst de gelijkeniswaarden strikt binnen `[-1, 1]`, wat ervoor zorgt dat afstand puur overeenkomt met hoekscheiding. Dit stabiliseert optimalisatiegradiënten, voorkomt representatie-explosie of -instorting, en zorgt ervoor dat elke sample in een batch gelijkwaardig bijdraagt aan het verlies, ongeacht modaliteitsspecifieke schaalverschillen. In combinatie met een leerbare temperatuurparameter regelt dit de scherpte van de kansverdeling over de hypersfeer om de uitlijning van ware paren in balans te brengen met een uniforme spreiding van negatieve paren.
import torch
import torch.nn.functional as F
# Unnormalized embeddings with extreme norm differences
v = torch.tensor([[10.0, 0.0], [0.1, 0.0]])
t = torch.tensor([[5.0, 0.0], [0.1, 0.0]])
# Raw dot products: heavily distorted by magnitude (50.0 vs 0.01)
raw_dot = v @ t.T
# L2 Normalized:
v_norm = F.normalize(v, p=2, dim=-1)
t_norm = F.normalize(t, p=2, dim=-1)
cosine_sim = v_norm @ t_norm.T
print('Cosine similarity matrix:\n', cosine_sim)
4Leg visual grounding en Referring Expression Comprehension (REC) uit als taalgestuurde lokalisatie, en hoe deze verschillen van gelijkheid op afbeeldingsniveau (image-level similarity).
Visual grounding (vaak geoperationaliseerd als Referring Expression Comprehension, of REC) is de taak om een specifiek visueel gebied, bounding box of segmentatiemasker binnen een afbeelding te lokaliseren op basis van een natuurlijke taalverwijzende expressie (bijv. 'de man met een blauwe jas naast de lamp'). Het behandelt lokalisatie als geconditioneerd op taal, wat vereist dat het model linguïstische ruimtelijke relaties, attributen en objectidentiteiten oplost tot op pixel- of ruimtelijke coördinaten. Dit verschilt fundamenteel van gelijkheid op afbeeldingsniveau (image-level similarity), die een enkele holistische semantische affiniteitsscore berekent tussen een hele afbeelding en een tekstreeks (bijv. bepalen of een afbeelding overeenkomt met het onderschrift 'een man in een park'). Gelijkheid op afbeeldingsniveau produceert geen ruimtelijke coördinaten, kan afbeeldingen matchen waarbij het verwezen object niet uniek is gelokaliseerd, en faalt vaak bij het oplossen van fijngranulaire verwijzende disambiguatie tussen meerdere vergelijkbare objecten in dezelfde scène.
# Image-level similarity:
# Input: Image I, Text T ("black dog sitting on the left")
# Output: scalar score s in [0, 1] or dot product
similarity_score = image_text_model(image, text)
# Referring Expression Comprehension (Visual Grounding):
# Input: Image I, Text T ("black dog sitting on the left")
# Output: Bounding box coordinates [x_min, y_min, x_max, y_max]
bbox = grounding_model.predict_box(image, text)
5Leg cross-attentie uit als een fusie-mechanisme tussen visuele tokens en teksttokens in multimodale transformers.
In multimodale transformers fungeert cross-attentie als een asymmetrisch fusie-mechanisme waarbij één modaliteit queries (Q) stuurt om aandacht te richten op keys (K) en values (V) die zijn geëxtraheerd uit een andere modaliteit. Wanneer bijvoorbeeld visuele tokens als queries fungeren en teksttokens als keys en values, berekent elk visueel token een aandachtsgewogen som over tekstuele representaties, waardoor visuele features dynamisch worden geconditioneerd op tekstuele context (en vice versa wanneer tekst visuele tokens bevraagt). Mathematisch gezien, voor een visuele sequentie X_v en een tekstuele sequentie X_t, berekent cross-attentie: `CrossAttention(Q_v, K_t, V_t) = softmax((Q_v * K_t^T) / sqrt(d)) * V_t` waarbij `Q_v = X_v * W_Q`, `K_t = X_t * W_K`, en `V_t = X_t * W_V`. Dit mechanisme stelt het model in staat om fijnkorrelige semantische uitlijning van token naar token over modaliteiten heen uit te voeren, ongeacht verschillen in sequentielengtes of initiële feature-ruimtes. Bidirectionele fusie kan worden bereikt door twee symmetrische cross-attentie-lagen te gebruiken (bijv. van visie naar taal en van taal naar visie) of door cross-attentie-blokken af te wisselen.
6Leg uit hoe beeldaugmentaties zoals `cropping`, `color jitter` en compressie de contrastieve uitlijning tussen beeld en tekst kunnen helpen of schaden.
Bij multimodaal contrastief leren (zoals CLIP) dienen beeldaugmentaties een ander doel dan bij unimodaal zelfgesuperviseerd leren (zoals SimCLR). Omdat beelden worden gecontrasteerd met gekoppelde tekstbijschriften (`text captions`) in plaats van met een andere geaugmenteerde weergave van hetzelfde beeld, kunnen augmentaties zowel de representatieleer (`representation learning`) ten goede komen als schaden.
**Hoe Augmentaties Helpen:**
1. **Voorkomen van `Shortcut Learning`:** Milde augmentaties (zoals willekeurig bijsnijden (`random cropping`), milde horizontale spiegelingen (`horizontal flips`) en matige `color jitter`) voorkomen dat de visie-encoder afhankelijk wordt van triviale visuele artefacten op laag niveau (bijv. achtergrondkleurdistributies, hoekwatermerken of ruimtelijke positie-bias).
2. **Invariantie van gezichtspunt en schaal:** Matig schalen en bijsnijden moedigen het model aan om semantische objecten te identificeren over variërende brandpuntsafstanden en perspectieven, wat zorgt voor robuuste `zero-shot generalization`.
**Hoe Augmentaties Kunnen Schaden (Semantische Mismatch):**
1. **Agressief willekeurig bijsnijden:** Als een bijschrift een specifiek object beschrijft ('een vogel zittend op een tak') en een agressieve crop de vogel volledig wegsnijdt, wordt de resterende crop (alleen bladeren/lucht) nog steeds gedwongen om uit te lijnen met het vogelbijschrift. Dit introduceert valse supervisorische ruis en vermindert de `retrieval precision`.
2. **Sterke `Color Jittering` / `Hue Inversion`:** Veel bijschriften beschrijven expliciet kleurattributen ('een gele taxi', 'een rode appel'). Sterke kleurverschuivingen veranderen de taxi in blauw of de appel in groen, wat een directe semantische tegenstrijdigheid veroorzaakt tussen de visuele input en het tekstbijschrift.
3. **Zware onscherpte en compressie:** Agressieve ruimtelijke downsampling, JPEG-compressie of Gaussiaanse onscherpte vernietigen fijne tekstuele aanwijzingen (OCR (Optical Character Recognition)-tekst op borden, logo's, fijne texturen) die expliciet worden beschreven in gekoppelde bijschriften.
**Praktische regel:** Multimodale contrastieve training vereist aanzienlijk conservatievere augmentaties (bijv. `Random Resized Crop` met een schaalbereik van [0.5, 1.0] en milde spiegeling) dan unimodaal zelfgesuperviseerd leren.
7Leg beeld-tekst-retrieval als taak uit en beschrijf het verschil tussen gesloten-set matching en open-wereld retrieval over grote corpora.
Beeld-tekst-retrieval is de taak om corresponderende gegevens over modaliteiten heen te vinden, gegeven een query in één modaliteit (tekst-naar-beeld of beeld-naar-tekst). Dit wordt doorgaans bereikt door zowel beelden als teksten in een gedeelde representatieruimte te mappen, waarbij gelijkenis correleert met relevantie. Gesloten-set matching veronderstelt een vaste, vooraf gedefinieerde kandidatenpool met bekende ground-truth paren (zoals standaard Flickr30k- of MS-COCO-benchmarks). Dit maakt uitputtende paarsgewijze gelijkenisberekening of één-op-één cross-attentie mogelijk. Open-wereld retrieval opereert over enorme, dynamische, ongecurateerde corpora (bijvoorbeeld miljoenen tot miljarden web- of catalogusitems) waar kandidatenpools onbeperkt zijn, afleiders en vals-negatieven veel voorkomen, en schaalbare zoekindices voor geschatte naaste buren (ANN) (bijv. Faiss, HNSW) vereist zijn, omdat uitputtende cross-attentie over alle paren computationeel onhaalbaar is.
import torch
import torch.nn.functional as F
# Closed-set matching: full pairwise similarity matrix over fixed evaluation set
image_embeds = F.normalize(torch.randn(1000, 512), dim=-1)
text_embeds = F.normalize(torch.randn(1000, 512), dim=-1)
sim_matrix = torch.matmul(text_embeds, image_embeds.T) # (1000, 1000)
# Open-world retrieval: query vector queried against an indexed corpus using ANN
# index = faiss.IndexHNSWFlat(512, 32)
# distances, indices = index.search(query_embed, k=10)
8Vergelijk InfoNCE-stijl softmax contrastieve verliesfuncties met paarsgewijze sigmoïde verliesfuncties voor het leren van beeld-tekst-embeddings.
InfoNCE-stijl contrastieve verliesfuncties (zoals in CLIP) behandelen uitlijning als een categorisch meerkassenclassificatieprobleem. Voor elk sample berekent het een softmax-distributie over alle kandidaat negatieve paren in de batch, waarbij de gelijkenissen over de gehele batchpool worden genormaliseerd. Daarentegen behandelen paarsgewijze sigmoïde contrastieve verliesfuncties (zoals in SigLIP) elke invoer in de beeld-tekst-gelijkheidsmatrix als een onafhankelijke binaire classificatietaak, waarbij een sigmoïde functie en binaire cross-entropieverliesfunctie per paar wordt toegepast (positieve paren richten zich op +1, negatieve paren op -1). De belangrijkste verschillen zijn: 1. Koppeling versus ontkoppeling: InfoNCE koppelt alle negatieven via de globale softmax-partitiedeler, wat concurrentie veroorzaakt waarbij de moeilijkste negatieven de gradiënten domineren. SigLIP ontkoppelt alle paren, waarbij elk onafhankelijk wordt geëvalueerd. 2. Gedistribueerde schaalbaarheid en efficiëntie: InfoNCE vereist het verzamelen van gelijkheidsmatrices over GPU's (Graphics Processing Units) voor globale normalisatie (een 'all-gather' communicatieknelpunt). De onafhankelijke paarsgewijze verliesfunctie van SigLIP kan lokaal worden berekend zonder globale cross-GPU softmax-normalisatie, wat de schaalefficiëntie verbetert en stabiel blijft over zowel kleine als zeer grote batchgroottes.
import torch
import torch.nn.functional as F
def siglip_loss(sim_matrix, temperature, bias):
# sim_matrix: [B, B] dot product of normalized embeddings
# targets: 1 on diagonal (positive), -1 on off-diagonals (negative)
B = sim_matrix.size(0)
targets = 2 * torch.eye(B, device=sim_matrix.device) - 1.0
logits = sim_matrix * temperature + bias
# Pairwise binary cross entropy with log-sigmoid
return -torch.mean(F.logsigmoid(targets * logits))
9Leg uit hoe 'harde negatieven' en 'valse negatieven' het beeld-tekst contrastief leren beïnvloeden.
Harde negatieven en valse negatieven hebben tegengestelde effecten op beeld-tekst contrastief leren:
1. **Harde negatieven** zijn niet-overeenkomende paren die semantisch of visueel zeer dicht bij de anker liggen (bijvoorbeeld een afbeelding van een Siberische husky gepaard met het bijschrift 'een Alaskan malamute'). Harde negatieven leveren krachtige, informatieve gradiëntsignalen op. Ze dwingen het model om verder te kijken dan grove categoriefuncties en om fijnkorrelige visueel-linguïstische details en scherpe beslissingsgrenzen te leren.
2. **Valse negatieven** treden op wanneer willekeurig geselecteerde 'negatieve' paren in de batch feitelijk geldige semantische overeenkomsten zijn (bijvoorbeeld twee verschillende foto's van golden retrievers waarbij de ene als negatief wordt gekoppeld tegen 'een schattige golden retriever in een park'). Valse negatieven bestraffen correcte semantische uitlijningen door het model te dwingen geldige overeenkomende representaties uit elkaar te duwen. Dit corrumpeert gradiënten, verslechtert de representatiekwaliteit en onderdrukt legitieme synonomie en visuele variantie. Verzachtende strategieën voor valse negatieven omvatten zachte/label-smoothing contrastieve doelstellingen, gedebiaste contrastieve leer, dataset-deduplicatie en multi-positieve matching.
import torch
import torch.nn.functional as F
# Image 0 and Image 1 both depict 'a red sports car'
# Text 0: 'a red sports car', Text 1: 'a fast red car'
# In standard InfoNCE, Text 1 is treated as a negative for Image 0.
sim = torch.tensor([[0.95, 0.90], # Image 0 similarities
[0.88, 0.94]]) # Image 1 similarities
loss_img0 = -F.log_softmax(sim / 0.07, dim=-1)[0, 0]
print(f'InfoNCE loss for Image 0: {loss_img0.item():.4f}')
# High similarity to false negative Text 1 (0.90) heavily penalizes the model
10Vergelijk globale beeld-tekst-uitlijning met regio-woord- of token-niveau uitlijndoelen.
Globale beeld-tekst-uitlijning brengt een hele afbeelding en een hele tekstsequentie in enkele holistische embedding-vectoren (bijv. via gepoolde features in CLIP) en lijnt deze uit met behulp van een contrastieve doelstelling zoals InfoNCE. Dit biedt uitstekende schaaleigenschappen, snelle indexeerbare representaties voor retrieval en sterke semantische clustering. Het lijdt echter aan grove ruimtelijke granulariteit, worstelt met fijne visuele details, compositionaliteit, tellen en ruimtelijke relaties, en vertoont vaak problemen met attribuutbinding. In tegenstelling hiermee werkt regio-woord- of token-niveau uitlijning op fijnkorrelige subafbeeldingsgranulariteiten (bijv. patch-tokens, object bounding-box-features) en subzinsgranulariteiten (bijv. woord- of subwoord-tokens). Methoden zoals FILIP, GLIP of VinVL lijnen tokens uit via fijnkorrelige contrastieve verliezen (zoals token-wise max-sim of Chamfer-similariteit) of optimale transport / cross-attention uitlijning. Dit behoudt expliciet ruimtelijke en linguïstische compositionele details, wat objectdetectie, visuele grounding en precieze attribuutbinding mogelijk maakt, maar ten koste gaat van hogere computationele en geheugencomplexiteit, hogere inferentielatentie en luidruchtigere uitlijnsignalen.
import torch
import torch.nn.functional as F
# visual_tokens: [B, N_v, D], text_tokens: [B, N_t, D]
def token_level_maxsim_similarity(visual_tokens, text_tokens):
v_norm = F.normalize(visual_tokens, dim=-1)
t_norm = F.normalize(text_tokens, dim=-1)
# Compute similarity matrix between all visual and text tokens: [B, N_t, N_v]
sim_matrix = torch.bmm(t_norm, v_norm.transpose(1, 2))
# Text-to-image: For each word token, find maximum visual token similarity and average
t2i_sim = sim_matrix.max(dim=-1).values.mean(dim=-1) # [B]
return t2i_sim
11Vergelijk early fusion, late fusion, intermediate fusion, cross-attention fusion, gated fusion en concatenatie voor multimodale modellen.
Multimodale fusie strategieën integreren visuele en taal (tekst) signalen op verschillende dieptes en structurele configuraties:
1. Early Fusion: Ruwe of laag-niveau features (bijv. afbeeldingspatch-embeddings en woordtoken-embeddings) worden in het invoerstadium samengevoegd en naar een enkele gedeelde backbone geleid. Dit maakt diepe crossmodale interacties vanaf laag nul mogelijk, maar is rekenkundig duur en maakt het hergebruik van unimodale voor-training moeilijker.
2. Late Fusion: Modaliteiten worden onafhankelijk verwerkt door diepe unimodale backbones tot globale representatievectoren, die pas helemaal aan het einde worden gecombineerd via eenvoudige aggregatie (bijv. puntproduct, cosinusgelijkheid of een ondiepe MLP). Dit is extreem efficiënt en ideaal voor indexeerbare retrieval, maar kan fijngranulaire crossmodale interacties niet vastleggen.
3. Intermediate Fusion: Unimodale backbones verwerken inputs gedurende meerdere lagen, en fusie vindt plaats in tussentijdse stadia via gedeelde lagen of laterale verbindingen, wat een balans creëert tussen unimodale specialisatie en multimodale interactie.
4. Cross-Attention Fusion: Maakt gebruik van multi-head aandacht waarbij de ene modaliteit queries aanlevert en de andere keys/values. Het biedt een hoge representatiecapaciteit met token-naar-token conditionering, geschikt voor heterogene sequentielengtes.
5. Gated Fusion: Maakt gebruik van geleerde gating-mechanismen (bijv. sigmoïde- of tanh-gates) om dynamisch de bijdrage van elke modaliteit of fusielaag te wegen op basis van contextuele betrouwbaarheid, waardoor wordt voorkomen dat één modaliteit voorgrainde gewichten domineert of corrumpeert.
6. Concatenatie: Voegt featurevectoren of tokenreeksen samen langs de feature-dimensie (feature-concatenatie) of sequentielengte-dimensie (token-concatenatie vóór een uniforme transformer). Het is eenvoudig en niet-parametrisch, maar feature-concatenatie vereist uitgelijnde ruimtelijke/temporele dimensies, terwijl token-concatenatie kwadratisch schaalt met de totale sequentielengte in self-attention.
12Vergelijk dual-encoder retrievalmodellen met cross-encoder rerankers voor beeld-tekstmatching wat betreft interactiecapaciteit, nauwkeurigheid en latentie.
Dual-encoder (bi-encoder) modellen en cross-encoder rerankers vertegenwoordigen twee verschillende paradigma's voor beeld-tekstmatching, met fundamentele afwegingen tussen interactiecapaciteit, nauwkeurigheid en latentie: 1. Interactiecapaciteit: - Dual-Encoders (bijv. CLIP): Verwerken beeld en tekst via afzonderlijke, ontkoppelde backbones. Multimodale interactie is strikt laat en oppervlakkig, beperkt tot een enkel inproduct of cosinusgelijkenis tussen globaal gepoolde vectoren. Ze missen cross-modale interacties op tokenniveau. - Cross-Encoders (bijv. UNITER, ViLT, ALBEF multimodale tak): Concatenatie van visuele en teksttokens in een gedeelde transformer of gebruiken cross-attention lagen. Elk visueel token kan met elk teksttoken interageren over meerdere lagen, wat diepgaande cross-modale redenering mogelijk maakt. 2. Nauwkeurigheid: - Dual-encoders bereiken een lagere nauwkeurigheid bij complexe compositorische zoekopdrachten, ruimtelijke relaties, negatie en fijnmazige attribuutmatching vanwege de bottleneck van single-vector representaties. - Cross-encoders bereiken significant hogere nauwkeurigheid bij complexe, fijnmazige en compositorische beeld-tekstmatchingstaken. 3. Latentie en Schaalbaarheid: - Dual-encoders maken het mogelijk om beeld-embeddings offline voor te berekenen en te indexeren in een vectordatabase (bijv. Milvus, FAISS). Tijdens de inferentietijd wordt alleen de tekstquery gecodeerd, en het zoeken over miljoenen kandidaten vereist slechts lichtgewicht approximate nearest neighbor (ANN) inproducten (sub-milliseconde latentie). - Cross-encoders vereisen het uitvoeren van het volledige gezamenlijke neurale netwerk voor elk kandidaatpaar (afbeelding, tekst) op querytijd (O(N) forward passes voor N kandidaten), wat resulteert in ordes van grootte hogere latentie en ze rekenkundig onhaalbaar maakt voor retrieval in de eerste fase over grote corpora. In praktische productiesystemen is een tweefasenpijplijn standaard: een dual-encoder haalt de top-K kandidaten op (bijv. K=100) met lage latentie, gevolgd door een cross-encoder die deze herordent voor hoge nauwkeurigheid.
13Ontwerp een multimodaal RAG (Retrieval-Augmented Generation)-systeem voor PDF's of handleidingen die tekst, tabellen, grafieken, screenshots, diagrammen en ingebedde afbeeldingen bevatten.
Een end-to-end Multimodaal Retrieval-Augmented Generation (RAG)-systeem voor complexe visuele documenten (PDF's, handleidingen, rapporten) omvat vier kernarchitectuurfasen: 1. Ingestie & Layout-bewuste Parsing: PDF-pagina's worden verwerkt via layout-bewuste documentmodellen (bijv. LayoutLM, DocTR) of vision-parsing-pijplijnen om content te segmenteren in gestructureerde blokken: tekstpassages, gestructureerde tabellen (geconverteerd naar HTML/Markdown met cel-spans), gerenderde grafiekafbeeldingen met dataseries, en op zichzelf staande diagrammen of screenshots met ruimtelijke bounding boxes. 2. Multimodale Indexering & Dubbele Representatie: - Visuele Assets (Grafieken, Screenshots, Diagrammen): Opgeslagen als afbeeldingsuitsneden met dichte multimodale embeddings (bijv. SigLIP, CLIP, of ColPali visual patch tokens) samen met synthetische tekstuele samenvattingen en OCR-tekst gegenereerd door een VLM (Visual Language Model), opgeslagen in een dichte tekstindex. - Tabellen: Opgeslagen als gestructureerde Markdown/HTML in tekstvector- en BM25-indices. - Tekst: Opgedeeld per semantische sectie en geïndexeerd via dichte embeddings en sparse keywords. 3. Hybride Retrieval & Multimodale Reranking: - Eerste-Fase Retrieval: Voert parallelle retrieval uit over sparse BM25 (keywords, OCR-tekst, tabelopmaak), dichte tekstvectoren en visuele embedding-indices (ANN-zoekopdracht). - Fusie & Reranking: Voegt kandidaten samen (bijv. via Reciprocal Rank Fusion) en scoort topitems met behulp van een multimodale cross-encoder of visueel late-interactiemodel (waarbij query-tekst wordt gescoord tegen afbeeldingsuitsneden met hoge resolutie en geparseerde tekst). 4. Multimodale Contextopbouw & Gefundeerde Generatie: De top-$k$ multimodale context – gerenderde afbeeldingspatches, tabelschema's en tekstpassages met document-/paginametadata – wordt doorgegeven aan een instructie-getuned VLM (bijv. GPT-4o, Claude 3.5 Sonnet, of open-source Qwen2-VL). De generatieprompt dwingt bronprovenance af door expliciete citaties te vereisen (paginanummers, figuurnummers of bounding boxes).
from dataclasses import dataclass
from typing import Optional, List
@dataclass
class MultimodalChunk:
chunk_id: str
document_id: str
page_number: int
modality_type: str # 'text', 'table', 'chart', 'diagram'
text_payload: str # Raw text or structured Markdown/HTML
vlm_caption: Optional[str] = None # Synthetic summary of visual content
bbox: Optional[List[float]] = None # [x0, y0, x1, y1]
image_crop_path: Optional[str] = None
dense_embedding: Optional[List[float]] = None
# Indexing strategy: Text search covers text_payload + vlm_caption;
# Multimodal search matches dense_embedding or visual tokens.
14Leg uit hoe de evaluatie van multimodale RAG (Retrieval-Augmented Generation) afzonderlijk de terughaalkwaliteit, bewijsbenutting, herkomst en trouw aan het uiteindelijke antwoord moet meten.
Het evalueren van multimodale RAG vereist het ontleden van het systeem in vier ontkoppelde evaluatiedimensies om precies te bepalen of fouten voortkomen uit terughalen, contextconsumptie, citeringsnauwkeurigheid of generatie:
1. **Terughaalkwaliteit:** Evalueert of de retriever de noodzakelijke visuele en tekstuele fragmenten identificeert. Belangrijke meetgegevens omvatten multimodale `Recall@K`, `NDCG@K` en `MRR`. Voor visuele elementen omvat dit ook Visuele IoU (Intersection over Union) / `Bounding-Box Recall` (of de opgehaalde afbeeldingsuitsnede het relevante diagram/de grafiek bevat) en Modaliteits-terughaalbalans (zodat niet-tekstuele modaliteiten zoals tabellen en grafieken niet systematisch worden gemist).
2. **Bewijsbenutting (Voldoende en Noodzakelijk):** Meet of het generatiemodel werkelijk afhankelijk is van het opgehaalde multimodale bewijs, in plaats van antwoorden puur vanuit parametrisch geheugen te genereren. Dit wordt gemeten via Contextrelevantie (precisie van opgehaalde visuele/tekstuele tokens die de vraag ondersteunen), Bewijsnoodzaak / `Ablation Testing` (het maskeren of weglaten van de opgehaalde grafiek/tabel om te verifiëren of het antwoord mislukt), en `cross-attention` attributieanalyse.
3. **Herkomst & Citeringsnauwkeurigheid:** Meet of bronvermeldingen nauwkeurig en verifieerbaar zijn. Geëvalueerd via Precisie, `Recall` en F1 over citaten (documentnamen, paginanummers, figuur-ID's of `bounding box`-coördinaten). Geautomatiseerde controles verifiëren dat de geciteerde `bounding box` of pagina daadwerkelijk het `ground-truth` bewijs bevat dat nodig is om de vraag te beantwoorden.
4. **Trouw en Correctheid van het Uiteindelijke Antwoord:**
* **Trouw / Verankering:** Beoordeelt of elke gegenereerde bewering wordt geïmpliceerd door de opgehaalde multimodale context zonder hallucinatie (doorgaans geëvalueerd via VLM (Vision-Language Model)-als-rechter die de implicatie van beweringen controleert tegen tekst- en visuele uitsneden).
* **Feitelijke Correctheid:** Evalueert of de gegenereerde respons overeenkomt met de `ground truth`.
* **Weigeringsrobuustheid:** Test of het model correct weigert te antwoorden wanneer de opgehaalde context irrelevant of tegenstrijdig is.
# Evaluation record schema for a single Multimodal RAG query:
eval_record = {
'retrieval_quality': {
'hit_at_k': True, # Top-3 chunks contain target diagram
'visual_bbox_iou': 0.85 # Retrieved crop overlap with true figure region
},
'evidence_utilization': {
'necessity_ablation_passed': True # Removing chart causes answer to fail
},
'provenance': {
'page_match': True, # Cited Page 12 (Ground Truth Page 12)
'figure_id_match': True # Cited 'Figure 4'
},
'faithfulness': {
'claim_entailment_score': 1.0, # All claims entailed by context
'hallucination_detected': False
}
}
all_passed = all(all(metrics.values()) for metrics in eval_record.values())
print(f'System passes all decoupled checks: {all_passed}')
15Bespreek het bijwerken van multimodale terughaalmodellen in productie wanneer galerij-embeddings en -indices op grote schaal moeten worden ververst.
Het bijwerken van een multimodaal terughaalsysteem op grote schaal introduceert een representatiedriftprobleem: nieuw gegenereerde embeddings bevinden zich in een andere geometrische latente ruimte en kunnen niet direct worden vergeleken met bestaande galerij-embeddings zonder ernstige terugval in `recall`. Daarom vereisen `zero-downtime` updates ofwel `dual-index blue/green` deployments, compatibiliteitsleren (zoals `backward-compatible training` of `transformation adapters`), of gefaseerde herindexeringspijplijnen. In een standaard `blue/green` herindexeringsworkflow berekenen offline batchtaken nieuwe embeddings over de galerij en bouwen ze een nieuwe vectorindex (zoals HNSW (Hierarchical Navigable Small Worlds) of IVF (Inverted File Index)). Terwijl de herbouw loopt, blijft live zoekverkeer de actieve verouderde index bevragen. Nieuwe binnenkomende items worden afgehandeld via `dual-writing` of streaming `change data capture` (CDC)-logs, zodat beide indices actueel blijven. Zodra de nieuwe index is gevalideerd via `shadow traffic` en opgewarmd in het geheugen, schakelt het verkeer atomisch over naar de nieuwe encoder en index, waarna de oude index buiten gebruik wordt gesteld. Als alternatief beperkt `backward-compatible learning` de nieuwe query-encoder om zich af te stemmen op de verouderde galerijruimte, waardoor onmiddellijke upgrades van het querymodel mogelijk zijn terwijl de galerij asynchroon in de loop van de tijd wordt aangevuld.
class MultimodalRetrievalRouter:
def __init__(self, v1_service, v2_service, dual_write=True):
self.v1 = v1_service # Model v1 + Index v1
self.v2 = v2_service # Model v2 + Index v2
self.active_version = "v1"
self.dual_write = dual_write
def search(self, query_multimodal):
# Route query strictly to the encoder matching the active index
if self.active_version == "v1":
return self.v1.search(query_multimodal)
return self.v2.search(query_multimodal)
def ingest_new_item(self, item):
# Dual-write during migration window so the new index is up-to-date at cutover
self.v1.index_item(item)
if self.dual_write and self.v2.is_ready_for_ingest:
self.v2.index_item(item)