Sign inSign up

wkao/bge-embedding-m3

By wkao

•Updated 4 days ago

bge-embedding-m3 work on openai api

Image
Machine learning & AI
0

3.7K

wkao/bge-embedding-m3 repository overview

⁠bge-embeddings-m3

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

Tag summary

Content type

Image

Digest

sha256:e4c0e2a9b…

Size

1.6 GB

Last updated

4 days ago

docker pull wkao/bge-embedding-m3