문서

검색

자연어, 사전 계산된 벡터, 하이브리드 모드, 리랭킹, 시간 제약을 사용하여 컨렉션을 검색합니다.

벡터 검색

bashPOST /v1/query

쿼리를 임베딩하고 컨렉션의 벡터 공간으로 프로젝션한 후 가장 유사한 결과를 반환합니다. 텍스트 쿼리, 사전 계산된 벡터, 하이브리드 검색, 크로스 인코더 리랭킹, 시간 필터링을 지원합니다.

파라미터타입필수기본값설명
querystring아니오*--자연어 검색 텍스트
query_vectorfloat[]아니오*--사전 계산된 임베딩 (임베딩 단계 생략)
collectionstring--검색할 컨렉션 이름
modelstring아니오조직 설정임베딩 모델
top_kinteger아니오10반환할 결과 수
modestring아니오vectorvector 또는 hybrid (벡터 + BM25 RRF)
rerankboolean아니오false크로스 인코더 리랭킹 활성화
rerank_top_kinteger아니오top_k리랭킹 후 유지할 결과 수
rerank_modelstring아니오--리랭커 모델 오버라이드
temporalstring아니오--before, after, between, as_of, latest
temporal_startinteger아니오--에포크 밀리초 (latest 제외 temporal 설정 시 필수)
temporal_endinteger아니오--에포크 밀리초 (between에 필수)

참고

query 또는 query_vector 중 하나는 필수입니다. 하이브리드 모드와 리랭킹은 텍스트 쿼리가 필요합니다.

기본 검색

bashcurl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query": "임베딩 모델 마이그레이션 방법",
    "collection": "product-docs",
    "top_k": 5
  }'

사전 계산된 벡터

사전 계산된 벡터를 직접 전달하여 임베딩 단계를 생략합니다. 벡터는 컨렉션 차원에 맞게 프로젝션됩니다.

bashcurl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query_vector": [0.1, 0.2, ...],
    "collection": "product-docs",
    "top_k": 5
  }'

하이브리드 검색

벡터 유사도와 BM25 키워드 매칭을 Reciprocal Rank Fusion으로 결합합니다. 후보를 3배 오버페치한 후 병합합니다.

bashcurl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query": "근로계약 해지 조항",
    "collection": "legal-docs",
    "mode": "hybrid",
    "top_k": 10
  }'

리랭킹

크로스 인코더 모델로 결과를 재평가하여 정밀도를 높입니다. 결과에 원래 score와 rerank_score가 모두 포함됩니다.

bashcurl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query": "데이터 보존 정책",
    "collection": "compliance",
    "rerank": true,
    "rerank_top_k": 3
  }'

시간 기반 검색

event_time 메타데이터로 결과를 필터링합니다. event_time이 없는 벡터는 temporal 쿼리에서 제외됩니다.

bash# 최근 7일간 문서
curl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query": "최근 정책 변경",
    "collection": "policies",
    "temporal": "after",
    "temporal_start": 1711324800000
  }'

# 특정 기간 내 문서
curl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query": "분기 보고서",
    "collection": "finance",
    "temporal": "between",
    "temporal_start": 1704067200000,
    "temporal_end": 1711929600000
  }'

크로스 모델 검색

모든 벡터는 Schift의 정규 프로젝션 레이어를 통과합니다. 한 임베딩 모델로 저장한 문서를 다른 모델로 검색할 수 있습니다.

bash# OpenAI로 저장된 문서를 다른 모델로 검색
curl -X POST https://api.schift.io/v1/query \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SCHIFT_API_KEY" \
  -d '{
    "query": "임베딩 모델 마이그레이션",
    "collection": "product-docs",
    "model": "voyage/voyage-4-large",
    "top_k": 3
  }'