"An embedding model upgrade is a boundary in your score history. The search marketing industry hasn't built the discipline to handle this at scale, yet."
~ Cody C. Jensen, CEO & Founder, Searchbloom
Vector Drift moves your cosine numbers whether you publish or not. The Embedding Migration is the eight-step Re-Baseline workflow. It re-scores a priority corpus under a new embedding model and passes the new baseline through the scoring program. Same content. New model. Honest scores. Two caveats. Production AI-search embedding models are proprietary and unknowable, so any public model you pick is a proxy yardstick. And the re-baselined score is only trustworthy once you calibrate it against live citation behavior, not internal cosine alone.
This re-baselining governs your IGS scoring program and third-party RAG pipelines, not Google's AI Overviews or AI Mode, which run on Google's core ranking and quality systems. The workflow lives in Component 6 of Corpus Engineering, the Corpus Maintenance component. It is the operational response to Vector Drift. Corpus Drift has its quarterly re-score response. Semantic-Relationship Drift has its own entity-audit response covered in its own piece.
The Vector Drift article scopes the concept. This article scopes the practice.
TL;DR
- The Embedding Migration is the eight-step Re-Baseline workflow. Tag, Anchor, Trigger, Parallel-Embed, Spread, Tier, Re-Score, Publish. Each step has a defined output and a defined hand-off.
- Triggers are vendor-driven, not calendar-driven. A major model release at OpenAI, Voyage, Cohere, Jina, or Qwen kicks off the workflow. Not every release demands a full migration; the tier sort in step 6 decides scope.
- The Anchor Set is the canary. Pick 10 to 15 stable priority pages. Embed each one under the old model and the new model. The median cosine across the set is your program-level Vector Drift signal.
- Tier sort drives scope. Stable (over 0.97): log the migration, no work. Mild (0.93 to 0.97): re-baseline priority pages. Material (0.85 to 0.93): re-score the full priority set and update grade thresholds. Breaking (under 0.85): full migration event, never compare scores across the boundary without re-baselining.
- Without the migration, every IGS report under the new model is measured against an outdated yardstick. Trend lines lie. Cross-quarter comparisons collapse. Stakeholders read grade shifts as content quality changes when the embedding model is what actually moved.
- Framework slot: Component 6 of Corpus Engineering. Inside the Transform pillar of MERIT. Sibling response to the Corpus Drift quarterly re-score and the forthcoming Semantic-Relationship Drift entity audit.
Why The Embedding Migration Matters
Major embedding models release every 60 to 90 days through 2025-2026. Gemini Embedding 2 dropped in March. Voyage 4 and Jina Embeddings v5 landed in April. Qwen3-Embedding-8B was already in production by late 2025. text-embedding-3-large remains the January 2024 baseline still in active use across many programs.
Each release changes the math. The same content lands at a new cosine position under the new model. A page that scored 0.78 against the SERP centroid under text-embedding-3-large may score 0.69 under Qwen3-Embedding-8B. The page did not change. The yardstick did.
A scoring program that does not handle the boundary explicitly produces three predictable failures. Trend lines lie because Q2 scores compare to Q4 scores under a different model. Cross-quarter stakeholder reports contradict themselves with no visible cause. Analysts develop unconscious model-shopping bias because the version that gives the best score quietly becomes the version on the report.
The Embedding Migration is the discipline that closes those failures.
What Triggers a Migration
The workflow runs on vendor events, not on a calendar.
Trigger 1: Vendor Release
A major release at the embedding vendor in active use. OpenAI publishes a new text-embedding-3 generation. Voyage releases v5. Cohere releases embed-v4. Jina or Qwen updates their open-weight model. The release notes describe behavior changes in cosine values, dimensionality, or trained domains.
Not every release warrants a full migration. Some are minor patches with negligible cosine drift. The tier sort in step 6 decides scope after the parallel embedding runs.
Trigger 2: Silent Vendor Swap
Vendors sometimes swap underlying models without a versioned release. The endpoint name stays the same. The behavior changes. A monthly cosine sanity check on the anchor set catches this case. If the cross-model cosine on the anchor set drops below 0.97 between two consecutive months without a known release, treat it as a silent swap and run the workflow.
Trigger 3: Voluntary Upgrade
A program may decide to move from text-embedding-3-large to Voyage 4 for reasons unrelated to vendor releases. Common drivers: cost, dimensionality, multilingual support, retrieval performance on a specific surface. A voluntary upgrade is still an embedding migration. The workflow applies in full.
The Eight-Step Re-Baseline Workflow

Step 1: Tag every score with the embedding model and version.
Every IGS score in storage gets two new attributes: the embedding model that produced it and the version of that model. A score of 0.62 under text-embedding-3-large is a different score from 0.62 under Voyage 4, and the storage layer has to capture that distinction.
Implementation looks like two columns added to whatever data store holds the scoring program. Spreadsheets add an embedding_model column and a model_version column. A database adds two fields and a NOT NULL constraint going forward. Dashboards add a model-version filter and a visible label on every report.
Scores without versions become unreadable after the first migration. Tag from day one, even before the first migration, so the boundary is clean when it arrives.
Step 2: Pick a stable anchor page set.
Choose 10 to 15 priority pages that stand in for the broader corpus. The anchor set is the canary across every future migration. Its median cross-model cosine is the program-level Vector Drift signal.
Selection criteria:
- Diverse priority queries (head, torso, and long-tail mix)
- Stable topical positions (not under active editing or rewrite)
- A spread of subject areas if the program covers multiple verticals
- Pages with at least one year of scoring history when possible
Pages under active editing make poor anchors. Their content changes between embeddings, which pollutes the cross-model signal. The anchor set itself gets re-evaluated every 12 months. Pages that started stable can drift into active editing, and new stable pages appear.
Step 3: Trigger on every model upgrade.
Subscribe to release feeds from the embedding vendors in use. OpenAI publishes via their changelog and developer newsletter. Voyage AI, Cohere, Jina, and Qwen publish through their respective release notes. Set up an alert (email or Slack) for any release that mentions embedding-model-name in the title.
A monthly cosine sanity check on the anchor set catches silent swaps that bypass the release feed. Embed each anchor page under the current production model. Compare to the prior month's embedding. A median cosine over 0.99 means nothing changed. A drop below 0.97 means the vendor swapped models or the endpoint behavior changed.
Don't wait for a quarterly report to discover a migration happened months ago.
Step 4: Run parallel embedding on the anchor set.

Embed each anchor page twice. Once under the previous model (the program's current baseline). Once under the new model. Store both vector sets. Do not overwrite the old vectors.
For a 15-page anchor set with a typical 768 to 3,072-dimensional embedding, this is a small workload. A few seconds of API calls. A few hundred kilobytes of vector storage. The cost is negligible. The signal is the foundation of every step that follows.
Step 5: Compute the same-content cross-model cosine spread.
For each anchor page, compute the cosine similarity between the old vector and the new vector. The closer to 1.0, the more stable the page across the migration. A lower number means more Vector Drift on that page.
The median across the 15-page anchor set is the program-level cross-model cosine. That single number drives the tier sort in step 6.
Look at the full distribution, not just the median. A median of 0.95 with three outliers at 0.82 means a few page types behave differently under the new model. Those outliers deserve a per-page note in the migration log.
Step 6: Sort the swap into a tier.
The tier ranges follow the same anchor points as the Vector Drift piece. Median cross-model cosine determines the tier; the tier determines the scope.
| Tier | Anchor Cosine | Scope of Work |
|---|---|---|
| Stable | over 0.97 | Log the migration. Continue with prior baselines. Add a model-version note to the dashboard. |
| Mild | 0.93 to 0.97 | Re-baseline priority pages under the new model. Update grade thresholds. Communicate the boundary in the next stakeholder report. |
| Material | 0.85 to 0.93 | Re-baseline the full priority set. Re-score the SERP cluster for every priority query. Update all letter-grade mappings. Brief stakeholders before the next report. |
| Breaking | under 0.85 | Full migration event. Treat the boundary as a hard reset. Do not compare scores across it without explicit re-baselining. Communication plan and stakeholder briefings before any new scores go out. |
Tier ranges are working anchor points, not universal cosine values. Cross-model cosine bands vary by vendor pair and by content domain. The numbers are for the program; the tier is for the conversation.

Step 7: Re-score the priority set under the new model.
Scope follows the tier from step 6:
- Stable: bookkeeping only.
- Mild: re-score the priority pages.
- Material: re-score the priority pages plus the SERP cluster for every priority query.
- Breaking: re-score everything and reset the program baseline.
The re-score uses the standard Embedding Audit workflow with the new model as the embedding function. Pull each priority page. Pull the live top-10 SERP. Embed everything under the new model. Compute IGS. Compare to the prior-model baseline.
The cosine bands shift across models. A 0.62 IGS that was a B+ under text-embedding-3-large might be a B under Voyage 4 because the new model clusters peer pairs more loosely. The grade-threshold update in step 8 handles that explicitly.
Step 8: Publish the new baseline and grade thresholds.
Write up the migration as a short internal note. Capture six things: the prior model and version, the new model and version, the migration date, the anchor median cosine, the tier, and the new grade thresholds.
Update the dashboard or reporting surface to show the model-version boundary:
- A vertical line on a trend chart at the migration date.
- A model-version column on score tables.
- A stakeholder-facing note on the first report after the migration that explains the boundary in plain language.
Trust in the scoring program depends on the boundary being visible. A silent migration looks like a content quality change to anyone reading the dashboard. The publish step closes that gap.
Choosing Your Anchor Page Set
The anchor set is the load-bearing element of the workflow. Get it right once; every future migration runs on the same foundation.
Sizing
Ten to fifteen pages is the working range. Fewer than ten and the median is noisy. More than fifteen and the parallel-embedding step takes long enough that the workflow starts skipping the early-warning sanity checks.
Diversity
The anchor set covers the surface area of the scoring program. A program with head-term priority pages, torso supporting content, and long-tail FAQ articles needs all three represented in the anchor set. Pick four or five from each band.
If the program covers multiple verticals (healthcare, finance, e-commerce), pick at least two pages from each. Vendor model behavior often differs across domains. The anchor set has to surface that variance.
Stability
Anchors are pages with stable content. Pages under active rewrites, A/B copy experiments, or seasonal refreshes pollute the cross-model signal. The content itself is moving between embeddings.
Re-evaluate the anchor set every 12 months. Pages that were stable last year may have moved into active editing. New stable pages emerge as the program matures. A drifting anchor set is worse than no anchor set because it produces false drift signals.
Five Failure Modes
No anchor set. Every migration starts from a cold cache. Selection, embedding, and signal-extraction all happen under time pressure during a release event. Migrations that should take two days take two weeks. The first symptom is missing every release for two quarters until a major contradiction surfaces in a stakeholder report.
Re-scoring without tagging. A program runs the workflow correctly but skips step 1. Scores in the database are unmarked. After the second migration, the historical record becomes a flat list of cosine numbers with no way to know which model produced which score. Trend analysis collapses.
Migrating before the vendor swap is permanent. Some vendor releases get rolled back within a week. A team that runs the full Material migration on day one sometimes ends up re-baselining a third time when the vendor reverts. The fix: wait one week before the parallel-embedding step on any release that touches the active production model.
Comparing scores across the boundary without re-baselining. A program runs the workflow, sees a Mild tier, and decides the migration is too small to bother with a priority-set re-score. Then the next quarterly report compares Q2 scores under the old model to Q4 scores under the new model. The trend lines look catastrophic when nothing in the content moved. The program reports a problem that does not exist.
Skipping the stakeholder communication step. The team handles the migration cleanly internally. Step 8 publishes the new baseline to the dashboard. Stakeholders open the next report and see grade shifts across the priority set. Without a note explaining the model boundary, the shift reads as a content-quality change. Trust erodes. Editorial work gets prioritized against problems that the embedding model created.
Where The Embedding Migration Sits in the Framework
Component 6 of Corpus Engineering is Corpus Maintenance, the time-dimension component of the discipline. Maintenance covers the three drifts that erode a scoring program over months and years.
Each drift has its own response:
- Corpus Drift is handled by the quarterly re-score workflow against the live top-10.
- Vector Drift is handled by The Embedding Migration covered in this piece.
- Semantic-Relationship Drift is handled by the entity audit workflow covered in its own piece.
Inside MERIT, the migration sits in the Transform pillar. Transform keeps and adapts the corpus over time. Model-side movement is what The Embedding Migration handles.
Frequently Asked Questions
What is The Embedding Migration?
The Embedding Migration is the eight-step Re-Baseline workflow that re-scores a priority corpus under a new embedding model. It is the operational response to Vector Drift, the model-side movement that happens whenever an embedding vendor releases a new model.
How often does the migration trigger?
Roughly every 60 to 90 days across the major embedding vendors in 2025-2026. Not every release warrants a full migration; the tier sort in step 6 decides scope. Most programs run the eight-step workflow on every major release but only do the heavy re-scoring work on Mild, Material, and Breaking tiers.
Do I need to migrate on every vendor release?
The workflow runs on every release. The full re-scoring effort runs only when the anchor-set cosine drops below 0.97. A Stable release is mostly bookkeeping plus the publish step.
Can I skip the anchor set and re-score everything every time?
You can, but the cost is unsustainable. A 50-page priority program re-scored against a 10-page SERP cluster for each query is 500 embeddings per migration. With migrations every 60 to 90 days, that adds up. The anchor set is the early-warning system that scopes the migration to the size that actually warrants the effort.
How much work is a typical migration?
A Stable migration is a few hours. Mild is one to two days. Material is one to two weeks. Breaking is two to four weeks plus a stakeholder communication plan. Most migrations in practice are Mild or Material.
What happens to historical scores after a migration?
Historical scores are preserved with their original model-version tags. They are not retroactively re-scored, because the math of the prior model is what it was. Cross-model comparisons happen only at the post-migration baseline; pre-migration scores are read against the prior baseline.
Should I rebuild grade thresholds during every migration?
Yes for Mild, Material, and Breaking migrations. The cosine bands shift across models. A B+ band under text-embedding-3-large may be a different cosine range under Voyage 4. The grade-threshold rebuild is what keeps letter grades consistent across model boundaries.
Does this apply to intra-site embedding workflows?
Yes, with a tighter cadence. Intra-site retrieval pipelines (semantic search, internal RAG, related-content modules) are wholly bound to the embedding model in use. A model swap on an intra-site pipeline without an explicit migration breaks retrieval quietly. The workflow is the same; the anchor set is a sample of intra-site queries instead of priority pages.
How does this differ from the Corpus Drift response?
Corpus Drift is landscape movement; the response is a quarterly re-score against the live top-10 under the same model. The Embedding Migration is math movement; the response is a Re-Baseline under a new model. Different mechanisms, different cadences, same scoring program.
Where does The Embedding Migration fit inside the MERIT Framework?
Inside the MERIT Framework, the migration sits in the Transform pillar. Transform keeps and adapts the corpus over time. Model-side movement is what The Embedding Migration handles.
The Bottom Line
Vector Drift is the unforced movement of the math underneath your scoring program. The Embedding Migration is the disciplined response.
Eight steps. Tier-driven scope. A published baseline that makes the model boundary visible to everyone reading the dashboard. Without the workflow, every IGS report under the new model is read against a yardstick that no longer exists.
Math will keep moving. New embedding models will keep landing every 60 to 90 days through 2026 and beyond. Programs that survive the model cadence are the ones with a Re-Baseline rule that runs on every release.
For the broader framework underneath this piece, see the parent article on Corpus Engineering and the sibling pieces on Corpus Drift and Vector Drift.
