Embedding Router & Universal Vector Space
Making every vector
speak the same language.
Stop re-embedding your entire corpus every time a better model ships. Schift migrates millions of vectors in minutes — 99.7% retrieval recovery, 0 lines of code changed, provider cost + 5%. OpenAI today, Gemini tomorrow — your choice, always.
# Same API. Any provider. Switch anytime. from schift import Schift s = Schift(api_key="sk-...") # Embed with OpenAI vec = s.embed("quarterly revenue report", model="openai/text-embedding-3-large") # Same code, different provider vec = s.embed("quarterly revenue report", model="google/gemini-embedding-2") # Switch your entire DB to a new model — no re-embedding s.upgrade(db="my_pgvector", to="google/gemini-embedding-2") # 99.7% recovery
7+
models supported
99.7%
retrieval recovery
0
lines of code to switch
<1ms
per vector migration
Proof
Tested across 11 model pairs. Zero failures.
We measured Recall@10 on real retrieval benchmarks. Without projection, switching models drops retrieval to absolute zero. With Schift, recovery ranges from 92% to 104%.
Common misconception
"Same vendor, same dimensions — should be compatible, right?"
Wrong. OpenAI's ada-002 and text-embedding-3-small are both 1536-dimensional, but querying one with the other returns zero relevant results. Same story for Google's Gemini models. Every model version creates an entirely different vector space. Dimensions match — semantics don't.
OpenAI → OpenAI
ada-002 + ada-002
0.851
ada-002 + 3-small
0.000
Same vendor. Same 1536 dims. Completely broken.
Google → Google
gem-001 + gem-001
0.978
gem-001 + gem-2
0.000
Same vendor. Same 3072 dims. Completely broken.
With Schift
Gemini-001 baseline
0.978
R@10
Model mismatch
0.000
R@10
Schift projected
0.970
R@10 — 99.7% recovered
| Source model | Target model | Dimensions | Recovery | Verdict |
|---|---|---|---|---|
| ada-002 | text-embedding-3-small | 1536 → 1536 | 97.7% | SAFE |
| ada-002 | text-embedding-3-large | 1536 → 3072 | 97.9% | SAFE |
| text-embedding-3-small | text-embedding-3-large | 1536 → 3072 | 97.1% | SAFE |
| gemini-embedding-001 | gemini-embedding-2 | 3072 → 3072 | 99.7% | SAFE |
| ada-002 | gemini-embedding-001 | 1536 → 3072 | 95.8% | SAFE |
| gemini-embedding-001 | text-embedding-3-large | 3072 → 3072 | 103.5% | SAFE |
| gemini-embedding-001 | text-embedding-3-small | 3072 → 1536 | 99.8% | SAFE |
Benchmark: SciFact (5,183 documents, 300 queries). Training set: 20% of corpus. Recovery = projected R@10 / gold R@10 × 100. Cross-vendor pairs include OpenAI and Google embedding models.
How it works
Embed. Switch. Migrate. Done.
One API for every embedding provider. Switch models in one line, migrate existing vectors without re-embedding, and never worry about vendor outages.
Embed
One endpoint for every embedding provider. OpenAI, Google — just change the model string. We handle auth, rate limits, and retries.
from schift import Schift s = Schift(api_key="sk-...") vec = s.embed( "quarterly revenue report", model="openai/text-embedding-3-large" )
Switch
Try a different provider — change one string. Same API, same response format. Compare quality and cost across providers without rewriting a single line.
# Same code. Different provider. vec = s.embed( "quarterly revenue report", model="google/gemini-embedding-2" ) # Response format identical to OpenAI call above
Migrate
Already have vectors in production? Schift projects them to the new model space. 99.7% retrieval recovery. No re-embedding. No downtime.
s.upgrade( db="my_pgvector", to="google/gemini-embedding-2" ) # → 1M vectors migrated in 2.3s # → Recovery: 99.7% | Verdict: SAFE
Failover
Provider down? Schift auto-routes to a fallback. Projection keeps your vectors compatible. Your users notice nothing.
# Automatic. No code change. # 09:41:03 OpenAI 503 detected # 09:41:03 Failover → google/gemini-embedding-2 # 09:41:03 Projection applied (99.7%) # 09:44:12 OpenAI restored, switching back
Pricing
Pay what the provider charges. Plus 5%.
No monthly fees. No per-seat pricing. You pay the exact provider cost plus a flat 5% routing fee. Switch providers anytime — your bill follows the model, not a contract.
Embedding
Provider cost
+ 5%
Same pricing as calling the provider directly. We add 5% for routing, auth, and failover.
Migration
$0
included
Vector projection and model migration included at no extra cost. Switch models without re-embedding.
Failover
Automatic
+ 0%
Provider goes down? We route to a fallback with projection. No extra charge for failover routing.
Example: 1M tokens embedded
OpenAI text-embedding-3-small
Provider: $0.02 → Schift: $0.021
OpenAI text-embedding-3-large
Provider: $0.13 → Schift: $0.1365
Google gemini-embedding-2
Provider: Free → Schift: $0.00
Supported providers
OpenAI
text-embedding-3-small, 3-large, ada-002
gemini-embedding-001, gemini-embedding-2
More providers added regularly. Request a provider →
Startup Program
Under 50 employees and less than $5M raised? Get $500 in free credits. We believe early-stage teams shouldn't pay for vendor lock-in they didn't choose. Apply →