sie
开源自托管推理引擎,用一个集群统一服务 agent 所需的各类模型,覆盖搜索、文档转 markdown、结构化输出、内容安全与 agent 循环等任务,并提供 OpenAI 兼容 API。亮点是替代多个零散模型服务器的组合,100+ 模型按需加载、支持 K8s 部署与自动伸缩,且已集成 LangChain、LlamaIndex 等主流生态,方便开发者快速接入生产环境。
README
SIE:Superlinked 推理引擎
面向 agent 的自托管推理。你的 agent 调用的每个开放模型,都由你云中的一个集群统一服务。
⭐ 帮助我们触达更多开发者,壮大 SIE 社区。给这个仓库点个 Star 吧!
关于
SIE 是一个开源推理引擎,通过一个 API 运行支撑每个 agent 任务背后的模型:搜索与检索、文档转 Markdown、结构化输出、内容安全,以及 agent 循环本身。它取代了为每个任务单独部署模型服务器的拼凑式方案,用一个系统提供 100+ 个模型,并按需加载每个模型。
- 兼容 OpenAI 的 API,可无缝迁移:
/v1/embeddings、/v1/chat/completions、/v1/completions、/v1/responses - 预配置模型目录:Stella、SPLADE、Qwen3、GLiNER、SigLIP 等;embedding 和检索模型已基于 MTEB 进行基准测试
- 同时服务多个模型,支持按需加载和 LRU 逐出
- 为负载均衡网关、KEDA 自动扩缩和 Grafana 仪表盘提供 Kubernetes 与 Helm 部署配置
- 与 LangChain、LlamaIndex、Haystack、DSPy、CrewAI、Chroma、Qdrant、Weaviate 和 LanceDB 集成
开发
安装 mise,然后在仓库根目录引导带版本管理的 Python、Rust、Node.js 和 Helm 工具链:
./tools/init.sh
常用开发检查和本地服务器可通过 mise 任务运行:
mise run test
mise run lint
mise run typecheck
mise run serve
mise run rust-check
mise run rust-test
mise run gateway-test
mise run server-sidecar-test
Python 工作区使用已提交的根锁定文件。包成员关系在 pyproject.toml 中显式声明;只有在同一次变更中加入了完整源码的包才会进入工作区。原生音频始终是可选构建:安装 cmake,然后运行
mise exec -- uv sync --frozen --project . --all-packages --all-extras。
任务
一个 SIE 集群运行着整个 agent 背后的推理。每个任务由少数几个可替换模型组成;完整集合请浏览 packages/sie_server/models/。
| 任务 | 作用 | 模型 |
|---|---|---|
| 搜索 | 对上下文进行 embedding、匹配和重排序,以检索到正确上下文。 | bge-m3、splade-v3、colbertv2、qwen3-reranker |
| 文档转 Markdown | 将 PDF、Office 文件和扫描件转换为干净的 Markdown。 | lightonocr、glm-ocr、mineru、paddleocr-vl、docling |
| 结构化输出 | 符合 schema 的 JSON,可抽取或生成。 | gliner2、nuner-zero、qwen3.6-27b |
| 内容防护 | 输出带概率的安全判定,由你设定阈值。 | granite-guardian-2b |
| 运行 agent 循环 | 使用开放 LLM 规划步骤并调用工具,支持流式输出。 | qwen3.6-27b |
快速开始
1. 启动服务器
# macOS (Apple Silicon) or Linux, native (requires 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, NVIDIA GPU — Transformers 5 OCR models (LightOnOCR and GLM-OCR)
docker run --gpus all -p 8080:8080 \
-v sie-hf-cache:/app/.cache/huggingface \
ghcr.io/superlinked/sie-server:latest-cuda12-transformers5
# Linux, CPU
docker run -p 8080:8080 \
-v sie-hf-cache:/app/.cache/huggingface \
ghcr.io/superlinked/sie-server:latest-cpu-default
Docker 镜像按 bundle 区分,因此依赖不兼容的模型族可以保持隔离。LightOnOCR 或 GLM-OCR 请使用 transformers5 镜像;default 镜像特意不提供这些模型。
# in a second terminal
curl http://localhost:8080/readyz # expect: ok
服务器开箱即用,原生提供 OpenAI API,embedding 和生成都可以通过它调用(集群网关提供 /v1/chat/completions、/v1/completions 和 /v1/responses)。首次调用只需 curl 即可:
curl http://localhost:8080/v1/embeddings \
-H 'Content-Type: application/json' \
-d '{"model": "sentence-transformers/all-MiniLM-L6-v2", "input": "Hello world"}'
# {"object": "list", "data": [{"object": "embedding", "embedding": [-0.0344, 0.0310, ...
每个模型的首次调用会下载其权重(进度显示在服务器终端中)。后续调用会跳过下载;推理延迟取决于模型、任务、硬件和 batch size。
2. 安装 SDK
pip install sie-sdk # Python
npm install @superlinked/sie-sdk # TypeScript (pnpm and yarn work too)
3. 生成 embeddings、重排序并抽取实体
from sie_sdk import SIEClient
from sie_sdk.types import Item
client = SIEClient("http://localhost:8080")
# Generate embeddings
result = client.encode("sentence-transformers/all-MiniLM-L6-v2", Item(text="Hello world"))
print(result["dense"].shape) # (384,)
# Rerank search results
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}
# Extract entities
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, ...}
文本生成运行在 GPU 生成镜像上;先停止之前的服务器,然后在同一端口启动此镜像:
# Linux, NVIDIA GPU (for generation on Apple Silicon via MLX, see the docs below)
docker run --gpus all -p 8080:8080 \
-v sie-hf-cache:/app/.cache/huggingface \
ghcr.io/superlinked/sie-server:latest-cuda12-sglang
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
有关在 Apple Silicon (MLX) 上生成、TypeScript 详解以及介于这两者之间的各种配置,请参阅 快速开始指南、TypeScript SDK 文档 和 SDK 参考。
生产环境
同样的代码可以对接生产集群。SIE 自带负载均衡网关和 Kubernetes 部署层,包括 Helm charts、KEDA 自动扩缩(可缩容到零)和 Grafana 仪表盘。公开的 Terraform 模块分别维护,用于 阿里云 ACK、EKS、AKS 和 GKE。不只是服务器,而是整个技术栈。全部基于 Apache 2.0。
# pick one values overlay: values-ack.yaml / values-aws.yaml / values-aks.yaml / values-gke.yaml
# (pin a chart version for reproducible installs, e.g. --version 0.6.18)
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 类型),以了解采纳情况。不会