config.py 1.1 KB
"""
Embedding module configuration.

This module is intentionally a plain Python file (no env var parsing, no extra deps).
Edit values here to configure:
- server host/port
- local model settings (paths/devices/batch sizes)
"""

from typing import Optional
import os


class EmbeddingConfig(object):
    # Server
    HOST = os.getenv("EMBEDDING_HOST", "0.0.0.0")
    PORT = int(os.getenv("EMBEDDING_PORT", 6005))

    # Text embeddings (BGE-M3)
    TEXT_MODEL_DIR = "Xorbits/bge-m3"
    TEXT_DEVICE = "cuda"  # "cuda" or "cpu" (model may fall back to CPU if needed)
    TEXT_BATCH_SIZE = 32

    # Image embeddings
    # Option A: clip-as-service (Jina CLIP server, recommended)
    USE_CLIP_AS_SERVICE = os.getenv("USE_CLIP_AS_SERVICE", "true").lower() in ("1", "true", "yes")
    CLIP_AS_SERVICE_SERVER = os.getenv("CLIP_AS_SERVICE_SERVER", "grpc://127.0.0.1:51000")

    # Option B: local CN-CLIP (when USE_CLIP_AS_SERVICE=false)
    IMAGE_MODEL_NAME = "ViT-H-14"
    IMAGE_DEVICE = None  # type: Optional[str]  # "cuda" / "cpu" / None(auto)

    # Service behavior
    IMAGE_BATCH_SIZE = 8


CONFIG = EmbeddingConfig()