Questions
2 of 17
1Design a semantic search system that must support 500 million documents with sub-100ms p99 latency. What are the key architectural decisions?
2How would you plan capacity (RAM, disk, CPU, node count) for a collection of a given size, vector dimensionality, and expected QPS?
3What architectural changes would you make to support near-real-time search over data that changes thousands of times per second (e.g., a live feed)?
4How would you design a system that needs to support both 'search the last 24 hours' and 'search all history' with very different latency expectations?
5What role does caching play in a Qdrant-backed search system, and at what layers would you introduce it?
6How would you decide the initial number of shards for a new collection when the eventual data size is uncertain?
7What is the relationship between shard count and query fan-out cost, and why doesn't 'more shards' always mean 'faster'?
8How many replicas would you configure for a shard serving a mission-critical, read-heavy workload, and what does each additional replica cost you?
9What operational steps are involved in adding a new node to an existing Qdrant cluster and rebalancing shards onto it?
10How does Qdrant's architecture and target use case differ from Pinecone's as a fully managed, closed-source vector database?
11When would you choose pgvector inside an existing Postgres database over a dedicated vector database like Qdrant?
12What distinguishes Qdrant from Weaviate and Milvus at a conceptual level, and what would make you choose one over the others for a given project?
13Under what circumstances would a team be justified in NOT using a vector database at all, and instead using brute-force search or a traditional search engine?
14What is your target Recovery Point Objective (RPO) and Recovery Time Objective (RTO) for a Qdrant deployment, and how do snapshot frequency and replication factor influence each?
15How would you design a disaster-recovery strategy that survives the loss of an entire cloud region?
16What is the operational difference between a rolling upgrade of a replicated cluster and an in-place upgrade of a single-node deployment?
17How would you validate that a newly restored cluster from snapshots is actually healthy and serving correct results before routing production traffic to it?
02 / 17

How would you plan capacity (RAM, disk, CPU, node count) for a collection of a given size, vector dimensionality, and expected QPS?

Difficulty: 8/10
Capacity Planning, Memory Optimization, Scaling

Size vectors, graph, indexes, and compute separately

Capacity planning has four components that must be estimated separately: vector storage, index overhead, payload and metadata, and compute. Vector storage is the simplest: points times dimensions times bytes_per_dimension, where bytes_per_dimension is 4 for float32, 1 for int8, and 1/8 for binary. For 10M points at 768 dimensions: 30.7 GB for float32, 7.7 GB for int8, and 0.96 GB for binary. Index overhead is the HNSW graph: roughly points times 2 times m times id_bytes on layer 0, plus 10-30 percent for upper layers. For 10M points at m=16 and 4-byte IDs, that is about 1.3-1.7 GB. Payload and metadata include the payload fields, the payload indexes, the point IDs, and internal bookkeeping; for a collection with several indexed fields, this can be a meaningful fraction of the total. Compute is the number of cores needed to serve the QPS at the latency target: each query costs a number of distance computations proportional to ef and the graph traversal, and each core can serve a bounded number of queries per second. Node count follows from the total footprint divided by the per-node capacity, with headroom for peaks, replication, and failover.

The mechanism that determines the node count is the balance between the memory footprint and the per-node capacity. A node can hold a certain amount of data in RAM and on disk, and it can serve a certain number of queries per second given its CPU. The number of nodes is the maximum of the memory-driven count and the compute-driven count. For an in-memory collection, the memory count is total RAM footprint divided by usable RAM per node, and the compute count is QPS times latency_budget divided by cores_per_query. For an on-disk collection with quantization, the memory count drops dramatically because only the quantized vectors and the hot portion of the graph need to be resident; the disk count becomes relevant instead. Replication multiplies the storage cost: with replication_factor=2, you need twice as many nodes (or twice the storage per node) to hold the replicas. Headroom matters: plan for at least 20-30 percent headroom for the optimizer, the OS, and burst traffic. The exact numbers depend on the workload, so a capacity plan should be validated with a benchmark on the target hardware.

  1. 1

    Vector storage: points x dims x bytes_per_dim, where bytes_per_dim is 4 (float32), 1 (int8), or 1/8 (binary).

  2. 2

    HNSW graph: points x 2 x m x id_bytes on layer 0, plus 10-30 percent for upper layers.

  3. 3

    Payload and indexes: depends on the number and cardinality of indexed fields; often 5-20 percent of total.

  4. 4

    Quantized vectors in RAM: the compressed vectors that are always resident for traversal.

  5. 5

    Compute: cores needed to serve QPS at the latency target; depends on ef and the graph traversal cost.

  6. 6

    Replication: multiplies storage and compute by the replication factor.

  7. 7

    Headroom: 20-30 percent for the optimizer, OS, and burst traffic.

  8. 8

    Node count: max(memory-driven, compute-driven) x replication factor, rounded up.

The trade-off is between cost and headroom. A tight plan minimizes hardware cost but leaves no room for peaks and failover; a generous plan costs more but is more robust. The right balance depends on the workload's variability and the cost of an outage. The common mistakes are: (1) counting only the raw vector bytes and forgetting the graph and indexes; (2) assuming that an on-disk collection needs no RAM at all; (3) not accounting for the optimizer's temporary memory usage during merges; (4) not planning for replication in the node count; (5) assuming that the benchmark's QPS is achievable at production latency without measuring under load. Version note: the memory overhead of the graph and the payload indexes depends on the internal implementation and has changed across Qdrant releases. Measure the actual RSS of a representative collection on your version rather than relying on a fixed formula.

javascript

Version-dependent: the memory overhead of the graph and the payload indexes varies by version. On-disk HNSW and inline storage change the memory calculus. Benchmark a representative collection on your version before committing to a capacity plan, and re-check after upgrades.

Scenario Questions

0-2 years experience

  1. 1You size a node for 10M vectors by counting vector bytes and it runs out of RAM. Explain what you forgot and how to redo the estimate.
  2. 2A teammate says on-disk collections need no RAM. Explain what still needs to be resident and why.

2-5 years experience

  1. 1You need to plan a deployment for 50M vectors with a 20ms p99 and a budget. Describe the components of the plan and how you would validate them.
  2. 2Your benchmark shows that the compute-driven node count is higher than the memory-driven count. Explain what this means and how you would tune the workload.

5-8 years experience

  1. 1Design a capacity plan for a multi-tenant collection with 100M points, a 30ms p99, and a replication factor of 3. Specify the node size and count.
  2. 2You need to reduce the infrastructure cost by 40 percent without dropping below the latency SLO. Describe the levers and the impact of each.

8+ years experience

  1. 1Derive a capacity model that takes point count, dimensionality, m, quantization, QPS, and latency target as inputs, and outputs node size and count. Where does the model break down?
  2. 2You are designing a capacity planning tool for a fleet of Qdrant clusters. Describe the model, the inputs, and how you validate it against production telemetry.

Follow-up Questions

  • How would you validate the capacity plan with a benchmark on the target hardware before provisioning?
  • If the compute-driven node count exceeds the memory-driven node count, what does that tell you about the workload, and what would you tune?
Share

Share via WhatsApp, X, Facebook, LinkedIn or copy link. Open Graph preview enabled.