진입점 선택
| export | 역할 | 주요 호출 |
|---|
Schift | 호스티드 API 클라이언트 | catalog, embed, routing, bench, db, query, rerank, usage |
Client | 레거시 projection 클라이언트 | fit(), bench(), list_projections(), get_projection() |
Projection | 완전한 로컬 변환 객체 | transform(), save(), load() |
migrate() / client.migrate.run() | 어댑터 기반 재작성 | 한 저장소에서 읽고 다른 저장소에 projection 결과를 씀 |
호스티드 API 모듈
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": "분기 매출 보고서"},
{"id": "doc-2", "text": "이사회 회의 요약"},
]
client.db.create_collection("finance-docs", dimension=3072)
client.db.upsert_text("finance-docs", documents, model="openai/text-embedding-3-large")
results = client.query("회의 요약", collection="finance-docs", rerank=True)
usage = client.usage.get(period="30d", granularity="day")
| 모듈 | 공개 호출 | 메모 |
|---|
catalog | list(), get(model_id) | 모델 메타데이터 조회 |
embed | client.embed(text, model, dimensions=None) 와 .batch(...) | numpy.ndarray 반환 |
routing | get(), set(primary=None, fallback=None, mode=None) | 서버에 저장되는 라우팅 정책 |
bench | run(source, target, data=None) | API에서 BenchReport 반환 |
db | create_collection, list_collections, get_collection, collection_stats, delete_collection, upsert, upsert_text | 호스티드 컨렉션 작업 |
query | client.query(query, collection=None, db=None, model=None, top_k=10, rerank=False, rerank_top_k=None) | 호출 가능한 모듈 |
rerank | client.rerank(query, documents, top_k=5) | 호출 가능한 모듈 |
usage | get(period="30d", granularity=None) | 집계된 계정 사용량 |
projection 중심 워크플로우
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")
어댑터와 저장소 간 마이그레이션
| 어댑터 | 설치 | 용도 |
|---|
NpyAdapter | 기본 포함 | 오프라인 .npy 배열과 배치 결과 |
PgVectorAdapter | pip install schift[postgres] | PostgreSQL + pgvector 테이블 |
QdrantAdapter | pip install schift[qdrant] | Qdrant 컨렉션 |
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,
)