문서

핵심 개념

Schift는 Schift Embed 1 기본 경로와 migration-first 벡터 변환 경로를 분리해서 각 표면의 책임을 명확하게 둡니다.

서로 다른 임베딩 모델의 벡터는 기본적으로 호환되지 않습니다. 차원이 같아도 모델이 바뀌면 기하 구조가 달라집니다.

두 가지 제품 표면

표면주요 객체쓰는 용도
Schift Embed 1 기본 경로Schift, catalog, embed, db, query, usage새 임베딩 호출, 호스티드 컨렉션, canonical space 검색
migration-first 런타임Client, Projection, migrate(), adapters원문 재임베딩 없이 projection 을 학습하고 저장 벡터를 재작성

Projection matrix

textsource vectors (N, src_dim)
        -> learned matrix W (src_dim, tgt_dim)
        -> projected vectors (N, tgt_dim)

Schift는 두 모델로 모두 임베딩한 페어 샘플로 W를 학습합니다. 실제 마이그레이션 시점에는 기존 벡터에 행렬 곱만 적용하면 됩니다.

어댑터 파이프라인

textAdapter(source store)
        -> Projection.transform(batch.embeddings)
        -> Adapter(sink store)
속성일반적인 범위
필요한 페어 샘플 수500-2,000
지원 마이그레이션 형태1536->768, 3072->1024 등
실행 비용벡터당 서브밀리초
대량 원문 필요 여부아니오

운영 메모

Projection은 brownfield 경로이고, Schift Embed 1은 greenfield 기본 경로입니다. 둘 다 같은 canonical space로 들어옵니다.

Temporal Constraints (시간 제약)

모든 벡터는 event_time 메타데이터 필드(에포크 밀리초)를 가질 수 있습니다. temporal 쿼리 파라미터로 시간 기반 필터링을 적용하면 특정 시점의 데이터 조회나 시계열 검색이 가능합니다.

모드동작필수 필드
beforeevent_time < temporal_starttemporal_start
afterevent_time > temporal_starttemporal_start
betweentemporal_start <= event_time <= temporal_endtemporal_start, temporal_end
as_ofevent_time <= temporal_start (특정 시점의 스냅샷)temporal_start
latest가장 최근 event_time 순으로 정렬없음

event_time 필드가 없는 벡터는 모든 temporal 쿼리에서 제외됩니다. latest 모드는 품질 보장을 위해 후보를 20배 오버페치한 후 정렬합니다.

pythonfrom schift import Schift

client = Schift(api_key="sch_xxx")

# 최근 24시간 이내 문서
import time
one_day_ago = int((time.time() - 86400) * 1000)
results = client.collections.search(
    "news", "최신 AI 동향",
    temporal="after", temporal_start=one_day_ago,
)

# 2026년 1월 1일 기준 스냅샷
results = client.collections.search(
    "contracts", "해지 조항",
    temporal="as_of", temporal_start=1735689600000,
)

Edges & Graph (엣지 & 그래프)

Schift 버킷은 벡터 간 타입이 지정된 가중치 엣지를 지원하여 플랫 벡터 저장소를 지식 그래프로 전환합니다. 엣지는 supersedes, contradicts, caused_by 등의 도메인 관계를 인코딩합니다.

관계 타입용도
related_to일반 연관 관계 (기본값)
supersedes최신 버전이 이전 문서를 대체
contradicts두 문서가 상충
caused_by사건/이슈 간 인과 관계
is_a분류 체계 / 계층 구조
has_child부모-자식 트리 구조
follows순차적 순서 (예: 법률 조항)

엣지는 WAL 기반 내구성을 갖춘 압축 CSR 포맷으로 저장됩니다. 각 엣지는 가중치(0.0-1.0)를 가지며, 방향(outgoing, incoming, both)과 관계 타입으로 조회할 수 있습니다.

bash# 법률 문서 간 인용 엣지 추가
curl -X POST https://api.schift.io/v1/buckets/{bucket_id}/edges \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"edges": [
    {"source": "article-301", "target": "article-42", "relation": "supersedes", "weight": 1.0},
    {"source": "ruling-2024-001", "target": "article-301", "relation": "caused_by", "weight": 0.8}
  ]}'

# 노드의 outgoing 엣지 조회
curl https://api.schift.io/v1/buckets/{bucket_id}/edges/article-301?direction=outgoing \
  -H "Authorization: Bearer $SCHIFT_API_KEY"