Questions
13 of 13
1What role does Qdrant play in a typical RAG architecture, and what happens on either side of it in the pipeline?
2How would you design chunking and metadata so that retrieved chunks can be traced back to their source document and section for citation?
3A RAG system is returning chunks that are topically related but don't actually answer the user's question. How would you improve retrieval quality?
4How would you handle access control in a RAG system where different users are only permitted to retrieve chunks from documents they have permission to view?
5Why might you keep conversation-turn embeddings in a separate, short-lived collection rather than mixing them into your main document knowledge base?
6How would you model 'users who liked this also liked' recommendations using Qdrant's recommend/discovery query modes?
7How would you incorporate business signals like popularity or recency into a similarity-based recommendation without abandoning vector search entirely?
8What cold-start problem exists for a new item or new user in a vector-similarity recommendation system, and how might you mitigate it?
9How would you evaluate whether a change to your recommendation retrieval pipeline actually improved results, before rolling it out to all users?
10Design a Qdrant-backed search feature for a SaaS product with thousands of small customers, each with their own private dataset. What collection and sharding strategy would you use?
11One large enterprise tenant has 100x more data than a typical tenant in your shared multitenant collection. What problems could this cause, and how would you address them?
12How would you offer per-tenant usage metrics (storage, query volume) in a shared multitenant Qdrant deployment?
13What is the tradeoff of offering tenants a 'bring your own embedding model' option in a shared collection?
13 / 13

What is the tradeoff of offering tenants a 'bring your own embedding model' option in a shared collection?

Different models break the shared vector space; use named vectors or separate collections

The fundamental problem is that different embedding models produce vectors in different vector spaces. Two models with the same output dimension may produce vectors that are not comparable - the distance between two texts under model A is not the same as under model B. And models with different output dimensions cannot even be stored in the same vector field. If tenants in a shared collection use different models, the vector field must be partitioned: either by using a different named vector for each model, or by using a different collection for each model. A named vector field in Qdrant has its own dimension, metric, and index, so it can accommodate a different model's output. But every point must have a value for every named vector it is supposed to have, and a query only searches one named vector at a time. So a tenant using model A queries the model-A field, and a tenant using model B queries the model-B field. The collection can host multiple models, but each point belongs to one model (or has separate values for each), and queries are model-specific.

The mechanism that makes this work is that Qdrant supports multiple named vectors in a single collection, each with its own size and metric, and each with its own HNSW index. A point can carry a value for each named vector, or only for the vectors it needs. The query specifies which named vector to search (using='field'), so a tenant query is scoped to its model's field. The cost is that the collection's memory and storage are multiplied by the number of models: each model's field has its own index, its own quantized vectors, and its own storage. If tenants are distributed across several models, the collection may have many named vectors, most of which are used by a small fraction of tenants, which is inefficient. The alternative is separate collections per model, which gives each model its own configuration and avoids the multiplication of indexes in a single collection, but adds the operational overhead of managing multiple collections. The choice depends on how many models are in use and how much the tenants need independent configuration.

  1. 1

    Different models = different vector spaces: distances are not comparable across models.

  2. 2

    Same dimension does not mean compatible: two models can output the same dimension but different spaces.

  3. 3

    Named vectors: one field per model, each with its own dimension, metric, and index.

  4. 4

    Query scoping: queries specify the model's field with using=.

  5. 5

    Point coverage: every point must have a value for the field it is queried on.

  6. 6

    Cost: memory and storage multiply by the number of models in use.

  7. 7

    Separate collections: cleaner isolation but more operational overhead.

  8. 8

    Migration: changing a tenant's model requires re-embedding their data and moving it to the new field or collection.

  9. 9

    Onboarding: a new tenant chooses a model at onboarding, which determines its field.

The trade-off is between flexibility for tenants and efficiency for the platform. Offering BYO model lets tenants use the model that best fits their data and their quality requirements, which is a competitive advantage. But it multiplies the platform's storage and memory costs, complicates the query routing, and makes the collection harder to manage. The common mistake is to allow tenants to use different models in the same vector field, which produces meaningless results. The second mistake is to not consider the storage multiplication when pricing the BYO feature. The third mistake is to not provide a migration path when a tenant wants to change models, so they are stuck with their initial choice. The fourth mistake is to not enforce that a point has a value for the field it is queried on, which produces dimension errors or missing results. The fifth mistake is to assume that same-dimension models are interchangeable, which they are not. Version note: named vectors with different dimensions and metrics, and the ability to have optional vector fields, have evolved across Qdrant releases. The multivector field is a different feature that is sometimes confused with named vectors; it represents a single field with a list of vectors, not multiple independent fields.

javascript

Version-dependent: named vectors with different dimensions and metrics have been supported for several releases, but the exact shape of the vectors_config and the ability to have optional vector fields have evolved. The multivector field type is a newer feature and is different from named vectors. If you are designing a BYO-model architecture, verify the version's support for multiple named vectors with different dimensions and metrics, and benchmark the storage and memory cost of hosting multiple model fields in a single collection.

Difficulty: 8/10
Topics: Multitenancy, Named Vectors, Embedding Models

Scenario Questions

0-2 years experience
  1. 1

    Two tenants want to use different embedding models. Explain why they cannot share the same vector field and what you would do.

  2. 2

    A teammate says same-dimension models are interchangeable. Explain why that is wrong.

2-5 years experience
  1. 1

    You support BYO model with named vectors. Describe how a query is scoped to the tenant's model and how you handle points that only have one model's vector.

  2. 2

    A tenant wants to switch from model A to model B. Describe the migration and the impact on the shared collection.

5-8 years experience
  1. 1

    Design a BYO-model architecture for a multitenant search platform, balancing flexibility with storage cost. Specify the collection, the named vectors, and the routing.

  2. 2

    You have 20 models in use across tenants. Describe how you would organize them to avoid an explosion of named vectors.

8+ years experience
  1. 1

    You are designing a platform that must support any embedding model a tenant chooses, including custom models. Describe the architecture, the cost model, and the operational complexity.

  2. 2

    Derive the storage and memory cost of hosting N models in a shared collection versus N separate collections, and identify the break-even point.

Follow-up Questions

  • How would you price a BYO-model feature given the storage and memory multiplication?
  • If a tenant wants to use a model that is not yet supported, what is the onboarding process and what changes are required in the collection?