Questions
5 of 12
1A client gets a dimension-mismatch error when inserting a point. What are the most common root causes?
2A filter query that should return results returns an empty list. What would you check first?
3Why might a collection created without specifying a distance metric or vector size fail immediately, and what does that tell you about how Qdrant treats collection configuration?
4What causes a 'collection not found' error immediately after a collection was reportedly created successfully in a distributed cluster?
5Search results seem semantically wrong even though the embedding model is known to work well. What layers would you check to isolate the problem?
6Recall dropped noticeably after enabling quantization. How would you determine whether the quantization configuration or the rescoring settings are the cause?
7A previously fast query has become slow after months of continuous upserts and deletes, with no configuration changes. What's the most likely explanation?
8How would you distinguish a latency problem caused by disk I/O from one caused by CPU-bound distance computation?
9One node in a three-node Qdrant cluster crashes. What happens to reads and writes for shards that had a replica on that node?
10After a crashed node recovers and rejoins the cluster, how does it catch up on writes it missed?
11What symptoms would indicate a 'split-brain' style problem in a distributed Qdrant cluster, and how does the Raft-based consensus layer prevent it?
12What's your recovery plan if an entire Qdrant cluster is lost (e.g., all nodes' disks fail) and you only have periodic snapshots?
05 / 12

Search results seem semantically wrong even though the embedding model is known to work well. What layers would you check to isolate the problem?

Check metric, normalization, vector field, and data staleness

When the model is fine but the results are wrong, the problem is almost always in the pipeline between the model and the search result. The first layer to check is the distance metric. If the model expects dot product and the collection uses cosine, the ranking changes because cosine normalizes the vectors. For most modern sentence embedding models this difference is small, but for some it is significant. If the model expects cosine and the collection uses Euclidean, the results can be very wrong because Euclidean is not bounded and does not have the same ordering. The second layer is normalization. Cosine similarity requires vectors to be normalized to unit length; if the client normalizes before upsert but not before query, or vice versa, the results are inconsistent. Some models output normalized vectors and some do not, and the pipeline must be consistent about whether normalization happens. The third layer is the vector field. In a multi-vector collection, querying the wrong field (or omitting the field and getting a default) produces results that are semantically unrelated to the query. The fourth layer is data staleness or duplication: if the collection has old and new embeddings for the same content, or if a re-embedding job partially completed, the index contains a mix of representations and the results reflect that mix.

The mechanism that makes this hard to diagnose is that all of these produce plausible-looking results. The search does not error, it returns points ranked by vector similarity - it is just that the similarity is computed in the wrong space or against the wrong vectors. The systematic approach is to isolate each layer. Start with a single query vector and a small set of known points whose expected ranking you can compute by hand. Compute the dot product, cosine similarity, and Euclidean distance between the query and each point in your application, and compare the ordering with what Qdrant returns. If the orderings differ, the metric or the normalization is the cause. If the orderings match, the problem is elsewhere. Then check the vector field: retrieve the vector from a point by ID and verify it matches what you would get by embedding the original text. Then check for duplicates and stale points by scrolling through the collection and looking for repeated IDs or unexpected payloads. This is tedious but it is the only way to isolate the cause with confidence.

  1. 1

    Distance metric: dot vs cosine vs Euclidean; verify the collection's metric matches the model's expectation.

  2. 2

    Normalization: check whether both ingest and query normalize consistently.

  3. 3

    Vector field: in a multi-vector collection, verify the query targets the correct field.

  4. 4

    Stale data: old and new embeddings for the same content can coexist during a migration.

  5. 5

    Duplicate points: upserts that created new IDs instead of updating existing ones.

  6. 6

    Payload filtering: an unintended filter can exclude the correct results.

  7. 7

    Quantization: aggressive quantization without rescoring can degrade ranking.

  8. 8

    Model version: different model versions can produce incompatible embedding spaces.

The trade-off in debugging is between a quick check of the most common causes and a thorough investigation. The most common causes - metric mismatch, normalization inconsistency, and wrong field - account for the majority of cases and can be checked in minutes. If those are clean, the investigation becomes more involved and should be scoped to a small set of queries and points so that you can reason about the expected results. The common mistake is to assume the model is at fault and start looking at model quality, when the model is the one component that is known to work. The second mistake is to change multiple things at once - re-normalize, change the metric, rebuild the index - which destroys the ability to isolate the cause. The third mistake is to trust that the ingest pipeline is consistent because it worked in development; production often has different data, different clients, or a partially completed migration. Version note: the distance metric options and the behavior of normalization have been stable, but the query API has changed - query_points in qdrant-client 1.10+ replaced the older search API, and the way a named vector is selected in the query has a different shape. If you are debugging against an older version, the field selection semantics may differ.

javascript

Version-dependent: the distance metric options and their semantics have been stable, but the retrieval API and the way a vector field is specified have changed. The query_points API in qdrant-client 1.10+ uses using= to select a named vector; earlier versions had different shapes. Quantization behavior and rescoring settings have also evolved, so if the collection uses quantization, verify the rescoring configuration before concluding the metric is wrong.

Difficulty: 7/10
Topics: Distance Metrics, Normalization, Named Vectors, Data Quality

Scenario Questions

0-2 years experience
  1. 1

    Your search results look unrelated to the query. List the first three things you would check and why.

  2. 2

    A teammate blames the embedding model. Explain why the model is usually not the cause and what else to check.

2-5 years experience
  1. 1

    You switch from dot product to cosine and recall drops. Explain the mechanism and whether the change should have helped or hurt.

  2. 2

    Your multi-vector collection returns results from the wrong field. Describe how you would confirm this and fix it.

5-8 years experience
  1. 1

    You are re-embedding a 50M-point collection with a new model and the results are inconsistent during the migration. Describe how you would ensure that queries see a consistent view and how you would validate the cutover.

  2. 2

    Design a monitoring strategy that detects semantic quality regressions in production, given that you do not have labeled ground truth for every query.

8+ years experience
  1. 1

    You are building an evaluation framework for a retrieval system that must detect regressions caused by pipeline changes, not just model changes. Describe the metrics, the test set, and the statistical approach.

  2. 2

    A production incident causes a partial re-index with the wrong model. Describe how you would detect the extent of the damage, quantify the impact on retrieval quality, and remediate.

Follow-up Questions

  • How would you detect that a re-embedding migration left a mix of old and new vectors in the collection?
  • If the metric and normalization are correct and the field is correct, what else could cause semantically wrong results, and how would you investigate?