콘텐츠로 이동

컬렉션

Show:

Collections API는 구형 클라이언트와 SDK를 위한 v1 호환성 계층(compatibility surface)이며, deprecated 상태의 API다. 내부적으로 collection(컬렉션)과 bucket(버킷)은 동일한 기본 저장 객체를 가리키며, 컬렉션 검색은 버킷 검색에 위임된다.

참고: 새로운 연동에서는 이 문서의 경로 대신 BucketsPOST /v2/buckets/\{bucket_id\}/search를 사용하세요.

버전상태경로 접두어안내
v1폐기 예정/v1/collections/*호환용이다. 새로운 기능이 추가되지 않는다.
v2현재/v2/buckets/*모든 신규 연동에 사용하세요.

v1 컬렉션 검색 엔드포인트는 Deprecation: true, Warning, 그리고 POST /v2/buckets/\{bucket_id\}/search를 가리키는 Link 후속 버전 헤더를 반환한다.

모든 컬렉션 API 엔드포인트는 Authorization 헤더에 API 키가 필요한다.

Authorization: Bearer sch_xxxxxxxxxxxxxxxxxxxx

각 엔드포인트는 특정 API 키 스코프(scope)도 필요한다.

ScopeAccess
collections:manage컬렉션을 생성하고 삭제한다.
collections:read컬렉션을 목록 조회하거나, 단일 조회하거나, 통계를 읽는다.
collections:use벡터를 추가(upsert)하거나 삭제한다.
embed문서를 임베딩하고 추가한다(/documents/add).
query컬렉션을 검색한다.

/v1/organizations/\{org_id\} 아래의 대시보드 세션 경로는 대상 조직(organization)의 멤버인 로그인한 사용자가 필요한다.

필드타입설명
idstring고유한 컬렉션 식별자이다.
namestring사람이 읽을 수 있는 컬렉션 이름이다.
dimensioninteger컬렉션의 임베딩 차원이다.
modelstring컬렉션에 사용되는 임베딩 모델이다.
backendstring벡터 백엔드이다. 예: engine.
vector_countinteger색인된 벡터의 개수이다.

새 컬렉션을 생성한다. 컬렉션 이름은 조직 내에서 고유해야 한다.

필드타입필수기본값설명
namestringYes,컬렉션 이름이다.
dimensionintegerYes,컬렉션의 벡터 차원이다.
modelstringNoschift-embed-1-small사용할 임베딩 모델이다.
backendstringNoengine벡터 백엔드이다. 지원 값: engine, pgvector, weaviate, qdrant, pinecone, milvus, chroma, elasticsearch, redis, mongodb.
{
"name": "legacy-faq",
"dimension": 1024,
"model": "schift-embed-1-small",
"backend": "engine"
}
{
"id": "abc123def456",
"name": "legacy-faq",
"dimension": 1024,
"model": "schift-embed-1-small",
"backend": "engine",
"vector_count": 0
}
상태원인
400잘못된 백엔드 또는 요청 본문이다.
403API 키에 collections:manage 스코프가 없는다.
409동일한 이름의 컬렉션이 이미 존재한다.

인증된 조직의 컬렉션을 목록 조회한다.

[
{
"id": "abc123def456",
"name": "legacy-faq",
"dimension": 1024,
"model": "schift-embed-1-small",
"backend": "engine",
"vector_count": 128
}
]
상태원인
403API 키에 collections:read 스코프가 없는다.

이름으로 단일 컬렉션을 조회한다.

ParameterTypeDescription
namestring컬렉션 이름이다.
{
"id": "abc123def456",
"name": "legacy-faq",
"dimension": 1024,
"model": "schift-embed-1-small",
"backend": "engine",
"vector_count": 128
}
상태원인
403API 키에 collections:read 스코프가 없는다.
404컬렉션을 찾을 수 없는다.

컬렉션의 현재 벡터 개수와 메타데이터를 반환한다. 개수는 벡터 백엔드에서 직접 읽어오며, 저장된 개수도 갱신된다.

ParameterTypeDescription
namestring컬렉션 이름이다.
{
"name": "legacy-faq",
"dimension": 1024,
"model": "schift-embed-1-small",
"backend": "engine",
"vector_count": 128
}
상태원인
403API 키에 collections:read 스코프가 없는다.
404컬렉션을 찾을 수 없는다.

컬렉션을 삭제하고 벡터 테이블을 제거한다.

ParameterTypeDescription
namestring컬렉션 이름이다.

성공 시 204 No Content를 반환한다.

상태원인
403API 키에 collections:manage 스코프가 없는다.
404컬렉션을 찾을 수 없는다.

컬렉션에 원시 벡터를 추가(upsert)한다. 이미 존재하는 벡터 id는 대첩다.

참고: 요청당 최대 배치 크기는 2048개 벡터이다.

ParameterTypeDescription
collectionstring컬렉션 이름이다.
필드타입필수설명
vectorsobject[]Yes벡터 항목 배열이다.
vectors[].idstringYes고유한 벡터 식별자이다.
vectors[].valuesnumber[]Yes임베딩 값이다. 컬렉션 차원과 일치해야 한다.
vectors[].metadataobjectNo자유 형식의 메타데이터이다.
{
"vectors": [
{
"id": "vec-1",
"values": [0.01, -0.02, 0.03],
"metadata": {"source": "faq"}
}
]
}
{
"upserted": 1
}
상태원인
400배치 크기가 2048을 초과하거나, 벡터 차원이 컬렉션과 일치하지 않는다.
402할당량을 초과했다.
403API 키에 collections:use 스코프가 없는다.
404컬렉션을 찾을 수 없는다.

DELETE /v1/collections/{collection}/vectors

섹션 제목: “DELETE /v1/collections/{collection}/vectors”

ID로 컬렉션에서 특정 벡터를 삭제한다.

ParameterTypeDescription
collectionstring컬렉션 이름이다.
필드타입필수설명
idsstring[]Yes삭제할 벡터 ID이다. 비어 있으면 안 된다.
{
"ids": ["vec-1", "vec-2"]
}
{
"deleted": 2
}
상태원인
400ids가 비어 있는다.
403API 키에 collections:use 스코프가 없는다.
404컬렉션을 찾을 수 없는다.
501설정된 백엔드가 ID 기반 벡터 삭제를 지원하지 않는다.

POST /v1/collections/{collection}/documents

섹션 제목: “POST /v1/collections/{collection}/documents”

문서를 임베딩하고 그 결과 벡터를 컬렉션에 저장한다. 요청 본문에는 대상 임베딩 모델이 포함된다.

참고: 요청당 최대 배치 크기는 2048개 문서이다.

ParameterTypeDescription
collectionstring컬렉션 이름이다.
필드타입필수설명
documentsobject[]Yes문서 항목 배열이다.
documents[].idstringNo문서 식별자이다. 생략하면 자동 생성된다.
documents[].textstringYes임베딩할 텍스트이다.
documents[].metadataobjectNo자유 형식의 메타데이터이다.
modelstringYes임베딩 모델 ID이다.
{
"documents": [
{
"id": "doc-1",
"text": "How do I reset my password?",
"metadata": {"category": "support"}
}
],
"model": "schift-embed-1-small"
}
{
"upserted": 1
}
상태원인
400배치 크기가 2048을 초과하거나, 임베딩 모델을 알 수 없는다.
402할당량을 초과했다.
403API 키에 필요한 collections:use 또는 embed 스코프가 없는다.
404컬렉션을 찾을 수 없는다.

문서를 임베딩하여 컬렉션에 추가한다. 컬렉션이 존재하지 않으면 dimension=1024, model=schift-embed-1-small, backend=engine으로 자동 생성된다.

참고: 요청당 최대 배치 크기는 2048개 문서이다.

ParameterTypeDescription
namestring컬렉션 이름이다.
필드타입필수기본값설명
documentsstring[]Yes,임베딩할 원시 텍스트 문자열이다. 비어 있으면 안 된다.
idsstring[]Nonull선택적 문서 ID이다.
metadataobject[]Nonull선택적 메타데이터 객체로, 문서당 하나씩이다.
taskstringNonull임베딩 태스크이다. 다음 중 하나: retrieval_query, retrieval_document, semantic_similarity, question_answering, clustering, classification, code_retrieval.
modelstringNoschift-embed-1-small임베딩 모델 ID이다.
{
"documents": [
"How do I reset my password?",
"Where can I download invoices?"
],
"metadata": [
{"category": "support"},
{"category": "billing"}
],
"model": "schift-embed-1-small"
}
{
"collection": "legacy-faq",
"added": 2,
"ids": ["id-1", "id-2"]
}
상태원인
400documents가 비어 있거나 배치 크기가 2048을 초과한다.
402할당량을 초과했다.
403임베딩 사용 한도에 도달했거나, API 키에 필요한 스코프가 없는다.

컬렉션을 검색한다. 이 엔드포인트는 bucket search 위에 있는 호환성 래퍼이며, 단순화된 응답을 반환한다.

ParameterTypeDescription
namestring컬렉션 이름이다.
필드타입필수기본값설명
querystringNo*,텍스트 쿼리이다. query 또는 query_vector 중 하나는 필수이다.
query_vectornumber[]No*,미리 계산된 쿼리 벡터이다.
taskstringNonull임베딩 태스크이다. 유효한 태스크 값을 참조하세요.
top_kintegerNo10반환할 결과 개수이다. 최대 1000.
filterobjectNonull메타데이터 필터이다.
modelstringNonull임베딩 또는 재정렬 모델 오버라이드이다.
modestringNohybrid검색 모드이다. vector 또는 hybrid.
rerankbooleanNofalse재정렬을 활성화한다.
rerank_top_kintegerNonull재정렬의 상위 k 컷오프이다.
rerank_modelstringNonull재정렬 모델 ID이다.
temporalstringNonull시간 필터이다. before, after, between, as_of, 또는 latest.
temporal_startintegerNonulltemporal이 설정된 경우 필요한다(latest 제외).
temporal_endintegerNonulltemporal=between인 경우 필요한다.
advancedobjectNonull고급 스코어링 파라미터이다. graph_weight, temporal_weight, hit_weight, vector_weight, bm25_weight, hops, temporal_half_life_days.
expand_contextobjectNonull컨텍스트 확장 파라미터이다. window, max_extra, score_decay.
{
"query": "reset password",
"top_k": 5,
"filter": {"category": "support"},
"mode": "hybrid"
}
{
"collection": "legacy-faq",
"results": [
{
"id": "doc-1",
"score": 0.92,
"text": "How do I reset my password?",
"metadata": {"category": "support"},
"neighbors": null,
"citation": null
}
]
}

응답에는 v2 bucket search 후속 엔드포인트를 가리키는 더 이상 사용되지 않음(deprecation) 헤더도 포함된다.

Deprecation: true
Warning: 299 - "Deprecated search endpoint; migrate to /v2/buckets/{bucket_id}/search"
Link: </v2/buckets/abc123def456/search>; rel="successor-version"
상태원인
400queryquery_vector 둘 다 제공되지 않았거나, 잘못된 시간 매개변수이다.
402할당량을 초과했다.
403검색 사용 한도에 도달했거나, API 키에 필요한 스코프가 없는다.
404컬렉션을 찾을 수 없는다.

이 경로는 Schift 대시보드에서 사용되며 세션 인증에 의존한다. 호출하는 사용자는 \{org_id\}의 멤버여야 한다.

GET /v1/organizations/{org_id}/collections

섹션 제목: “GET /v1/organizations/{org_id}/collections”

조직의 컬렉션을 목록 조회한다.

GET /v1/organizations/{org_id}/collections/{name}

섹션 제목: “GET /v1/organizations/{org_id}/collections/{name}”

조직에서 단일 컬렉션을 조회한다.

POST /v1/organizations/{org_id}/collections

섹션 제목: “POST /v1/organizations/{org_id}/collections”

조직에 컬렉션을 생성한다.

필드타입필수기본값설명
namestringYes,컬렉션 이름이다.
modelstringNoschift-embed-1-small임베딩 모델이다.
dimensionintegerNomodel default or 1024벡터 차원이다.
backendstringNoengine벡터 백엔드이다.
상태원인
400name이 누락되었거나 지원하지 않는 백엔드이다.
403사용자가 조직 멤버가 아니거나, 요금제의 컬렉션 한도에 도달했다.

DELETE /v1/organizations/{org_id}/collections/{name}

섹션 제목: “DELETE /v1/organizations/{org_id}/collections/{name}”

조직에서 컬렉션을 삭제한다. 204 No Content를 반환한다.

GET /v1/organizations/{org_id}/collections/{name}/stats

섹션 제목: “GET /v1/organizations/{org_id}/collections/{name}/stats”

실시간 벡터 개수를 포함한 컬렉션 통계를 반환한다.

GET /v1/organizations/{org_id}/vectordb-configs

섹션 제목: “GET /v1/organizations/{org_id}/vectordb-configs”

조직 수준의 VectorDB 설정을 목록 조회한다.

PUT /v1/organizations/{org_id}/vectordb-configs

섹션 제목: “PUT /v1/organizations/{org_id}/vectordb-configs”

백엔드의 VectorDB 설정을 생성하거나 업데이트한다.

필드타입필수설명
collection_idstringYes대상 컬렉션 ID이다.
backendstringYes백엔드 이름이다. 지원되는 값이어야 한다.
endpointstringNo백엔드 엔드포인트 URL이다.
api_keystringNo백엔드 인증 정보이다.
extraobjectNo추가적인 백엔드별 옵션이다.
{
"status": "ok"
}
상태원인
400지원하지 않는 백엔드이다.
403사용자가 조직 멤버가 아닙다.