Questions
15 of 18
1Why did Qdrant consolidate search, recommend, and discovery operations into the Universal Query API?
2What is a prefetch stage in Qdrant's Universal Query API, and why would you use multiple prefetches?
3How do Reciprocal Rank Fusion and Distribution-Based Score Fusion differ when combining Qdrant prefetch results?
4How would you retrieve 500 candidates with dense vectors and rerank them using a ColBERT multivector?
5What is Qdrant's recommend query mode, and how is it different from plain similarity search?
6How does Qdrant combine vector similarity search with structured payload filters?
7What are must, should, and must_not clauses in a Qdrant payload filter?
8Why can filtering after an ANN search return too few results when the filter is highly selective?
9How does Qdrant's filtered vector search avoid the classic post-filtering problem?
10How would you implement a geo-radius search for similar items within 5 km of a location in Qdrant?
11Why should you create payload indexes for fields that are filtered frequently at scale?
12What payload index types does Qdrant support, and how would you choose one for tags versus price?
13What is a full-text payload index used for, and how does it differ from an exact-match keyword index?
14What is the cost of creating too many payload indexes on a high-write Qdrant collection?
15Why should point uploads be batched instead of sending one upsert request per point?
16What is Qdrant's Scroll API used for, and why is it preferable to vector search when iterating through matching points?
17How does Qdrant Scroll pagination avoid the main performance problem of large SQL OFFSET pagination?
18What is a realistic batch size for bulk-loading millions of Qdrant points, and what factors should influence it?
15 / 18

Why should point uploads be batched instead of sending one upsert request per point?

Batching improves ingestion throughput

Each network request has fixed overhead: connection handling, serialization, request parsing, acknowledgement, and scheduling. Sending one point per request repeats that overhead millions of times.

Batching amortizes those costs across many points and gives Qdrant a larger unit of work for indexing and storage. This generally improves ingestion throughput and reduces application-side request overhead.

The trade-off is batch size. Very large batches can increase memory usage, request payload size, retry cost, and latency for individual failures. I would choose a starting size based on payload size and then benchmark throughput, CPU, memory, and tail latency.

A common mistake is assuming the largest possible batch is always fastest. Once batches become large enough, serialization, network limits, indexing contention, or memory pressure can dominate. The correct size is workload-dependent.

javascript
  1. 1

    Batching amortizes per-request network and serialization overhead

  2. 2

    Larger batches can improve indexing throughput

  3. 3

    Oversized batches increase memory, request, and retry costs

  4. 4

    Tune batch size using the actual payload and indexing workload

Difficulty: 3/10
Topics: Batch operations, Bulk ingestion, Performance

Scenario Questions

0-2 years experience
  1. 1

    Your importer sends 1 million HTTP requests for 1 million points. What obvious performance issue would you investigate first?

  2. 2

    Why does sending 100 points in one request usually reduce overhead compared with sending 100 separate requests?

2-5 years experience
  1. 1

    A batch of 10,000 points is faster than batches of 100, but occasionally times out. How would you find a better operating point?

  2. 2

    Your network has a request-size limit and embeddings are large. How would you choose a batch size safely?

5-8 years experience
  1. 1

    A bulk-ingestion pipeline is CPU-bound in Qdrant rather than network-bound. Would increasing batch size necessarily help? How would you investigate?

  2. 2

    A batch fails after partially completing downstream processing. How would you design retries so successful work is not duplicated incorrectly?

8+ years experience
  1. 1

    You need to ingest billions of vectors while keeping production query latency within an SLO. How would you architect batching, concurrency, and indexing workload isolation?

  2. 2

    Ingestion throughput is high, but large batches create p99 latency spikes for search. What controls would you introduce to prevent bulk loading from starving interactive queries?

Follow-up Questions

  • What factors determine a good batch size?
  • Why can an extremely large batch be slower or less reliable?