Jina v5 嵌入向量服务 · OpenAI 兼容
/v1/embeddings· 端口6008· 镜像wkao/jina-embedding-v5:latest· 固定 CPU 推理
docker run镜像已内置默认配置(默认加载 HF 版 jina-embeddings-v5-text-small),不带任何参数即可启动:
# 拉取镜像
docker pull wkao/jina-embedding-v5:latest
# 运行(未传 API_KEYS 时使用镜像内置默认 Key: sk-aaabbbcccdddeeefffggghhhiiijjjkkk)
docker run -d --name jina-embedding-v5 -p 6008:6008 wkao/jina-embedding-v5:latest
# 指定自有 API Key(多个用逗号分隔)
docker run -d --name jina-embedding-v5 -p 6008:6008 \
-e API_KEYS="sk-your-key-1,sk-your-key-2" \
wkao/jina-embedding-v5:latest
模型在后台加载,/health 就绪前返回 503,请耐心等待。
docker compose(推荐)docker-compose.yml
services:
jina-embedding-v5:
image: wkao/jina-embedding-v5:latest
container_name: jina-embedding-v5
restart: unless-stopped
ports:
- "6008:6008"
environment:
# ---- 认证 ----(多个 Key 用逗号分隔;留空则用 model_config.yaml 默认值)
API_KEYS: "${API_KEYS:-sk-aaabbbcccdddeeefffggghhhiiijjjkkk}"
AUTH_ENABLED: "${AUTH_ENABLED:-true}"
# ---- 模型 ----(本服务固定 CPU 推理,镜像内安装 +cpu 版 torch)
# MODEL_TYPE: jina_v5_text_small (HF 原生,默认) / jina_v5_text_retrieval_gguf (GGUF)
MODEL_NAME: "${MODEL_NAME:-jina-embeddings-v5-text-small}"
MODEL_TYPE: "${MODEL_TYPE:-jina_v5_text_small}"
MODEL_PATH: "${MODEL_PATH:-./jina-embeddings-v5-text-small}"
MODEL_TASK: "${MODEL_TASK:-retrieval}" # retrieval / text-matching / clustering / classification
MODEL_INFERENCE_THREADS: "${MODEL_INFERENCE_THREADS:-0}"
# ---- 服务 ----
SERVER_PORT: "6008"
SERVER_WORKERS: "${SERVER_WORKERS:-1}"
SERVER_MAX_REQUEST_SIZE_MB: "${SERVER_MAX_REQUEST_SIZE_MB:-50}"
LOG_LEVEL: "${LOG_LEVEL:-INFO}"
LOG_FORMAT: "${LOG_FORMAT:-json}" # json / text
# ---- 限流 ----
RATE_LIMIT_ENABLED: "${RATE_LIMIT_ENABLED:-true}"
RATE_LIMIT_RPM: "${RATE_LIMIT_RPM:-60}"
RATE_LIMIT_TPM: "${RATE_LIMIT_TPM:-1000000}"
# ---- Embedding 缓存 (LRU + TTL + 内存上限) ----
EMBED_CACHE_ENABLED: "${EMBED_CACHE_ENABLED:-true}"
EMBED_CACHE_MAX_SIZE: "${EMBED_CACHE_MAX_SIZE:-10000}"
EMBED_CACHE_TTL_SECONDS: "${EMBED_CACHE_TTL_SECONDS:-7200}"
EMBED_CACHE_MAX_MEMORY_MB: "${EMBED_CACHE_MAX_MEMORY_MB:-128}"
# ---- 运行时 ----
PYTHONUNBUFFERED: "1"
PYTHONDONTWRITEBYTECODE: "1"
TZ: "${TZ:-Asia/Shanghai}"
# 如需在宿主机覆盖模型文件或配置,取消以下注释
# volumes:
# - ./llm/jina-embeddings-v5-text-small:/app/jina-embeddings-v5-text-small:ro
# - ./app/config/model_config.yaml:/app/config/model_config.yaml:ro
healthcheck:
test:
- CMD
- python
- -c
- "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://localhost:6008/health', timeout=5).status==200 else 1)"
interval: 30s
timeout: 10s
retries: 5
start_period: 300s # 模型后台加载,需覆盖加载耗时
logging:
driver: json-file
options:
max-size: "20m"
max-file: "5"
# HF bfloat16 模型加载约 2.5-3.5GB 内存
deploy:
resources:
limits:
memory: 6g
reservations:
memory: 2g
networks:
default:
name: jina-embedding-net
启动与常用命令:
docker compose up -d # 启动
docker compose logs -f jina-embedding-v5 # 实时日志
curl http://localhost:6008/health # 健康检查
docker compose down # 停止并清理
Compose 中的环境变量默认值与镜像内
app/config/model_config.yaml保持一致;若两处都设置,环境变量优先级更高。完整变量清单见下方 环境变量 章节。
.env 覆盖配置在 docker-compose.yml 同目录创建 .env,docker compose 自动读取(默认值全在 compose 里,只写要改的项即可):
API_KEYS=sk-your-key-1,sk-your-key-2
AUTH_ENABLED=true
LOG_LEVEL=INFO
LOG_FORMAT=json
RATE_LIMIT_RPM=120
EMBED_CACHE_MAX_SIZE=20000
TZ=Asia/Shanghai
不重建镜像即可替换权重或调配置,取消 compose 里 volumes 段注释:
volumes:
- ./llm/jina-embeddings-v5-text-small:/app/jina-embeddings-v5-text-small:ro
- ./app/config/model_config.yaml:/app/config/model_config.yaml:ro
Content type
Image
Digest
sha256:f7aa25aec…
Size
1.4 GB
Last updated
18 days ago
docker pull wkao/jina-embedding-v5