SIE 소개
에이전트 하나를 제대로 굴리려면 생각보다 많은 모델이 붙습니다. 질문을 벡터로 바꾸는 임베딩(Embedding) 모델, 검색 결과를 다시 줄 세우는 리랭킹(Reranking) 모델, 첨부된 PDF를 텍스트로 바꾸는 OCR 모델, 답을 스키마에 맞춰 뽑아내는 추출 모델, 여기에 계획을 세우고 도구를 호출하는 LLM까지 필요합니다. 각 모델이 요구하는 서빙 스택이 다르다는 점이 문제입니다. 생성 모델은 SGLang 같은 전용 서버에, 임베딩은 또 다른 서버에, OCR은 직접 감싼 웹 서버에 올리다 보면 배포 대상과 모니터링 대시보드, GPU 할당 정책이 모델 수만큼 늘어납니다. 모델 하나를 교체하려 할 때마다 인프라 작업이 먼저 붙는 구조입니다.
SIE(Superlinked Inference Engine)는 이 조각난 스택을 서버 하나로 합치려는 자체 호스팅 추론 엔진입니다. 검색과 검색 결과 재정렬, 문서를 마크다운으로 바꾸는 작업, 구조화된 출력, 콘텐츠 안전성 판정, 그리고 에이전트 루프 자체까지 에이전트가 필요로 하는 모델 작업을 하나의 API 뒤에 둡니다. 100종이 넘는 모델을 미리 설정해 두고 요청이 들어온 시점에 가중치를 내려받아 적재하며, 오래 쓰지 않은 모델은 LRU 방식으로 메모리에서 내립니다. API는 OpenAI 규격을 그대로 따라 /v1/embeddings, /v1/chat/completions, /v1/completions, /v1/responses 를 제공하므로, 기존 클라이언트 코드에서 주소만 바꿔 옮겨올 수 있습니다.
SIE가 서버 프로세스 하나로 끝나지 않는다는 점도 특징입니다. 저장소에는 부하 분산 게이트웨이, KEDA 기반 오토스케일링, Grafana 대시보드, 그리고 GKE·EKS·AKS용 Terraform 모듈이 함께 들어 있습니다. 최신 릴리즈는 2026년 8월 9일 공개된 v0.7.1 입니다. 본 게시물에서는 SIE가 기존 서빙 방식과 무엇이 다른지, 어떤 작업을 어떤 모델로 처리하는지, 그리고 로컬에서 어떻게 띄워보는지를 정리합니다.
기존 모델 서빙 방식과 SIE의 차이
SIE 개발팀은 이 프로젝트를 "작업마다 서버를 따로 두는 짜깁기(patchwork)를 대체하는 하나의 시스템" 으로 소개합니다. 작업별 전용 서버를 쌓는 방식과 비교하면 차이가 분명하게 드러납니다.
| 항목 | SIE | 작업별 전용 서버를 쌓는 방식 |
|---|---|---|
| 배포 단위 | 클러스터 하나 | 모델·작업마다 별도 서버 |
| 모델 적재 | 요청 시 내려받아 적재, LRU로 제거 | 서버별로 상주 |
| 동시 서빙 | 한 서버가 여러 모델을 동시에 서빙 | 서버 하나에 모델 하나가 일반적 |
| 클라이언트 | OpenAI 호환 엔드포인트 하나 | 서버마다 다른 API 규격 |
| 운영 자산 | 게이트웨이·오토스케일링·대시보드·Terraform 포함 | 직접 구성 |
여기서 실질적인 이득은 GPU 사용률 쪽에서 나옵니다. 리랭킹 모델과 OCR 모델을 각각 상주시키면 실제로 호출되지 않는 시간에도 메모리를 물고 있지만, SIE는 호출 시점에 올리고 쓰지 않으면 내리기 때문에 같은 GPU 위에서 더 많은 종류의 모델을 돌릴 수 있습니다. 대신 어떤 모델의 첫 호출은 가중치를 내려받는 시간을 감수해야 하며, 이 지연은 개발팀도 문서에서 명시하고 있습니다.
SIE는 누구에게 유용한가
문서 파싱, 검색, 리랭킹, 생성을 한 서비스 안에서 모두 쓰면서 모델을 외부 API에 맡기지 않으려는 팀에 가장 잘 맞습니다. 특히 원본 문서가 회사 밖으로 나가면 안 되는 환경에서, 작업별 서버를 각각 운영하는 부담을 줄이려는 경우가 전형적인 사용처입니다. 반대로 생성 모델 하나만 높은 처리량으로 굴리는 것이 목표라면 SGLang이나 vLLM 같은 단일 목적 서버를 직접 쓰는 편이 단순하고, 이미 관리형 임베딩 API로 충분히 돌아가는 소규모 서비스라면 클러스터를 도입할 이유가 크지 않습니다. 판단 기준은 성능보다 모델 종류의 수 에 가깝습니다.
SIE가 다루는 다섯 가지 작업
SIE는 에이전트의 작업 단위를 다섯 가지로 나누고, 각 작업마다 교체 가능한 모델 후보를 미리 붙여 둡니다. 전체 목록은 저장소의 packages/sie_server/models/ 디렉토리에서 확인할 수 있습니다.
| 작업 | 하는 일 | 모델 |
|---|---|---|
| 검색(Search) | 임베딩·매칭·리랭킹으로 필요한 문맥을 찾습니다 | bge-m3, splade-v3, colbertv2, qwen3-reranker |
| 문서를 마크다운으로 | PDF, 오피스 파일, 스캔본을 정돈된 마크다운으로 바꿉니다 | lightonocr, glm-ocr, mineru, paddleocr-vl, docling |
| 구조화된 출력 | 스키마에 맞는 JSON을 추출하거나 생성합니다 | gliner2, nuner-zero, qwen3.6-27b |
| 콘텐츠 안전성 판정 | 임계값을 걸 수 있는 확률값과 함께 판정 결과를 냅니다 | granite-guardian-2b |
| 에이전트 루프 실행 | 오픈 LLM으로 단계를 계획하고 도구를 호출합니다 | qwen3.6-27b |
모델 카탈로그에는 Stella, SPLADE, Qwen3, GLiNER, SigLIP 계열이 포함되어 있고, 임베딩·검색 계열 모델은 MTEB 기준으로 측정한 값을 함께 제공합니다. 카탈로그의 각 모델은 설정 파일 하나로 정의되어 있어, SDK에 Hugging Face 모델 ID를 그대로 넘기면 됩니다.
SIE의 게이트웨이 구조와 MCP 엣지
SIE는 클러스터 앞단에 게이트웨이를 두고 /v1/chat/completions, /v1/completions, /v1/responses 를 받습니다. 여기에 더해 packages/sie_mcp/ 에는 MCP(Model Context Protocol) 엣지가 들어 있습니다. Claude 같은 MCP 클라이언트가 문서 처리 작업을 자기 컨텍스트 안에서 처리하는 대신 SIE 클러스터로 넘겨, 에이전트 토큰을 아끼도록 하는 구성 요소입니다.
이 구조에서 눈여겨볼 부분은 자격증명과 원본 데이터가 지나는 경로입니다. MCP 클라이언트는 커넥터 시크릿으로 엣지에 접속하고, SIE_API_KEY 는 사용자의 VPC 안에 있는 엣지가 보관합니다. 원본 바이트와 개인정보는 엣지까지만 도달하고 모델 API로는 넘어가지 않는다는 것이 이 배치의 의도입니다.
SIE 설치 및 사용법
가장 가벼운 경로는 파이썬 패키지입니다. macOS(Apple Silicon)와 리눅스에서 Python 3.12 환경이면 바로 서버가 뜹니다.
# macOS (Apple Silicon) 또는 Linux, 네이티브 실행 (Python 3.12 필요)
pip install "sie-server[local]" && sie-server serve
# Linux, NVIDIA GPU
docker run --gpus all -p 8080:8080 \
-v sie-hf-cache:/app/.cache/huggingface \
ghcr.io/superlinked/sie-server:latest-cuda12-default
# Linux, CPU
docker run -p 8080:8080 \
-v sie-hf-cache:/app/.cache/huggingface \
ghcr.io/superlinked/sie-server:latest-cpu-default
도커 이미지는 의존성이 충돌하는 모델 계열을 분리하려고 번들별로 나뉘어 있습니다. LightOnOCR과 GLM-OCR을 쓰려면 transformers5 이미지가 필요하고, 텍스트 생성은 latest-cuda12-sglang 이미지에서 동작합니다. 서버가 떴는지는 준비 상태 확인 엔드포인트로 봅니다.
curl http://localhost:8080/readyz # ok 가 나오면 정상
첫 호출은 curl 하나면 충분합니다.
curl http://localhost:8080/v1/embeddings \
-H 'Content-Type: application/json' \
-d '{"model": "sentence-transformers/all-MiniLM-L6-v2", "input": "Hello world"}'
파이썬과 타입스크립트 SDK도 함께 제공됩니다.
pip install sie-sdk # Python
npm install @superlinked/sie-sdk # TypeScript
SDK는 임베딩 생성, 리랭킹, 개체 추출을 각각 encode, score, extract 로 묶어 둡니다.
from sie_sdk import SIEClient
from sie_sdk.types import Item
client = SIEClient("http://localhost:8080")
# 임베딩 생성
result = client.encode("sentence-transformers/all-MiniLM-L6-v2", Item(text="Hello world"))
print(result["dense"].shape) # (384,)
# 검색 결과 재정렬
scores = client.score(
"cross-encoder/ms-marco-MiniLM-L-6-v2",
Item(text="What is machine learning?"),
[Item(text="ML learns from data."), Item(text="The weather is sunny.")],
)
print(scores["scores"][0]) # {'item_id': 'item-0', 'score': -7.1, 'rank': 0}
# 개체 추출
result = client.extract(
"urchade/gliner_multi-v2.1",
Item(text="Tim Cook is the CEO of Apple."),
labels=["person", "organization"],
)
print(result["entities"][0])
# {'text': 'Tim Cook', 'label': 'person', 'score': 0.992, 'start': 0, 'end': 8, ...}
텍스트 생성은 생성용 이미지에서 돌리며, 같은 클라이언트의 generate 를 씁니다.
result = client.generate(
"Qwen/Qwen3-0.6B",
"Reply with a single word: the capital of France.",
max_new_tokens=16,
temperature=0.0,
)
print(result["text"]) # Paris
LangChain, LlamaIndex, Haystack, DSPy, CrewAI 같은 프레임워크와 Chroma, Qdrant, Weaviate, LanceDB 같은 벡터 저장소 연동 가이드는 문서 사이트의 통합 문서에 정리되어 있습니다.
SIE로 검색 전략을 비교한 예제
여러 모델을 한 클러스터에서 부를 수 있으면 무엇이 달라지는지를 보여주는 예제가 저장소에 들어 있습니다. examples/retrieval-ablation 은 SEC EDGAR에서 받은 은행 10-K 보고서 6건, 2,942페이지에 1,854개의 실제 질의를 걸고 여덟 가지 검색 전략을 NDCG@10 으로 줄 세운 실험입니다.
예제가 최종적으로 고른 조합은 서로 성격이 다른 다중 벡터 모델 두 개(BAAI/bge-m3 1024차원, jinaai/jina-colbert-v2 128차원)로 후보를 모은 뒤 mixedbread-ai/mxbai-rerank-large-v2 로 재정렬하는 방식입니다. 예제 문서는 이 조합이 NDCG@10 0.621, Recall@10 0.665 를 기록해 단일 밀집 벡터 모델보다 57%, BM25 단독보다 3배 높았다고 적고 있습니다. 이 수치는 해당 문서 집합에서 측정한 값이므로 다른 도메인에 그대로 옮겨 쓸 수는 없지만, "여덟 가지 전략을 실제로 다 돌려보고 고른다"는 작업 자체가 서빙 스택 하나로 가능해진다는 점은 그대로 읽을 수 있습니다.
SIE의 프로덕션 배포
같은 코드를 프로덕션 클러스터에 그대로 붙일 수 있도록, 저장소는 Helm 차트와 클라우드별 Terraform 모듈을 함께 제공합니다. KEDA 오토스케일링은 0까지 축소하는 설정을 지원합니다.
# values-gke.yaml / values-aws.yaml / values-aks.yaml 중 하나를 고릅니다
helm upgrade --install sie-cluster oci://ghcr.io/superlinked/charts/sie-cluster \
--namespace sie --create-namespace \
--set hfToken.create=true \
--set hfToken.value=YOUR_HF_TOKEN \
-f https://raw.githubusercontent.com/superlinked/sie/main/deploy/helm/sie-cluster/values-gke.yaml
도입 전에 확인해 둘 항목이 하나 있습니다. SIE는 버전, 운영체제, 아키텍처, GPU 종류 같은 익명 사용 데이터를 수집합니다. IP 주소나 호스트명, 요청 데이터는 수집하지 않는다고 밝히고 있으며, SIE_TELEMETRY_DISABLED=1 또는 DO_NOT_TRACK=1 환경 변수로 끌 수 있습니다. 프로젝트를 만든 배경은 AI Engineer Europe 2026 발표 영상 Why we built SIE 에서 직접 설명하고 있습니다.
SIE의 라이선스
SIE는 Apache License 2.0으로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다. 서버뿐 아니라 게이트웨이와 Terraform 모듈을 포함한 배포 스택 전체가 같은 라이선스입니다.
SIE를 만든 Superlinked 공식 홈페이지
SIE 공식 문서 사이트
SIE 프로젝트 GitHub 저장소
더 읽어보기
-
Club-3090: RTX 3090 GPU에서 vLLM, llama.cpp, SGLang으로 LLM을 서빙하는 커뮤니티 레시피 모음
-
mlxcel: 애플 실리콘에 최적화된 Rust 기반의 LLM/VLM 추론 런타임 및 서버 (feat. lablup)
-
NVIDIA, RTEB 1위 오픈 임베딩 모델 Nemotron 3 Embed 공개 (feat. RAG, 에이전트 검색)
이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. ![]()
이 도구를 직접 설치해 사용해보셨다면, 파이토치 한국 사용자 모임
회원들을 위해 경험이나 팁을 댓글로 남겨주세요! ![]()


