Chunking vs. layered ranking
Chunking alone does not determine retrieval quality. You can split documents into chunks in many different ways, but if the system still returns every chunk from a matched document, the model’s context window will fill with irrelevant text. Vespa uses layered ranking to avoid that outcome.
Chunking creates the retrieval units. It determines how documents are split into passages, how those passages are embedded, and how they are stored.
Layered ranking decides which of those passages are actually returned. It scores the chunks inside each winning document and selects only the ones most relevant to the query.
Chunk-level vs. Token-Level Multi-Vector
You have already seen chunk-level multi-vector at work. When Vespa embeds each chunk and stores the vectors inside the parent document, that array of embeddings is the chunk-level representation. It is the standard approach, and it is what most people mean when they call a system multi-vector.
The word gets used a second way, and the two are easy to confuse. Token-level multi-vector comes from late-interaction models like ColBERT and ColPali. Instead of one vector per chunk, these models produce one vector per token, then score a passage with MaxSim, matching every query token against every passage token.
The two work at different granularities and solve different problems. Chunking decides how a document is divided into passages. Token-level representation decides how finely each passage is matched. They compose rather than compete. You chunk a document into passages, retrieve the best passages with chunk-level vectors, then, where precision matters most, score those passages token by token to catch fine-grained matches a single pooled vector would blur.