bge-embedding-m3 work on openai api
3.7K
BGE-M3 嵌入向量服务 · OpenAI 兼容
/v1/embeddings· 端口6008· 镜像wkao/bge-embedding-m3:latest· 固定 CPU 推理
docker run# 拉取镜像
docker pull wkao/bge-embedding-m3:latest
# 运行(未传 API_KEYS 时使用镜像内置默认 Key: sk-aaabbbcccdddeeefffggghhhiiijjjkkk)
docker run -d --name bge-embedding-m3 -p 6008:6008 wkao/bge-embedding-m3:latest
# 指定自有 API Key(多个用逗号分隔)
docker run -d --name bge-embedding-m3 -p 6008:6008 \
-e API_KEYS="sk-your-key-1,sk-your-key-2" \
wkao/bge-embedding-m3:latest
模型在后台加载,/health 就绪前返回 503,请耐心等待。
docker compose(推荐)docker-compose.yml
services:
bge-embedding-m3:
image: wkao/bge-embedding-m3:latest
container_name: bge-embedding-m3
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_NAME: "${MODEL_NAME:-bge-embeddings-m3}"
MODEL_TYPE: "${MODEL_TYPE:-bge_embeddings_m3}"
MODEL_PATH: "${MODEL_PATH:-./bge-embeddings-m3}"
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 缓存 ----
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}"
# ---- 运行时 ----
TIKTOKEN_CACHE_DIR: /app/tiktokens
PYTHONUNBUFFERED: "1"
PYTHONDONTWRITEBYTECODE: "1"
TZ: "${TZ:-Asia/Shanghai}"
# 如需在宿主机覆盖模型文件或配置,取消以下注释
# volumes:
# - ./llm/bge-embeddings-m3:/app/bge-embeddings-m3: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"
deploy:
resources:
limits:
memory: 4g
reservations:
memory: 1g
networks:
default:
name: bge-embedding-net
启动与常用命令:
docker compose up -d # 启动
docker compose logs -f bge-embedding-m3 # 实时日志
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/bge-embeddings-m3:/app/bge-embeddings-m3:ro
- ./app/config/model_config.yaml:/app/config/model_config.yaml:ro
Content type
Image
Digest
sha256:e4c0e2a9b…
Size
1.6 GB
Last updated
4 days ago
docker pull wkao/bge-embedding-m3