Pick the right Matryoshka truncation level given a strict storage budget
Sweep a ladder of truncation dimensions on a labeled eval set, plot recall@k versus storage cost, and pick the smallest dimension that clears your quality floor.
Imagine you have a giant photo and you need to shrink it to fit your phone wallpaper. You could pick a random small size, or you could try a few sizes side by side and see which one still looks good enough to recognize. Picking the right Matryoshka size for your data is the same. There is no universally correct number, because the right answer depends on your photo and your phone. The honest approach is to try several sizes against your own labeled examples, watch how well people still recognize the picture, and pick the smallest size that still passes your bar. Anyone who tells you 'always use 256' or 'always use the maximum' is guessing.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Picking a Matryoshka truncation dimension is one of the rare interview questions where the right answer is a procedure rather than a number. The point of Matryoshka representation learning is to make embedding dimensionality a deploy-time choice; the corresponding production discipline is to make that choice empirically, against your own workload, rather than by rule of thumb.
The four candidate answers in the question reflect the four ways teams typically fail at this decision. 'Always max dim' wastes storage and ignores the design intent. 'd=256 sweet spot' takes a corpus-specific result and rebrands it as a universal rule. 'Power of two for indexes' confuses irrelevant implementation details with the actual cost-quality decision. Only the sweep plot pick procedure adapts to the workload, which is exactly why Matryoshka was designed to support it.
This answer walks through the procedure, the shape of the cost-quality curve, why the distractors fail in instructive ways, and the operational discipline around re-sweeping.
The procedure: sweep, plot, pick the elbow
Step one is building an eval set drawn from your own workload. The minimum useful size is a few hundred queries with at least one known-good document each. For higher-precision regimes (NDCG@1, MRR on long-tail queries) you may need more, but a few hundred is enough to see the shape of the curve. The critical property is that the eval set reflects production traffic: query length distribution, vocabulary, intent mix, and language coverage should all match. An off the shelf benchmark like MTEB is a poor substitute because it measures a different distribution.
Step two is running retrieval at each candidate dimension in a ladder. A good default ladder is the geometric one: {128, 256, 512, 1024, 1536, 3072} for a model with native 3072 dim. The geometric spacing keeps storage costs comparable across steps and surfaces the elbow at whichever d it actually lives.
Step three is the plot. Put the metric on the y-axis (recall@10 is the standard choice for retrieval-as-a-funnel) and storage cost per million documents on the x-axis. The curve has a predictable shape: quality rises sharply at the smallest dimensions, then bends through an elbow, then flattens. The elbow is the regime where the marginal dimension stops buying meaningful quality.
Step four is the pick. Choose the smallest d whose quality clears your floor with a safety margin. The 'safety margin' matters because the eval-set metric is itself a sample estimate of true quality; picking exactly at the floor leaves you exposed to variance.
Document the choice. Future readers (possibly you, six months later) will benefit from knowing what eval set was used, what model version was current, and what the curve looked like at the time of the decision.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- OpenAI's text-embedding-3-large documentation explicitly recommends evaluating the `dimensions` parameter against your own data rather than picking a default.
- Nomic Embed v1.5 ships truncation-quality curves in its release notes specifically so users can pick d empirically against their own workload.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow large does the labeled eval set need to be for the sweep to give a stable signal?
A few hundred queries with at least one known-good document each is typically enough for recall@10 to stabilize. Tighter metrics like NDCG@1 need more data. Compute confidence intervals via bootstrap to confirm the curve is stable.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Picking the truncation dim by reputation or round number. The right d depends on your corpus, your quality floor, and your storage budget. Only a sweep tells you the actual trade curve.
60 second bullets to scan on the way to the call.
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.