ColPali feeds PDF pages directly into a VLM (PaliGemma) to obtain patch-level vectors, encodes the query into token-level vectors with an LLM, and scores with ColBERT-style Late-Interaction MaxSim:
sim(q,d)=i∑jmax⟨qi,dj⟩
where
qi is the
i-th query token vector and
dj is the
j-th image patch vector of the document — each query token takes the max cosine similarity over all patches, then sums. Query and document vectors are computed independently and only interact at retrieval time (Late-Interaction), so document vectors are precomputed offline.