What breaks when you put vectors from TWO different embedding models in one index?
Mixing vectors from two embedding models in one index breaks retrieval silently. The two models live in unrelated coordinate systems, so cross-model cosine is noise; no error is raised.
Imagine two friends who each invent their own private map of a city. On one friend's map, north is up. On the other's, north is to the right. The street names look similar, but the grid coordinates do not line up. If you ask 'which point is closest to (3, 4)?' the answer depends on whose map you are reading. Library catalog systems work the same way. Two librarians each build a private filing scheme of meaning. Drop addresses from both schemes into one drawer and ask 'which is nearest my new search?' and you get nearest by accident answers, not nearest by meaning, and nothing in the drawer warns you the schemes do not match.
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.
This question looks simple and trips up engineers who have not yet operated a production retrieval system. The trap is that the vector database appears to accept anything. Upsert succeeds, queries return results, dashboards stay green. Everything looks normal except recall, which is quietly worse than it should be.
The core insight is that an embedding model defines a private coordinate system. Two models, even with the same output dimension, build incompatible spaces. The vector database is just storage; it does not enforce semantic compatibility. The discipline is on the application side.
Why two embedding models are not interchangeable
Each embedding model is a separately trained neural network. Contrastive training (InfoNCE, MNRL, triplet) arranges items in a learned space such that paired items are close in cosine and unrelated items are far apart. The training data, loss, temperature, and any instruction-tuning all shape that space.
Two different training runs produce different spaces. The basis vectors are not aligned. Direction 'dog-related' in model A might be a mixture of directions in model B. The 1536-dim space from text-embedding-3-small and the 1536-dim space from Voyage-3 share only their dimensionality and the unit-sphere normalization (if both L2-normalize).
A mathematical way to see it: there is no learned orthogonal transformation that maps one model's space onto another's such that pairwise cosines are preserved. Procrustes alignment on a paired held-out set can do approximate alignment for academic purposes, but no production stack does this; the alignment loss is too high.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- Pinecone, Weaviate, Qdrant, and pgvector all accept any vector of the indexed dimension; none enforces a model-id check by default. The discipline lives in the application layer.
- OpenAI's embedding migration docs explicitly recommend a parallel-index pattern with full re-embedding when moving from text-embedding-3-small to text-embedding-3-large.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhy does the vector database not raise on a model mismatch?
The database stores opaque float arrays. It has no notion of which model produced them. The check has to live in the application layer (model_id metadata + query-time validation).
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.
Assuming that two embedding models with the same output dimension are interchangeable, so you can save cost by leaving old vectors alone after a model upgrade.
60 second bullets to scan on the way to the call.
Why two embedding models occupy unrelated coordinate systems
Silent failure mode (no DB error, recall drift only)
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.