Questions
11 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?
11 / 13

One 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?

Hot shard and noisy neighbor; dedicate a shard or collection to the outsized tenant

The problems fall into three categories: shard imbalance, resource contention, and operational impact. Shard imbalance: with custom sharding, each tenant is placed on a shard, and a tenant with 100x the data of others will make its shard much larger than the rest. That shard will have more segments, more memory usage, longer index builds, and potentially longer query latency. Resource contention: the large tenant's queries and writes consume more CPU and I/O, which can affect the other tenants on the same node - the classic noisy neighbor problem. Operational impact: the large tenant's data will dominate backups, snapshots, and reindexing, and a problem with that tenant's data (a corrupted segment, a bad batch import) can affect the shared collection's availability. The fix is to isolate the large tenant: either by giving it a dedicated shard (so its data is on its own shard and its queries do not compete with others on the same shard), or by giving it a dedicated collection (so it has its own segments, indexes, and optimizer state, and can be tuned independently).

The mechanism that makes isolation effective is that Qdrant's resource consumption scales with the number of segments and the size of the index. A shard with 100x the data has 100x the segments (or larger segments), which means more memory for the HNSW graph and payload indexes, more CPU for traversal, and more I/O for disk-based access. By giving the large tenant a dedicated shard or collection, you bound its resource consumption to its own shard and prevent it from affecting others. A dedicated collection also lets you tune the large tenant's configuration independently - higher m for better recall, more replicas for availability, a different quantization scheme - which is not possible in a shared collection where the configuration is collection-wide. The decision between a dedicated shard and a dedicated collection depends on whether the large tenant needs different configuration. If it does, a dedicated collection is the right choice. If it needs the same configuration but more capacity, a dedicated shard (or several shards) within the shared collection is sufficient. In both cases, the tenant's data must be migrated, which requires a plan for moving the data without downtime.

  1. 1

    Shard imbalance: the large tenant's shard is much bigger, with more segments and higher resource use.

  2. 2

    Noisy neighbor: the large tenant's queries and writes consume CPU and I/O that affect other tenants.

  3. 3

    Operational impact: backups, snapshots, and reindexing are dominated by the large tenant.

  4. 4

    Dedicated shard: the large tenant gets its own shard within the shared collection.

  5. 5

    Dedicated collection: the large tenant gets its own collection, with independent configuration.

  6. 6

    Migration: moving the tenant's data requires a plan for zero-downtime cutover.

  7. 7

    Tiering: establish thresholds (data size, query rate) that trigger isolation.

  8. 8

    Monitoring: track per-tenant resource usage to detect an outsized tenant early.

The trade-off is between isolation and operational complexity. A dedicated collection gives the large tenant the best performance and the most flexibility, but it adds a collection to manage, monitor, and back up. A dedicated shard within the shared collection is simpler but does not allow independent configuration. The common mistake is to leave the large tenant in the shared collection and hope it does not cause problems, which eventually leads to a noisy-neighbor incident. The second mistake is to give the large tenant a dedicated collection without a migration plan, which causes downtime. The third mistake is to not have thresholds for isolation, so the decision is made reactively during an incident. The fourth mistake is to not monitor per-tenant resource usage, so the problem is not detected until it affects other tenants. The fifth mistake is to assume that the large tenant is the only one - if the platform grows, more tenants will become large, and the isolation strategy must scale. Version note: custom sharding and the is_tenant flag have evolved across Qdrant releases, and the ability to move a tenant between shards or collections may vary. If you are designing for tiered multitenancy, verify the version's support for shard-level placement and migration.

javascript

Version-dependent: custom sharding, the is_tenant flag, and the ability to create shard keys with specific shard counts are recent additions to Qdrant and have evolved. If you are on an older version, the tiering options may be more limited, and the practical approach may be to create a separate collection for the large tenant from the start. Verify the version's support for tiered multitenancy before designing the strategy.

Difficulty: 8/10
Topics: Multitenancy, Sharding, Noisy Neighbor

Scenario Questions

0-2 years experience
  1. 1

    A new enterprise tenant signs up with 100x the data of your typical tenant. Explain the problems this causes in a shared collection and what you would do.

  2. 2

    A teammate says the tenant filter handles isolation. Explain why isolation is not enough when the tenant is much larger than the others.

2-5 years experience
  1. 1

    Your shared collection has a hot shard because one tenant is much larger. Describe the diagnosis and the remediation.

  2. 2

    You need to move the large tenant to a dedicated collection without downtime. Describe the migration plan.

5-8 years experience
  1. 1

    Design a tiered multitenancy strategy with thresholds for when a tenant moves from shared to dedicated shard to dedicated collection.

  2. 2

    You have multiple large tenants and they are all growing. Describe the capacity planning and the isolation strategy.

8+ years experience
  1. 1

    You are designing a multi-tenant platform where tenant sizes follow a heavy-tailed distribution. Describe the architecture, the isolation strategy, and the capacity planning.

  2. 2

    Derive the optimal isolation threshold as a function of tenant size, query rate, and the cost of a dedicated collection.

Follow-up Questions

  • How would you migrate the large tenant's data to a dedicated collection with zero downtime and no data loss?
  • If the large tenant's data is growing rapidly, how would you plan for its future capacity needs, and when would you add more shards or replicas?