문서

버킷

파일을 버킷에 업로드하면 Schift가 OCR, 청킹, 임베딩, 인덱싱을 자동 처리합니다. 이후 한 번의 쿼리로 모든 문서를 검색할 수 있습니다.

버킷 생성

bashcurl -X POST https://api.schift.io/v1/buckets \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{"name": "research-papers", "description": "ML 연구 논문 모음"}'
필드타입필수설명
namestringYes조직 내 고유한 버킷 이름
descriptionstringNo설명

파일 업로드

multipart form data로 하나 이상의 파일을 업로드합니다. 처리는 비동기로 진행되며, 엔드포인트는 job ID를 즉시 반환합니다.

bashcurl -X POST https://api.schift.io/v1/buckets/{bucket_id}/upload \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "ocr_strategy=auto" \
  -F "chunk_size=512"
필드타입기본값설명
filesFile[]하나 이상의 파일 (PDF, DOCX, Markdown, 이미지, 텍스트)
ocr_strategystringautoOCR 모드: auto, force, skip
chunk_sizeinteger512텍스트 청크당 문자 수
chunk_overlapinteger50연속 청크 간 겹침

비동기 처리

각 파일은 백그라운드 작업이 됩니다. Jobs API로 진행 상황을 추적하세요. 크레딧은 업로드 시 예약되고 처리 완료 후 정산됩니다.

버킷 검색

bashcurl -X POST https://api.schift.io/v1/buckets/{bucket_id}/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{"query": "트랜스포머의 어텐션 메커니즘", "top_k": 5}'
필드타입기본값설명
querystring자연어 검색 쿼리
top_kinteger10반환할 결과 수
modelstring버킷 기본값쿼리용 임베딩 모델 오버라이드
filterobject메타데이터 필터

결과에는 매칭된 텍스트 청크, 유사도 점수, 원본 파일명, 청크 메타데이터가 포함됩니다.

목록 조회 & 삭제

bash# 모든 버킷 조회
curl https://api.schift.io/v1/buckets \
  -H "Authorization: Bearer $SCHIFT_API_KEY"

# 버킷 삭제 (되돌릴 수 없음)
curl -X DELETE https://api.schift.io/v1/buckets/{bucket_id} \
  -H "Authorization: Bearer $SCHIFT_API_KEY"

지원 파일 형식

PDF, DOCX, Markdown, 텍스트, 이미지 (JPG, PNG, WebP, TIFF, BMP, GIF). ocr_strategyauto이면 이미지와 스캔된 PDF는 자동으로 OCR 처리됩니다.

엣지 (Edge) 관리

버킷 내 노드 간 관계를 정의합니다. 교육과정 순서, 판례 선례 관계, 문서 계층 구조 등을 표현할 수 있습니다.

bash# 엣지 추가
curl -X POST https://api.schift.io/v1/buckets/{bucket_id}/edges \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "edges": [
      {"source": "case-2024-456", "target": "case-2024-123", "relation": "supersedes"},
      {"source": "chapter-1", "target": "section-1-1", "relation": "has_child"}
    ]
  }'

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

# 엣지 삭제
curl -X DELETE https://api.schift.io/v1/buckets/{bucket_id}/edges \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{"source": "A", "target": "B", "relation": "related_to"}'
relation설명예시
contradicts두 노드가 서로 모순됨판례 충돌
supersedes소스가 타겟을 대체함개정 판례
caused_by인과 관계사건 원인
is_a분류/유형 관계카테고리
related_to일반 연관기본값
has_child부모→자식 구조문서 계층
follows순서/선후 관계교육과정 순서