graph TD
classDef yellow fill:#FFFDE7,stroke:#1A1A1A,stroke-width:2px;
classDef blue fill:#E3F2FD,stroke:#1A1A1A,stroke-width:2px;
classDef green fill:#E8F5E9,stroke:#1A1A1A,stroke-width:2px;
classDef purple fill:#F3E5F5,stroke:#1A1A1A,stroke-width:2px;
classDef teal fill:#E0F7FA,stroke:#1A1A1A,stroke-width:2px;
classDef orange fill:#FFF3E0,stroke:#1A1A1A,stroke-width:2px;
classDef note fill:#FFF9C4,stroke:#FBC02D,stroke-dasharray:4;
User([User Query]):::yellow
subgraph Ingest ["Ingestion Pipeline"]
Crawler[Document Crawler]:::orange
Chunker[Text Chunker]:::orange
EmbedIngest[Embedding Model]:::blue
VectorDB[(Vector Store)]:::green
DocStore[(Document Store)]:::green
Crawler --> Chunker --> EmbedIngest --> VectorDB
Chunker --> DocStore
end
subgraph Retrieve ["Query & Retrieval"]
EmbedQuery[Query Embedder]:::blue
Search[Similarity Search]:::teal
Reranker[Reranker]:::teal
Context[Context Builder]:::teal
end
subgraph Generate ["Generation"]
LLM[LLM]:::purple
Response([Response]):::yellow
end
User --> EmbedQuery
EmbedQuery --> Search
VectorDB --> Search
Search --> Reranker
DocStore --> Reranker
Reranker --> Context
Context --> LLM
User --> LLM
LLM --> Response