# Architecture: Cora ## System Overview ```mermaid graph TD User([User]) --> UI[Gradio UI] User --> API[FastAPI Persistence] UI --> Engine[CoraEngine] API --> Engine Engine --> Curator[CoraCurator - LLM] Engine --> Generator[HF Inference API - SDXL] Engine --> Vision[CoraVision - CLIP/YOLO] Engine --> Memory[CoraMemory - ChromaDB] Memory --> DB[(ChromaDB SQL)] Vision --> Embed[SentenceTransformers] ``` ## Core Components - **CoraEngine (`cora_engine.py`)**: The central orchestrator. Handles generation logic, model fallbacks, and RAG (Retrieval-Augmented Generation) fallback. - **CoraCurator (`cora_curator.py`)**: Uses a Large Language Model to refine simple user prompts into rich, historical descriptions. - **CoraVision (`cora_vision.py`)**: Handles visual processing, including generating CLIP embeddings for images/text and performing object detection with YOLO for automated tagging. - **CoraMemory (`cora_memory.py`)**: Persistent storage using ChromaDB. Stores image paths, metadata, and embeddings for semantic search. ## Data Flow (Generation) 1. User enters prompt. 2. `CoraCurator` refines the prompt. 3. `CoraEngine` calls Hugging Face Inference API. 4. If primary model fails (e.g., 401, 503, or invalid data), it retries with a fallback model. 5. If both fail, it performs a RAG search in `CoraMemory` for the closest existing match. 6. The result is returned to the user and archived.