Choose the right entry point
| Export | Role | What you call |
|---|
Schift | Hosted API client | catalog, embed, routing, bench, db, query, rerank, usage |
Client | Legacy projection client | fit(), bench(), list_projections(), get_projection() |
Projection | Pure local transform object | transform(), save(), load() |
migrate() / client.migrate.run() | Adapter-driven rewrite | Read vectors from one store and write projected vectors to another |
Hosted API modules
pythonfrom schift import Schift
client = Schift()
client.routing.set(
primary="openai/text-embedding-3-small",
fallback="google/gemini-embedding-001",
mode="failover",
)
documents = [
{"id": "doc-1", "text": "Quarterly revenue report"},
{"id": "doc-2", "text": "Board meeting summary"},
]
client.db.create_collection("finance-docs", dimension=3072)
client.db.upsert_text("finance-docs", documents, model="openai/text-embedding-3-large")
results = client.query("board summary", collection="finance-docs", rerank=True)
usage = client.usage.get(period="30d", granularity="day")
| Module | Public calls | Notes |
|---|
catalog | list(), get(model_id) | Model metadata lookup |
embed | client.embed(text, model, dimensions=None) and .batch(...) | Returns numpy.ndarray values |
routing | get(), set(primary=None, fallback=None, mode=None) | Routing policy stored server-side |
bench | run(source, target, data=None) | Returns BenchReport from the API |
db | create_collection, list_collections, get_collection, collection_stats, delete_collection, upsert, upsert_text | Hosted collection operations |
query | client.query(query, collection=None, db=None, model=None, top_k=10, rerank=False, rerank_top_k=None) | Callable module |
rerank | client.rerank(query, documents, top_k=5) | Callable module |
usage | get(period="30d", granularity=None) | Aggregate account usage |
Projection-first workflow
pythonimport numpy as np
from schift import Client
legacy = Client(api_key="sch_your_key_here")
projection = legacy.fit(
source=np.load("sample-old.npy"),
target=np.load("sample-new.npy"),
source_model="openai/text-embedding-3-small",
target_model="google/gemini-embedding-001",
)
converted = projection.transform(np.load("all-old.npy"))
projection.save("./projection-openai-to-gemini")
Adapters and store-to-store migration
| Adapter | Install | Use it for |
|---|
NpyAdapter | Included | Offline .npy arrays and batch exports |
PgVectorAdapter | pip install schift[postgres] | PostgreSQL + pgvector tables |
QdrantAdapter | pip install schift[qdrant] | Qdrant collections |
pythonfrom schift import migrate
from schift.adapters.pgvector import PgVectorAdapter
from schift.adapters.qdrant import QdrantAdapter
result = migrate(
source=PgVectorAdapter(
conninfo="postgresql://user:pass@localhost/app",
table="documents",
),
sink=QdrantAdapter(
url="http://localhost:6333",
collection="documents-v2",
),
projection=projection,
dry_run=True,
)