Can Multiple Embedding Models Coexist in One Private Search System?

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

Yes. One private search system can store and query embeddings from multiple models at the same time. The safe approach is to treat each embedding model as its own vector space with explicit dimensions, distance metric, version, and index configuration. Do not mix incompatible vectors into one anonymous column and assume they are comparable.

Multiple models are useful for migrations, multilingual search, image-plus-text retrieval, domain-specific embeddings, or A/B testing. The complexity appears when you need to combine results across those spaces.

Why Would You Keep More Than One Embedding Model?

Reason Example
Model migration Old encoder stays live while new vectors backfill
Multilingual search General English model + multilingual model
Different modalities Text embeddings + image embeddings
Domain specialization General documents + code embeddings
Quality testing A/B retrieval before replacing production model
Late interaction Dense retriever + ColBERT-style reranking

A private knowledge base evolves. Locking every document permanently to the first embedding model you chose makes upgrades unnecessarily disruptive.

Different Models Produce Different Vector Spaces

Two models may both emit 768-dimensional vectors and still be incompatible. The coordinates only have meaning relative to the model that produced them.

Document A
  |
  +-- Model v1 -> vector_v1 [768]
  |
  +-- Model v2 -> vector_v2 [1024]
  |
  +-- image model -> vector_image [512]

A query generated with Model v2 should search the v2 space. Comparing it directly against Model v1 vectors is meaningless even if an API accepts the dimensions.

Qdrant's current named vector documentation explicitly supports multiple vectors of different sizes and types in the same point, each under a separate named vector space.

Use a Model Registry, Not Just a Vector Name

Record enough metadata to reproduce every embedding:

embedding_space: text_v2
model_id:        example/model-name
model_revision:  sha-or-version
vector_dim:      1024
metric:          cosine
normalized:      true
chunking_policy: semantic-v3
created_at:      2026-09-03

Chunking belongs in the registry too. If you change both the embedding model and how documents are split, retrieval changes for two reasons. Keeping the pipeline version explicit makes comparison and rollback possible.

-15% OFF
Single board computer zimaboard2

One Collection With Named Vectors or Separate Collections?

Both designs can be correct.

Design Best When Trade-off
Named vectors on same object Same documents/payload across models Larger object/index footprint
Separate collections Different schemas, lifecycle, scale, or permissions More synchronization work
One Postgres table + model_id SQL-centric stack Indexes must be scoped correctly

Weaviate's collection documentation similarly supports multiple named vector spaces per object, each with its own vectorizer and index configuration.

If permissions differ—for example, family documents versus work documents—separate collections can still be cleaner than putting every representation into one object.

Can pgvector Store Different Dimensions?

Yes. Pgvector's documentation shows a generic vector column with a model_id, then uses expression and partial indexes for rows of a specific dimensionality.

The principle is the same: keep the model identity in the data model and build the ANN index only over compatible rows.

Do Not Compare Raw Similarity Scores Across Models

This is the most subtle failure. A cosine similarity of 0.78 from Model A does not necessarily mean the same quality as 0.78 from Model B. Score distributions depend on model training, normalization, metric, domain, and index behavior.

If you want one result list from two embedding models, first retrieve separately:

Query
  |
  +-- Model A -> top 20 results + ranks
  |
  +-- Model B -> top 20 results + ranks
                      |
                      v
               fusion / reranker
                      |
                      v
                  final top 10

Safer combination methods include rank fusion, model-specific score normalization calibrated on your data, or a cross-encoder/reranker that evaluates the candidate text after retrieval.

Weaviate's multi-target search documentation exposes join strategies including normalized/weighted combinations, which illustrates why cross-space fusion needs an explicit strategy rather than naïve raw-score sorting.

How Do You Migrate to a New Embedding Model Without Downtime?

Do not delete the old embeddings first. Use a parallel migration:

  1. register the new model and vector space;
  2. generate new embeddings for newly ingested documents;
  3. backfill old documents in batches;
  4. run shadow searches against both spaces;
  5. compare recall and task success on real questions;
  6. switch the default query space;
  7. keep the old vectors for a rollback window;
  8. remove them only after confidence is high.

Weaviate notes that adding a new named vector does not automatically re-vectorize existing objects. That behavior is useful to remember because “schema supports new model” and “all old data has new vectors” are separate milestones.

Multiple Embeddings Increase Storage Faster Than Many Users Expect

Every extra vector representation can add another dense array plus another ANN index. A second embedding model can therefore roughly multiply the vector/index portion of the database even though the original documents are stored only once.

Estimate:

vector bytes ~=
  document chunks
  x dimensions
  x bytes per element
  x number of embedding spaces

+ ANN index overhead
+ metadata / payload indexes

Quantization or half-precision indexes can reduce the footprint, but test retrieval quality before applying compression to every model.

This ties back to the question of local knowledge-base architecture: embeddings are replaceable derived data, while the source documents and metadata are the durable assets that let you rebuild them.

Use Different Models for Different Query Routes

You do not have to search every vector space for every question. Route by need:

Query Embedding Space
English home manuals general_text_v2
Chinese + English notes multilingual_v1
Source-code question code_v1
Find similar photo image_v1
Unknown / broad search two spaces + rank fusion

A small query classifier can select the appropriate space, while ambiguous searches can fan out across two representations and merge the results.

Permissions Must Apply Before Fusion

Do not retrieve unauthorized candidates from every vector space and hope the final reranker hides them. Apply user/document permissions at each retrieval stage so sensitive chunks do not enter the candidate set, logs, or reranker prompt.

For private NAS search, the same access-control rule must survive model migrations. A new index should inherit the document's permission metadata rather than becoming a temporary unprotected copy.

The private AI assistant guide provides the larger context: vector search is useful only when it respects the same private-data boundaries as the file store.

Multi-Embedding QA Checklist

  • Give every embedding space a unique model/version ID.
  • Record dimensions, normalization, and distance metric.
  • Version chunking and preprocessing.
  • Never query one model's vector against another model's index.
  • Do not directly compare raw scores across spaces without calibration.
  • Apply permissions inside every retrieval path.
  • Backfill new vectors before changing the default.
  • Evaluate on real questions and known relevant documents.
  • Keep the previous index through a rollback window.
  • Include extra vectors and indexes in disk/RAM capacity planning.

FAQs

Can two embedding models use different dimensions in one database?

Yes, if the database supports separate named vector spaces, collections, or indexes for each compatible dimension. Qdrant, Weaviate, and pgvector all provide patterns for this.

Can I switch embedding models without re-embedding old documents?

Not if you want the old documents searchable in the new model's vector space. A new query vector is not compatible with embeddings produced by another model.

Should I keep old embeddings forever?

No. Keep them during evaluation and rollback. Once the new model is validated and the migration is complete, removing obsolete vectors can recover substantial storage and index memory.

Final Verdict

Multiple embedding models can coexist cleanly in one private search system when their vector spaces remain explicit. Store model and pipeline metadata, query each space with the matching encoder, fuse results deliberately, and migrate by backfilling in parallel. The dangerous design is not “more than one model.” It is losing track of which model produced which vector and pretending every similarity score means the same thing.

Tech & AI HUB

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.