colpali-v1.2
by vidore
Late-interaction visual document retrieval: search PDFs as images, not extracted text
vidore/colpali-v1.2mixpeek://image_extractor@v1/vidore_colpali_v1Overview
ColPali retrieves documents by embedding the page image directly, skipping OCR and layout parsing entirely. Instead of one vector per page it produces a grid of patch embeddings and scores a query against all of them with ColBERT-style late interaction, so a match can come from a chart, a table, a diagram or a stamp that text extraction would have flattened or never seen.
This matters because the standard document pipeline, OCR then chunk then embed the text, silently loses exactly the content people search for in technical and financial documents. ColPali treats the page as what it is, a picture, and lets the retrieval model decide what is salient.
The cost is index size: many vectors per page rather than one. That trade is the central design decision in visual document retrieval.
Architecture
PaliGemma-3B vision-language backbone with a LoRA adapter, producing multi-vector page embeddings. Query-document scoring uses ColBERT-style late interaction (MaxSim over patch embeddings) rather than a single dot product, which is what preserves region-level detail.
Mixpeek SDK Integration
// No extractor parameter takes a Hugging Face model id (checked against
// GET /v1/discovery/extractors, which returns 13), so colpali-v1.2 runs
// on your side and the output is upserted through POST
// /v1/namespaces/{namespace_id}/documents/upsert. On Enterprise the other
// path is to upload the weights instead: POST /v1/namespaces/{id}/models
// accepts the huggingface format and a custom plugin loads them.
const res = await fetch(
"https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
{
method: "POST",
headers: {
Authorization: "Bearer API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
collection_id: "col_your_collection",
documents: [
{
document_id: "asset-00412",
// The model produces text, so it lands in payload. Give the
// collection a text vector index and embed that text to make it
// searchable rather than only filterable.
payload: { extracted_text: modelOutput, source_key: "archive/2026/asset-00412" },
vectors: { "text-embedding": embeddingOfModelOutput },
},
],
}),
},
);
// Managed alternative, if this exact model is not the requirement:
// document_graph_extractor@v1 runs intfloat/multilingual-e5-large-instruct
// (1024-d) over a bucket, with no inference of your own.Capabilities
- Retrieves directly from page images, with no OCR or layout parsing step
- Multi-vector page representation with late-interaction scoring
- Matches on charts, tables, figures and stamps that text extraction misses
- Trained and evaluated on the ViDoRe visual document retrieval benchmark
Use Cases on Mixpeek
Explore on Mixpeek
Compare alternatives in this category
Hand-picked tools & platforms compared
Deep-dive technical guide
See how Mixpeek runs models as extractors
Store & search embeddings at scale
Usage-based pricing for pipelines
Compare models, APIs & infrastructure
Specification
Research Paper
ColPali: Efficient Document Retrieval with Vision Language Models
arxiv.orgBuild a pipeline with colpali-v1.2
Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.
Run it on your own data, free