Guía completa de todas las variables de entorno y opciones de configuración de Cortex Knowledge Assistant.
Todas las variables usan el prefijo CKA_ (Cortex Knowledge Assistant).
| Categoría | Variables |
|---|---|
| LLM | CKA_LLM_PROVIDER, HF_API_KEY, CKA_HF_MODEL |
| Qdrant | CKA_QDRANT_URL, CKA_QDRANT_API_KEY, CKA_USE_QDRANT |
| Redis | CKA_REDIS_HOST, CKA_REDIS_PORT, CKA_USE_REDIS |
| Database | DATABASE_URL |
| Security | JWT_SECRET_KEY, CKA_API_KEY, CKA_HTTPS_ENABLED |
| Rate Limiting | CKA_RATE_LIMIT_QPM, CKA_RATE_LIMIT_BURST |
| RAG | CKA_MAX_INPUT_TOKENS, CKA_MAX_OUTPUT_TOKENS |
| Observability | CKA_LOG_LEVEL, CKA_ENABLE_TRACING |
| Demo Mode | CKA_DEMO_DOMAIN, CKA_DEMO_RESET_INTERVAL |
Proveedor de LLM a utilizar.
| Valor | Descripción |
|---|---|
HF |
HuggingFace Inference API (recomendado para producción) |
Fake |
LLM simulado para desarrollo/tests |
Default: Fake
CKA_LLM_PROVIDER=HFAPI Key de HuggingFace para acceso a modelos.
- Obtener en: https://huggingface.co/settings/tokens
- Requerido si
CKA_LLM_PROVIDER=HF
HF_API_KEY=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxModelo de HuggingFace a utilizar.
Default: Selección automática del mejor modelo disponible (prioriza instruct/chat)
CKA_HF_MODEL=meta-llama/Llama-3.1-8B-InstructModelos Recomendados:
meta-llama/Llama-3.1-8B-Instruct- Excelente calidadmistralai/Mistral-7B-Instruct-v0.3- Rápido y capazQwen/Qwen2.5-7B-Instruct- Buen soporte multilingüe
Esperar a que el modelo esté listo (útil para modelos con cold start).
Default: true
CKA_HF_WAIT_FOR_MODEL=trueMáximo de tokens en la respuesta del LLM.
Default: 512
CKA_MAX_OUTPUT_TOKENS=8192Temperatura del LLM (creatividad vs determinismo).
Default: 0.3
CKA_TEMPERATURE=0.3Habilitar búsqueda vectorial con Qdrant.
Default: false (usa StubRetriever para tests)
CKA_USE_QDRANT=trueURL del servidor Qdrant.
Default: http://localhost:6333
CKA_QDRANT_URL=http://qdrant:6333API Key para Qdrant (si está configurado con autenticación).
Default: vacío (sin autenticación)
CKA_QDRANT_API_KEY=your-qdrant-api-keyNombre de la colección de documentos.
Default: corporate_docs
CKA_QDRANT_COLLECTION_DOCS=corporate_docsNúmero máximo de resultados iniciales de Qdrant.
Default: 5
CKA_QDRANT_TOP_K=80Habilitar cache con Redis.
Default: false (usa InMemoryCache)
CKA_USE_REDIS=trueHost del servidor Redis.
Default: redis
CKA_REDIS_HOST=redisPuerto de Redis.
Default: 6379
CKA_REDIS_PORT=6379URL completa de Redis (alternativa a HOST/PORT).
REDIS_URL=redis://redis:6379/0URL de conexión a PostgreSQL.
Formato: postgresql+psycopg://user:password@host:port/database
DATABASE_URL=postgresql+psycopg://cortex:secure_password@postgres:5432/cortexPara desarrollo con SQLite:
DATABASE_URL=sqlite:///./cortex.dbPassword de PostgreSQL (usado por docker-compose).
Default: cortex_change_me
POSTGRES_PASSWORD=your_secure_passwordClave secreta para firmar tokens JWT.
- Mínimo: 32 caracteres
- Recomendado: 64 caracteres aleatorios
JWT_SECRET_KEY=your-super-secret-key-at-least-32-characters-longGenerar clave segura:
python -c "import secrets; print(secrets.token_urlsafe(48))"API Key para autenticación legacy (desarrollo).
Nota: En producción, usar exclusivamente JWT.
CKA_API_KEY=development-only-api-keyHabilitar autenticación por API key legacy.
Default: true
CKA_ENABLE_DEMO_API_KEY=false # Deshabilitar en producciónHabilitar headers de seguridad para HTTPS.
Default: false
CKA_HTTPS_ENABLED=trueHeaders habilitados:
Strict-Transport-Security(HSTS)Content-Security-Policy(CSP)
Política de Content Security Policy.
Default:
default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'
CKA_CSP_POLICY=default-src 'self'; script-src 'self' 'unsafe-inline'Habilitar Data Loss Prevention (redacción de PII).
Default: true
CKA_DLP_ENABLED=trueModo estricto: prohibir LLM Fake y requerir proveedor real.
Default: false
CKA_CONFIDENTIAL_RETRIEVAL_ONLY=trueQueries por minuto permitidas por usuario.
Default: 120
CKA_RATE_LIMIT_QPM=60Capacidad de burst adicional.
Default: 0
CKA_RATE_LIMIT_BURST=10Ventana de tiempo para rate limiting.
Default: 60
CKA_RATE_LIMIT_WINDOW_SECONDS=60Máximo de tokens de entrada por request.
Default: 2048
CKA_MAX_INPUT_TOKENS=4096Máximo de turnos de conversación a incluir en contexto.
Default: 5
CKA_CONVERSATION_MAX_TURNS=10Modelo de embeddings para vectorización.
Default: sentence-transformers/all-MiniLM-L6-v2
CKA_EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2Orígenes permitidos para CORS (separados por coma).
Default: *
CKA_CORS_ORIGINS=http://localhost:3000,https://cortex.deeprat.techNivel de logging.
| Valor | Descripción |
|---|---|
DEBUG |
Todo, incluyendo debug |
INFO |
Información operacional |
WARNING |
Solo advertencias y errores |
ERROR |
Solo errores |
Default: INFO
CKA_LOG_LEVEL=DEBUGHabilitar tracing con OpenTelemetry.
Default: false
CKA_ENABLE_TRACING=trueRequiere configurar endpoint OTLP:
OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318Habilitar endpoint /chat/stream.
Default: false
CKA_ENABLE_STREAMING=trueDominio de la demo (afecta labels y datos).
| Valor | Descripción |
|---|---|
banking |
Demo bancaria (productos, transacciones) |
university |
Demo universitaria (materias, notas) |
clinic |
Demo clínica |
Default: banking
CKA_DEMO_DOMAIN=universityHabilitar reset automático de datos demo.
Default: false
CKA_DEMO_RESET_ENABLED=trueIntervalo en horas entre resets automáticos.
Default: 1
CKA_DEMO_RESET_INTERVAL_HOURS=2Variables para la UI de React (prefijo VITE_):
Dominio de la demo para la UI.
VITE_DEMO_DOMAIN=bankingModo de demo de la UI.
| Valor | Descripción |
|---|---|
none |
Sin modo demo |
fce_iuc |
Demo FCE-IUC |
firstrun |
Wizard de primer uso |
banking_demo |
Demo bancaria completa |
VITE_DEMO_MODE=noneMostrar countdown de reset en la UI.
VITE_DEMO_RESET_ENABLED=trueDirectorio base para datos de la aplicación.
Default: /app/data
CKA_DATA_DIR=/app/dataEstructura:
/app/data/
├── documentacion/
│ ├── publica/ # PDFs públicos
│ └── educativa/ # Material educativo
└── logs/ # Logs de aplicación
# ══════════════════════════════════════════════════════════════════════════════
# Cortex Knowledge Assistant - Production Configuration
# ══════════════════════════════════════════════════════════════════════════════
# === LLM Configuration ===
CKA_LLM_PROVIDER=HF
HF_API_KEY=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CKA_HF_MODEL=meta-llama/Llama-3.1-8B-Instruct
CKA_MAX_OUTPUT_TOKENS=8192
CKA_TEMPERATURE=0.3
# === Vector Database (Qdrant) ===
CKA_USE_QDRANT=true
CKA_QDRANT_URL=http://qdrant:6333
CKA_QDRANT_COLLECTION_DOCS=corporate_docs
# === Cache (Redis) ===
CKA_USE_REDIS=true
CKA_REDIS_HOST=redis
CKA_REDIS_PORT=6379
# === Database (PostgreSQL) ===
DATABASE_URL=postgresql+psycopg://cortex:${POSTGRES_PASSWORD}@postgres:5432/cortex
POSTGRES_PASSWORD=your_secure_password_here
# === Security ===
JWT_SECRET_KEY=your-super-secret-key-at-least-32-characters-long-or-longer
CKA_HTTPS_ENABLED=true
CKA_DLP_ENABLED=true
CKA_ENABLE_DEMO_API_KEY=false
# === Rate Limiting ===
CKA_RATE_LIMIT_QPM=60
CKA_RATE_LIMIT_BURST=10
# === CORS ===
CKA_CORS_ORIGINS=https://cortex.example.com
# === Observability ===
CKA_LOG_LEVEL=INFO
CKA_ENABLE_TRACING=false
# === Streaming ===
CKA_ENABLE_STREAMING=trueEl sistema valida la configuración al iniciar. Errores comunes:
RuntimeError: HF_API_KEY missing
Solución: Configurar HF_API_KEY o cambiar CKA_LLM_PROVIDER=Fake
RuntimeError: confidential_retrieval_only is enabled but llm_provider is 'Fake'
Solución: Configurar un LLM real o deshabilitar CKA_CONFIDENTIAL_RETRIEVAL_ONLY
Qdrant no está disponible o la colección no existe.
Solución: Verificar que Qdrant está corriendo e inicializar la colección
Las variables se pasan a los contenedores a través de:
-
Archivo
.env(recomendado):env_file: - .env
-
Environment directo:
environment: - CKA_QDRANT_URL=http://qdrant:6333
-
Build args (para UI):
build: args: VITE_DEMO_DOMAIN: ${VITE_DEMO_DOMAIN:-banking}