Questions
12 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?
12 / 17

What distinguishes Qdrant from Weaviate and Milvus at a conceptual level, and what would make you choose one over the others for a given project?

Positioning around performance, feature surface, and operational footprint

All three are open-source vector databases with similar core capabilities (ANN search, filtering, metadata), but they differ in positioning and trade-offs. Qdrant is written in Rust and positions itself around performance, filter-aware search, and a focused feature set. It emphasizes payload filtering during graph traversal, quantization, and a clean operational model with a segment-based storage engine. Weaviate is written in Go and positions itself around a GraphQL-style API, modular vectorizers, and a broader feature surface including hybrid search, generative modules, and multi-tenancy. Milvus is written in Go and C++ and positions itself around scale, with a distributed architecture that supports multiple index types (including GPU-accelerated), a separate control plane, and support for very large collections. The conceptual difference is that Qdrant focuses on doing a few things very well, Weaviate focuses on a rich, integrated experience, and Milvus focuses on scale and flexibility.

The mechanism that shapes each project's strengths is its architecture. Qdrant's segment-based storage with immutable segments and a background optimizer gives it predictable write throughput and filter-aware HNSW traversal, which is the foundation of its filtering performance. Weaviate's module system lets you plug in vectorizers and generative models directly, so the database can do the embedding and the generation, which simplifies the application but couples it to the module's choices. Milvus's separation of the coordinator, the query nodes, and the data nodes gives it the flexibility to scale each component independently and to support multiple index types, but it also makes the operational model more complex. In practice, the choice is often driven by the ecosystem: if you are already using a Weaviate module, Weaviate is the natural fit; if you need extreme scale or a specific index type, Milvus is the natural fit; if you want a focused, high-performance vector database with strong filtering, Qdrant is the natural fit.

  1. 1

    Qdrant: Rust, performance-focused, filter-aware search, quantization, segment-based storage, clean operational model.

  2. 2

    Weaviate: Go, GraphQL API, module system for vectorizers and generative models, hybrid search, multi-tenancy.

  3. 3

    Milvus: Go and C++, distributed architecture, multiple index types, GPU support, emphasis on scale.

  4. 4

    Ecosystem: the choice is often driven by the modules and integrations each project supports.

  5. 5

    Operational footprint: Qdrant and Weaviate are simpler to operate at small scale; Milvus is more complex.

  6. 6

    Feature surface: Weaviate has the broadest out-of-the-box feature set; Qdrant is focused; Milvus is flexible.

  7. 7

    Performance: all three are competitive; the differences are workload-specific and should be benchmarked.

  8. 8

    Community and maturity: all three are mature, with active communities and commercial offerings.

The trade-off is between focus and breadth, and between simplicity and flexibility. A focused database like Qdrant does fewer things but does them well; a broad database like Weaviate does more out of the box but may have more dependencies and configuration. A simple operational model like Qdrant's is easier to run at small scale but may be less flexible at very large scale; a distributed architecture like Milvus's is more flexible but more complex to operate. The common mistakes are: (1) choosing based on benchmarks alone without considering the operational model; (2) choosing based on the feature list without checking whether the features you need are mature; (3) not considering the ecosystem and the integrations; (4) not benchmarking with your own data and query pattern, which is the only way to know which performs best for your workload. Version note: all three projects evolve quickly, and the feature comparison shifts over time. The right approach is to define the requirements, shortlist the candidates, and benchmark the shortlisted options with your data.

javascript

Version-dependent: the feature sets and performance of all three projects evolve quickly. The comparison should be based on the current versions and benchmarked with your data. The fundamental positioning differences are more stable: Qdrant for focused performance and filtering, Weaviate for breadth and integration, Milvus for scale and flexibility.

Difficulty: 7/10
Topics: Database Comparison, Architecture, Feature Comparison

Scenario Questions

0-2 years experience
  1. 1

    You need a vector database for a project and you are comparing Qdrant, Weaviate, and Milvus. Describe the first question you would ask to narrow the choice.

  2. 2

    A teammate likes Weaviate because it has a module for their vectorizer. Explain the trade-off of that choice.

2-5 years experience
  1. 1

    You need extreme scale and a specific index type. Describe how you would decide between Qdrant and Milvus.

  2. 2

    You need integrated vectorization and generative features. Describe how you would decide between Qdrant and Weaviate.

5-8 years experience
  1. 1

    Design a benchmark that compares the three databases on your workload, including the metrics, the test data, and the operational considerations.

  2. 2

    You are choosing a vector database for a company that will use it for multiple projects. Describe the evaluation framework and the trade-offs.

8+ years experience
  1. 1

    You are designing a vector database strategy for a company with diverse workloads. Describe how you would decide between standardizing on one database versus using different databases for different workloads.

  2. 2

    Derive the criteria that would make you choose each of the three databases, and explain how you would validate the choice with a benchmark.

Follow-up Questions

  • How would you structure a benchmark to compare Qdrant, Weaviate, and Milvus fairly for a specific workload?
  • If your requirements change after you choose a database, how hard is it to migrate to another, and how would you plan for that?