You upsert a document and query for it 200 milliseconds later, but it never appears. Pick the most likely cause.
Options
The write landed in a buffer or fresh segment that is not yet searchable; the index has a freshness lag between acknowledged write and queryable vector
The vector was silently rejected because its values were not normalized to unit length
ANN search is approximate, so a brand new vector has a permanently lower chance of being found
The query embedding model must be restarted before it can see new vectors
Vector databases separate two things: storing a write durably (the upsert returns success) and making the vector findable by a query (the index has to update). The gap between the two is called the freshness window.
Why it exists. Indexes like HNSW and IVF are not designed for one at-a time updates. Inserting a single vector into a built HNSW graph means walking the graph and stitching the new node in, which is expensive. Production engines batch writes: incoming vectors go into a memtable, a write ahead log, or a small fresh segment. Every so often (milliseconds to minutes, depending on the engine and tier), the engine flushes the buffer or merges the fresh segment into the main index. Only after that step is the vector searchable.
Why 200 ms is well inside that window. Pinecone serverless typically takes seconds, Elasticsearch defaults to a 1-second refresh interval, Milvus has explicit consistency levels with documented staleness. A 200 ms query right after an upsert almost always lands in the gap.
The other options do not match the symptom. Vectors are not silently rejected for normalization; approximation lowers recall a little but does not permanently hide new entries; and the embedding model has nothing to do with index visibility.