diff --git a/.env.coolify.example b/.env.coolify.example index 3d9d742..2dad7a8 100644 --- a/.env.coolify.example +++ b/.env.coolify.example @@ -52,14 +52,13 @@ TRIAL_PERIOD_DAYS=14 # --- Embedding Service --- EMBEDDING_BACKEND=local -LOCAL_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2 +LOCAL_EMBEDDING_MODEL=BAAI/bge-m3 LOCAL_RERANKER_MODEL=cross-encoder/ms-marco-MiniLM-L-6-v2 PDF_EXTRACTION_BACKEND=pymupdf OPENAI_API_KEY= COHERE_API_KEY= LOG_LEVEL=INFO -# --- Ollama (optional) --- -OLLAMA_BASE_URL= +# --- Ollama (optional, for RAG embeddings) --- OLLAMA_URL= -OLLAMA_VOICE_MODEL= +OLLAMA_EMBED_MODEL=bge-m3 diff --git a/docker-compose.coolify.yml b/docker-compose.coolify.yml index 7e9a553..c0654cd 100644 --- a/docker-compose.coolify.yml +++ b/docker-compose.coolify.yml @@ -14,7 +14,6 @@ networks: volumes: valkey_data: - voice_session_data: embedding_models: services: @@ -150,6 +149,8 @@ services: MINIO_BUCKET: ${S3_BUCKET:-breakpilot-rag} MINIO_SECURE: ${S3_SECURE:-true} EMBEDDING_SERVICE_URL: http://embedding-service:8087 + OLLAMA_URL: ${OLLAMA_URL:-} + OLLAMA_EMBED_MODEL: ${OLLAMA_EMBED_MODEL:-bge-m3} JWT_SECRET: ${JWT_SECRET} ENVIRONMENT: production depends_on: @@ -174,7 +175,7 @@ services: - embedding_models:/root/.cache/huggingface environment: EMBEDDING_BACKEND: ${EMBEDDING_BACKEND:-local} - LOCAL_EMBEDDING_MODEL: ${LOCAL_EMBEDDING_MODEL:-sentence-transformers/all-MiniLM-L6-v2} + LOCAL_EMBEDDING_MODEL: ${LOCAL_EMBEDDING_MODEL:-BAAI/bge-m3} LOCAL_RERANKER_MODEL: ${LOCAL_RERANKER_MODEL:-cross-encoder/ms-marco-MiniLM-L-6-v2} PDF_EXTRACTION_BACKEND: ${PDF_EXTRACTION_BACKEND:-pymupdf} OPENAI_API_KEY: ${OPENAI_API_KEY:-} @@ -183,7 +184,7 @@ services: deploy: resources: limits: - memory: 4G + memory: 8G healthcheck: test: ["CMD", "python", "-c", "import httpx; r=httpx.get('http://127.0.0.1:8087/health'); r.raise_for_status()"] interval: 30s @@ -206,7 +207,7 @@ services: - "8099" environment: PORT: 8099 - CHECK_SERVICES: "valkey:6379,backend-core:8000,rag-service:8097,embedding-service:8087,voice-service:8091" + CHECK_SERVICES: "valkey:6379,backend-core:8000,rag-service:8097,embedding-service:8087" healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:8099/health"] interval: 30s @@ -223,47 +224,6 @@ services: networks: - breakpilot-network - # ========================================================= - # VOICE SERVICE - # ========================================================= - voice-service: - build: - context: ./voice-service - dockerfile: Dockerfile - container_name: bp-core-voice-service - expose: - - "8091" - volumes: - - voice_session_data:/app/data/sessions - environment: - PORT: 8091 - DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT:-5432}/${POSTGRES_DB} - VALKEY_URL: redis://valkey:6379/0 - KLAUSUR_SERVICE_URL: http://bp-lehrer-klausur-service:8086 - OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-} - OLLAMA_VOICE_MODEL: ${OLLAMA_VOICE_MODEL:-} - ENVIRONMENT: production - JWT_SECRET: ${JWT_SECRET} - depends_on: - valkey: - condition: service_started - healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:8091/health"] - interval: 30s - timeout: 10s - start_period: 60s - retries: 3 - labels: - - "traefik.enable=true" - - "traefik.http.routers.voice.rule=Host(`voice.breakpilot.ai`)" - - "traefik.http.routers.voice.entrypoints=https" - - "traefik.http.routers.voice.tls=true" - - "traefik.http.routers.voice.tls.certresolver=letsencrypt" - - "traefik.http.services.voice.loadbalancer.server.port=8091" - restart: unless-stopped - networks: - - breakpilot-network - # ========================================================= # NIGHT SCHEDULER # =========================================================