Home › The Versioned Index

Object 04 // temporal coherence

Never query a mixed-version index.

Are your chunks tagged with the model version that embedded them, or are you ranking across two different metrics?

Embedding drift is not a future problem. It is a day-one decision that costs almost nothing to get right early and is catastrophically expensive to retrofit. Never query against a mixed-version index.

The layers under your retrieval

Every chunk carries the version that embedded it.

embed_v3

This quarter. New events land here, tagged at write time.

embed_v2

Last model. Still queryable, in its own index, never blended.

embed_v1

The original layer. Retired on a schedule, not abandoned by surprise.

// version-tagged = coherent. mixed-version = silent quality loss you cannot explain.

Three config fields, one background job

The call is simple. The cost of skipping it is not.

Tag every chunk at write time with its embedding model version. Maintain parallel indexes during a transition. Retire old indexes on a schedule. That is the whole discipline: three config fields and one background job.

Skip it in iteration one and you will rebuild your entire pipeline in iteration seven, under pressure, with live users, while debugging a retrieval-quality degradation you cannot explain. The drift is invisible until it is expensive. You are mixing distance metrics from two different models and calling the result a ranking.

Common questions

The objections that come up here.

Can't I just re-embed everything when I upgrade?

You can, and during the re-embed you are serving live queries against a half-migrated index. Parallel version-tagged indexes let you cut over atomically instead of degrading quality mid-migration.

We already have a RAG stack, isn't this handled?

Only if your chunks are version-tagged and you never query across versions. If you cannot say that with certainty, this is the leak, and it compounds in silence until quality visibly drops.

In the structure

before in the loop

← The Context Slots

Each slot queries a version-tagged index. The Index is what the Slots read from.

Open the object →
closes back to

The Event →

New events are written at the current embedding version. The loop closes and stays coherent.

Open the object →

The reading

Set your versioning policy in twenty minutes.

Bring one domain. We define the three fields and the retirement schedule on the call.

Book my technical call →