landvex: Datafabrik + Vision + Infrastruktur för 50GB skalning
Datafabrik: - Skördare: crawler, källvitlista, upphandlingsskördare - Extraktor: LLM-baserad schemastyrd extraktion - Upplösare: Entitetsupplösning och deduplicering - Köer: Schemalagd / kunddriven / fält - Agentorkestrering: 20+ parallella agenter Vision: - Identify-modell: ResNet50 + kontrastivt lärande - Träningspipeline: NT-Xent loss - Vektordatabas: FAISS för snabb sökning - OCR-pipeline: Typskyltsläsning Infrastruktur: - Docker Compose production - Terraform för AWS ECS - Prometheus + Grafana monitorering - Neo4j + FAISS + MinIO + Redis
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
# ─── API ───────────────────────────────────────────────
|
||||
api:
|
||||
build: ./api
|
||||
ports:
|
||||
- "8081:8080"
|
||||
volumes:
|
||||
- ./10-data:/app/data:ro
|
||||
- ./vision/modeller:/models:ro
|
||||
environment:
|
||||
- DATA_DIR=/app/data
|
||||
- NEO4J_URI=bolt://neo4j:7687
|
||||
- NEO4J_USER=neo4j
|
||||
- NEO4J_PASSWORD=${NEO4J_PASSWORD}
|
||||
- VISION_MODEL_PATH=/models/landvex-vision-model.pt
|
||||
depends_on:
|
||||
- neo4j
|
||||
- vectordb
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
|
||||
# ─── Neo4j (Property Graph) ────────────────────────────
|
||||
neo4j:
|
||||
image: neo4j:5.19-enterprise
|
||||
ports:
|
||||
- "7474:7474"
|
||||
- "7687:7687"
|
||||
environment:
|
||||
- NEO4J_AUTH=neo4j/${NEO4J_PASSWORD}
|
||||
- NEO4J_PLUGINS=["apoc"]
|
||||
- NEO4J_dbms_memory_heap_max__size=8G
|
||||
- NEO4J_dbms_memory_pagecache_size=4G
|
||||
volumes:
|
||||
- neo4j_data:/data
|
||||
- neo4j_logs:/logs
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 12G
|
||||
|
||||
# ─── Vektordatabas (FAISS) ─────────────────────────────
|
||||
vectordb:
|
||||
build: ./vision/embeddings
|
||||
ports:
|
||||
- "8082:8080"
|
||||
volumes:
|
||||
- vectordb_data:/data
|
||||
environment:
|
||||
- FAISS_INDEX_DIR=/data
|
||||
restart: unless-stopped
|
||||
|
||||
# ─── Datafabrik (Skördning + Extraktion) ───────────────
|
||||
datafabrik:
|
||||
build: ./datafabrik
|
||||
volumes:
|
||||
- datafabrik_output:/data/output
|
||||
- datafabrik_koer:/data/koer
|
||||
environment:
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
- DATAFABRIK_KO_DIR=/data/koer
|
||||
- DATAFABRIK_OUTPUT=/data/output
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 4G
|
||||
|
||||
# ─── Vision-träning (GPU) ──────────────────────────────
|
||||
vision-trainer:
|
||||
build: ./vision
|
||||
volumes:
|
||||
- vision_models:/models
|
||||
- vision_dataset:/data/dataset
|
||||
environment:
|
||||
- CUDA_VISIBLE_DEVICES=0
|
||||
- VISION_MODEL_DIR=/models
|
||||
- VISION_DATASET_DIR=/data/dataset
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
profiles: ["training"]
|
||||
|
||||
# ─── MinIO (Objektlagring för bilder/dokument) ─────────
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
environment:
|
||||
- MINIO_ROOT_USER=${MINIO_USER:-landvex}
|
||||
- MINIO_ROOT_PASSWORD=${MINIO_PASSWORD:-landvex2024}
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
command: server /data --console-address ":9001"
|
||||
restart: unless-stopped
|
||||
|
||||
# ─── Redis (Köer och cache) ────────────────────────────
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
restart: unless-stopped
|
||||
|
||||
# ─── Prometheus (Metriker) ─────────────────────────────
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- ./infrastruktur/monitorering/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- prometheus_data:/prometheus
|
||||
restart: unless-stopped
|
||||
|
||||
# ─── Grafana (Dashboards) ──────────────────────────────
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-landvex}
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
neo4j_data:
|
||||
neo4j_logs:
|
||||
vectordb_data:
|
||||
datafabrik_output:
|
||||
datafabrik_koer:
|
||||
vision_models:
|
||||
vision_dataset:
|
||||
minio_data:
|
||||
redis_data:
|
||||
prometheus_data:
|
||||
grafana_data:
|
||||
Reference in New Issue
Block a user