Skip to main content
Research

Aspect dilution: several vectors beat one, and why

A document about several things gets one embedding that is an average of all of them. The measurement of that loss, the control that separates more vectors from better-aligned vectors, and the stress test that shows how much of the gain is capacity.

The claim and the confound

In short: Cards have to beat an equally large set of blind chunks, not just the single vector, or the experiment measures capacity rather than the idea.

Giving a document several cards means giving it several embeddings. Cutting the same document into arbitrary windows also means several embeddings. If cards beat a single pooled vector, that proves nothing about purposes, because chunks would beat it too. Every experiment therefore carries three arms.

The encoder is the same in every arm (all-MiniLM-L6-v2, a small general-purpose sentence encoder), everything is scored at document level, and the control is matched on units per document.

Aspect dilution on a controlled corpus

In short: As a document grows from one aspect to ten, the pooled index falls from 0.815 to 0.294 nDCG@10; any multi-vector representation holds it above 0.63.

Each synthetic document concatenates k passages drawn from k of ten unrelated topic pools (legal, logistics, finance, engineering, personnel, marketing, facilities, research, security, procurement). Every passage realises one fact, a query asks about one fact in wording that shares no template with the passages, and every document carrying a passage that realises the queried fact is relevant. Relevance therefore comes from the generative process rather than from an assumption that one document is the answer; relevance sets grow from 3.7 documents per query at k=1 to 33 at k=10. Five hundred documents and two hundred queries per setting.

Measured result

Retrieval as the number of aspects per document grows

nDCG@10 on the synthetic corpus, 200 queries per setting, seed 13. At k=1 all arms are the same document, which the measurement confirms.

0.2000.4000.6000.80012345710Aspects per document (k)nDCG@10Purpose cards, hand-written anchorsPurpose cards, template anchorsMatched blind chunksPooled, one vector
  • Pooled, one vector
  • Matched blind chunks
  • Purpose cards, template anchors
  • Purpose cards, hand-written anchors

The pooled index collapses and does not recover. Splitting the document, by any method, holds retrieval up. The purpose cards pull away from the matched chunks from k=5 onward, and the hand-written anchors (a practitioner's topical description of each aspect, carrying none of the generator's phrasing) do better than the anchors rendered from the generator's own templates.

Table view
CategoryPooled, one vectorMatched blind chunksPurpose cards, template anchorsPurpose cards, hand-written anchors
10.8150.8320.799n/a
20.4850.7380.734n/a
30.3940.6770.6840.694
40.3550.6570.678n/a
50.3770.6380.7020.742
70.3560.6760.7310.774
100.2940.6330.7420.803

Source: Benchmark repository, results/e0_dilution/metrics.json and results/e1_anchor_sensitivity/metrics.json, commit 92c18cb (2026-08-22). Reproduced on a second machine to within 5e-8.

Against the matched chunk control, cards built from hand-written anchors score +0.023 at k=3 (p=0.12, not significant), +0.099 at k=5, +0.098 at k=7, and +0.188 at k=10 (95 percent interval +0.152 to +0.225, p=0.0001, 135 wins to 34 losses), while using 9.8 units per document against the control's 13.0, which is 25 percent fewer embeddings. The earlier template-anchor version of the same experiment gave +0.109 at k=10. The reason the cruder anchors do better is intuitive once seen: a topical description is a better prototype for an aspect than one rendered sentence carrying one specific fact.

The mechanism behaves as the theory says it should. The mean cosine similarity between a query and its target document's best card stays flat across k (0.476 at k=1, 0.466 at k=10), while the pooled vector's similarity decays monotonically from 0.476 to 0.225. Treating the pooled vector as the normalised mean of k near-orthogonal aspect vectors predicts a decay of one over the square root of k; the measured ratio follows k to the power −0.32, above the prediction at every k. Aspects drawn from natural language are not orthogonal, since all the passages share register and syntax, and encoder similarities occupy a narrow cone that compresses differences. The orthogonality argument is an upper bound on dilution, not a prediction the data confirm.

Capacity or alignment? The LIMIT test

In short: On a benchmark built to break single-vector retrieval, purpose cards recover almost everything, but so does a fine enough blind window. Most of the benefit is capacity.

LIMIT is constructed to expose the representational ceiling of single-vector retrieval: for a fixed embedding dimension, some combinations of documents can never be returned together as a top-k result by any single-vector index, a bound that state-of-the-art embedders visibly hit (Weller, Boratko, Naim, Lee, arXiv:2508.21038, Aug 2025). Each document names a person and lists the things they like; each query asks who likes one specific thing. The small variant has 46 documents with 44 attributes each and 1,000 queries. The task looks trivial and defeats dense retrievers, and it hands over an unambiguous aspect decomposition for free: one card per attribute.

Measured result

LIMIT-small: five systems, one encoder

nDCG@10 over 1,000 queries. Every delta against the pooled vector is significant at p=0.0001 after Holm correction.

BM25 keyword search
0.997
Dense, pooled
0.314
Dense, 30-word chunks (4 per document)
0.390
Dense, per-attribute cards (44 per document)
0.988
Cards fused with BM25
0.997
0.0000.2500.5000.7501.000

Keyword search wins outright, because LIMIT queries name an exact attribute. The pooled dense vector fails; per-attribute cards recover it; the hybrid matches BM25. The 30-word chunk arm here is not a matched control: it has 4 units per document against the cards' 44.

Table view
CategorynDCG@10
BM25 keyword search0.997
Dense, pooled0.314
Dense, 30-word chunks (4 per document)0.390
Dense, per-attribute cards (44 per document)0.988
Cards fused with BM250.997

Source: Benchmark repository, results/e1_limit/metrics.json, commit 92c18cb (2026-08-22). Byte-identical on a second machine.

The first reading of this table attributed the 0.674 gain to alignment, because 30-word chunks gained only 0.076. An adversarial re-run, described on the method page, varied only the chunk granularity and found that nDCG@10 is a smooth function of units per document.

Measured result

Blind windows against units per document

The same text, the same encoder, only the window width varied. Cards sit at 44 units per document.

0.4000.6000.8001.0004.010.824.736.844Units per documentnDCG@10Per-attribute cardsBlind sliding windows
  • Blind sliding windows
  • Per-attribute cards

A semantically blind three-word sliding window, with no taxonomy and no anchors, recovers 0.610 of the 0.674 that cards gain. The residual card advantage at matched capacity is +0.064. Dropping the card template and using the bare attribute string beats the framed cards by a further +0.010 (p=0.0001).

Table view
CategoryBlind sliding windowsPer-attribute cards
4.00.390n/a
10.80.611n/a
24.70.892n/a
36.80.924n/a
44n/a0.988

Source: Adversarial review of the benchmark repository at commit 1cec616, 2026-08-20; reported in the programme's review record.

Two things follow. Capacity is necessary and explains most of the LIMIT result; the decomposition has to match the query distribution for the remainder to appear. And LIMIT supplies a perfect decomposition for free while its queries are effectively exact-attribute lookups, which is why BM25 wins outright and the hybrid only matches it. Real corpora arrive undecomposed, the taxonomy must be designed and may be misaligned, so the honest reading of the table is an upper bound on what alignment can buy. The storage cost is also a property of the corpus: 44 cards per document here, far above the small constant the pattern implies elsewhere.

What this establishes

Independently measured The synthetic and LIMIT results reproduced byte-for-byte or to floating-point precision across two machines and two processor architectures.

The research behind this page
  • Benchmark repository: results/e0_dilution, results/e1_anchor_sensitivity, results/e1_limit, commit 92c18cb, 2026-08-22.
  • Weller, Boratko, Naim, Lee, On the Theoretical Limitations of Embedding-Based Retrieval, arXiv:2508.21038, Aug 2025. https://arxiv.org/abs/2508.21038
  • The adversarial review of Sprint R1, 2026-08-20, whose chunk-granularity re-run produced the second chart.
  • The papers behind the recommendation for the multi-vector literature this sits in.

On this page