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

When would you choose pgvector inside an existing Postgres database over a dedicated vector database like Qdrant?

Small scale, transactional consistency, and operational simplicity favor pgvector

pgvector is the right choice when the vector data is a small part of a larger relational workload and the benefits of keeping everything in one database outweigh the specialized performance of a dedicated vector database. The specific scenarios are: the dataset is small (up to a few million vectors, where pgvector's performance is competitive), the queries need transactional consistency with the relational data, the team already operates Postgres and does not want to add another database, the vector search is not the primary workload, or the application needs joins between vector results and relational tables. In these cases, pgvector avoids the operational overhead of a second database and the complexity of keeping the two in sync. The vector search is slower than Qdrant at scale, but if the dataset is small or the queries are not latency-critical, the difference may be acceptable.

The mechanism that makes pgvector work is that it adds a vector column type and index types to Postgres. The vector index is built and queried like any other index, and the vector column is a regular column that can be selected, joined, and filtered. This means the vector search can be part of a SQL query that also filters by relational columns, joins with other tables, and participates in a transaction. The consistency guarantee is the same as any other Postgres operation: a vector insert is visible to a vector search in the same transaction, and a rollback rolls back the vector data. This is not achievable with a separate vector database, where the vector store and the relational store are separate systems that must be kept in sync. The cost is performance: pgvector's indexes are less optimized than Qdrant's for large-scale ANN search, and Postgres is not designed for the memory access patterns of vector search at scale. As the dataset grows, pgvector's latency grows faster than Qdrant's, and at some point the dedicated database becomes necessary.

  1. 1

    Small scale: up to a few million vectors, where pgvector's performance is competitive.

  2. 2

    Transactional consistency: vector search must be consistent with recent relational writes.

  3. 3

    Operational simplicity: the team already operates Postgres and does not want a second database.

  4. 4

    Joins: vector results need to be joined with relational tables.

  5. 5

    Feature within a larger app: vector search is not the primary workload.

  6. 6

    Data volume: large datasets or high QPS favor a dedicated database.

  7. 7

    Latency: strict p99 SLAs at scale favor a dedicated database.

  8. 8

    Advanced features: quantization, multivector, hybrid retrieval, and advanced filtering favor Qdrant.

The trade-off is between operational simplicity and performance at scale. pgvector is simpler, keeps everything in one database, and provides transactional consistency, but its performance degrades as the dataset grows and its feature set is narrower. Qdrant is faster, more scalable, and richer in features, but adds a second database to operate and requires keeping the vector data in sync with the relational data. The common mistakes are: (1) choosing pgvector for a large dataset because the team already knows Postgres, then discovering that the latency is unacceptable; (2) choosing Qdrant for a small dataset because it is more specialized, then adding operational overhead for no benefit; (3) not considering the consistency implications of a separate vector database; (4) not benchmarking pgvector at the expected scale before committing. Version note: pgvector and Qdrant both evolve, and the performance comparison shifts over time. pgvector's HNSW implementation has improved, and Qdrant has added features. Benchmark on the current versions with your data and query pattern before deciding.

javascript

Version-dependent: pgvector's HNSW support and performance have evolved, and Qdrant's feature set has expanded. The comparison should be based on the current versions and benchmarked with the actual data and query pattern. pgvector is not a Qdrant-specific concern, but it is a common alternative that Qdrant users ask about.

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

Scenario Questions

0-2 years experience
  1. 1

    You have a small dataset and already use Postgres. Explain why pgvector might be the right choice.

  2. 2

    A teammate wants to add a dedicated vector database for 100k vectors. Explain why pgvector might be simpler.

2-5 years experience
  1. 1

    Your pgvector queries are getting slow as the dataset grows. Describe how you would decide whether to migrate to Qdrant or optimize pgvector.

  2. 2

    You need transactional consistency between a vector insert and a relational insert. Explain why pgvector is the natural fit.

5-8 years experience
  1. 1

    Design a migration from pgvector to Qdrant for a dataset that has grown beyond pgvector's performance envelope. Describe the plan, the dual-write, and the cutover.

  2. 2

    You need to support both relational queries and large-scale vector search. Describe the architecture and the trade-offs.

8+ years experience
  1. 1

    Derive the crossover point where a dedicated vector database becomes more cost-effective than pgvector, as a function of dataset size, QPS, and latency SLO.

  2. 2

    You are designing a system that must balance consistency, performance, and operational simplicity. Describe the decision framework and the trade-offs.

Follow-up Questions

  • How would you benchmark pgvector against Qdrant for a specific workload, and what metrics would you compare?
  • If you start with pgvector and later need to migrate to Qdrant, what is the migration path and how would you keep the two in sync during the transition?