Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Multi-vector / late interaction (ColBERT)

Create a collection multivector and each document is stored as a set of token vectors and ranked by MaxSim late interaction: for each query token, take its best-matching document token, and sum those across the query. This is the ColBERT retrieval model.

How it works

Quiver models a document as a group of ordinary rows over the same row-addressed store, so there is no on-disk format change and the kill -9 crash gate is untouched. The token pool is the set the ANN index serves (candidate generation); candidates are then re-ranked by exact MaxSim with an optional payload filter. A ColBERT corpus — a large pool of low-dimensional vectors — is exactly what the IVF+PQ and disk paths were built to compress, so late interaction showcases the memory-frugality wedge.

Reachable from the embeddable database, REST + gRPC, the MCP server, and the SDKs: upsert_document / search_multi_vector / delete_document.

ColBERTv2 / PLAID compression

For multi-vector collections you can opt into a colbert index: coarse kmeans centroids plus per-token (centroid id, quantized residual code) held in RAM, with the exact token vectors on the encrypted store for the re-rank. Candidate generation prunes by scoring centroids first (PLAID). It is derived and rebuilt from the store on open, so the crash gate stays untouched. Create a multi-vector collection with the colbert index over any transport or SDK.

Maintenance

Document upsert/delete maintain the token-pool index incrementally (no full rebuild), so a document write is size-independent.

The full design, including the deferred native variable-stride document-row storage (gated on a reference-hardware locality measurement), is in ADR-0028 and ADR-0034.