Mjara Docs
Deployment

Celery Workers

Distributed task processing with Celery and Redis

Celery Workers

The RAG system includes Celery task definitions for distributed document processing using Redis as the message broker. This is useful for offloading heavy processing (parsing, embedding) from the API server.

Architecture

Setup

1. Start Redis

docker run -d -p 6379:6379 redis:7-alpine

2. Configure Redis in .env

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_BROKER_DB=0
REDIS_BACKEND_DB=1

3. Start Workers

# Single worker (all queues)
python worker.py

# Or start specific queue workers
celery -A celery_app worker --queues=parsing --concurrency=2
celery -A celery_app worker --queues=pipeline --concurrency=4
celery -A celery_app worker --queues=embedding --concurrency=2

4. Start Flower (Optional Monitoring)

celery -A celery_app flower --port=5555

Flower UI is available at http://localhost:5555.

Task Queues

QueueTasks
parsingDocument parsing (Docling)
pipelineFull RAG pipeline processing
processingText cleaning, chunking, deduplication
embeddingVector embedding generation

Task Definitions (tasks/)

FileTasks
pipeline_tasks.pyprocess_document — full pipeline for a single document
parser_tasks.pyparse_document — extract content from file
chunker_tasks.pychunk_text — split text into chunks
embedding_tasks.pyembed_chunks — generate embeddings
lang_tasks.pydetect_language — detect chunk language
cleaner_tasks.pyclean_text — clean raw text
dedupe_tasks.pydeduplicate — remove duplicates
formatter_tasks.pyformat_output — format results

Usage Example

from tasks.pipeline_tasks import process_document

# Submit a task
result = process_document.delay("<p>Hello World</p>", source="test")

# Wait for result
output = result.get(timeout=30)
print(output)

When to Use Celery

ScenarioRecommendation
Small deployments (<1000 docs)Not needed — use async API endpoints
Large batch ingestionRecommended — distribute parsing/embedding
Multi-server deploymentRecommended — scale workers independently
Real-time responsiveness neededRecommended — offload heavy processing

On this page