What is index drift over time?
Index drift over time is the gradual mismatch between an ANN index’s structure – partitions, codes, edges, or assumed query geometry – and the live distribution of stored vectors and queries, so recall and latency degrade even when deletes are cleaned up and the graph is not merely bloated with tombstones.
How does index drift differ from graph aging?
Graph aging is structural wear from CRUD mechanics: tombstones, unreclaimed edges, and cleanup lag. Index drift is distributional: the content people upload changes, query intents shift, embedding models improve, or chunking and languages evolve, so the mathematical map the index learned at build time no longer fits the traffic of today. You can have a freshly compacted HNSW graph that still underperforms because new topics land in poorly connected regions, because queries are out-of-distribution relative to the corpus, or because a trained quantizer’s centroids were fit on an older slice of the data. Drift answers "are we searching the right geometry?" Aging answers "is the scaffolding still tidy?"
Drift arrives through several channels that often combine in production.
What causes an ANN index to drift?
Content drift appears when the corpus gains new product lines, seasons, modalities, or languages; partition-based indexes see cluster imbalance and rising reconstruction error as centroids lag the new mass, while graphs grow local neighborhoods that were never anticipated at initial construction. Query drift appears when user behavior or application features change which regions of the space are probed – including cross-modal or otherwise out-of-distribution queries that classic in-distribution benchmarks never stress. Model drift is sharper still: switching embedders creates a new vector space; old stored vectors and new query vectors are not comparable, so similarity search becomes systematically wrong until everything is re-embedded. Codec drift hits trained compressors such as product quantization: centroids fit on early imports misrepresent later data unless you re-fit with a sample that spans the timeline rather than only the newest batch. Streaming research shows that treating data updates and query OOD separately underestimates real systems where both move at once.
Mitigations depend on which layer drifted.
How do systems adapt when the index drifts?
For partition indexes, lightweight centroid updates, split/merge of overloaded lists, and incremental maintenance avoid multi-day full rebuilds at billion scale. For graphs, continued inserts patch local structure, but severe regional drift may need targeted rewiring or a blue/green rebuild from current live vectors. For model upgrades, the honest fix is re-vectorize into a new collection (or a new named vector) rather than mixing incompatible spaces. Monitoring recall on a stratified, time-aware query set – head traffic, new intents, and known OOD classes – detects drift earlier than average latency alone. Temporary adapters that map new queries into an old space exist in research, but they are bandaids; production usually plans a migration window. Query-distribution-aware construction and adaptive ef can reduce symptoms; they do not replace refreshing codes or embeddings when the space itself has moved.
Weaviate operators meet drift most often as model upgrades and compression freshness.
How should you handle index drift with Weaviate?
Weaviate’s HNSW index inserts incrementally, so modest content evolution is absorbed node by node, while tombstone cleanup addresses aging rather than semantic drift. Product-quantization centroids fitted on early data can lag if the collection’s distribution shifts sharply – Weaviate discussions of continual RAG tuning treat recall drops as a signal to consider re-fitting with a hybrid sample across insert history, not only the latest window. Rotational quantization needs less training-sensitive upkeep than PQ, but any compressed path still deserves recall checks after major corpus changes. Changing the vectorizer is a non-mutable collection setting: you cannot silently swap models mid-flight; create a new collection (or add another named vector), re-embed, compare quality on a held-out query set, then cut over. Collection aliases and dual-vector setups let you A/B the new space and roll back instantly if drift-fixing goes wrong. HFresh rebalances posting lists as data changes, which is a built-in freshness mechanism for that topology. Treat embedder upgrades as planned migrations with baselines – not as config tweaks – because mismatched spaces look like mysterious recall collapse.
Measuring drift means comparing quality across time on the same evaluation harness.
How do you detect index drift before users complain?
Keep a fixed golden query set plus a rolling sample of recent production queries; track recall@k, nDCG, or downstream RAG usefulness monthly and after major imports or model changes. Watch partition imbalance and reconstruction error if you use cluster-based indexes; watch latency and hard-query rates for HNSW under new topics. Alert when quality falls while tombstone metrics are healthy – that pattern points to drift, not aging. After embedder or chunking changes, require an explicit re-index checklist. Next in the frontier glossary, accuracy-certified search asks whether a single query’s results can carry a trust signal when approximation and drift make average recall an incomplete story.
Index drift over time is the semantic and distributional aging of an ANN map relative to live data and queries. Next, read "What is accuracy-certified search?" for confidence in individual answers, or revisit Weaviate vectorizer migration and graph aging when you need to separate a model-space cutover from tombstone cleanup.