How wahhabriaz/agentic-document-rag works
HybridRAG is a PDF assistant: users upload documents, then ask questions answered from both retrieved text and extracted tables. The graph follows the documented upload and Q&A flows through the FastAPI backend, processing/storage stages, and agent system, while retaining the Streamlit client and data-clearing capability. Some source excerpts are partial; uncertain internal dispatch is shown as unverified rather than asserted.
Main entry points: chat.py Chat API · manager_agent.py Manager Agent · clear_data_service.py Clear Data Service · upload_pdf.py Upload Handler
Components 20
User Interface
- Streamlit UI
src/frontend/streamlit_app.py
API and Services
- FastAPI App
src/backend/__init__.py - Chat API
src/backend/routes/chat.py - API Models
src/backend/models.py - Configuration
src/backend/config.py - Query Orchestrator
src/backend/services/orchestrator.py - Clear Data Service
src/backend/services/clear_data_service.py - Clear Data CLI
clear_data_script.py
PDF Ingestion
- Upload Handler
src/backend/utils/upload_pdf.py - PDF Processor
src/backend/utils/pdf_processor.py - Schema Manager
src/backend/utils/schema_manager.py - Embedding Service
src/backend/services/embedding_service.py
Answering Agents
- Manager Agent
src/backend/agents/manager_agent.py - RAG Agent
src/backend/agents/rag_agent.py - Table Agent
src/backend/agents/table_agent.py - Response Combiner
src/backend/agents/combiner_agent.py - Agent Base
src/backend/agents/base.py
Data Stores
- Pinecone Index
- MySQL Tables
Other components
- User
Connections 25
- User → Streamlit UI: uses
README.md - Streamlit UI → Chat API: calls API
README.md - FastAPI App → Chat API: registers
src/backend/__init__.py - Chat API → API Models: validates
src/backend/routes/chat.py - Chat API → Upload Handler: dispatches upload
src/backend/routes/chat.py - Upload Handler → PDF Processor: extracts content
src/backend/utils/upload_pdf.py - Upload Handler → Embedding Service: stores embeddings
src/backend/utils/upload_pdf.py - PDF Processor → MySQL Tables: stores tables
README.md - Embedding Service → Pinecone Index: stores vectors
src/backend/services/embedding_service.py - PDF Processor → Schema Manager: manages schemas
- Chat API → Query Orchestrator: submits query
src/backend/routes/chat.py - Query Orchestrator → Manager Agent: dispatches query
- Manager Agent → RAG Agent: runs retrieval
src/backend/agents/manager_agent.py - Manager Agent → Table Agent: runs table query
src/backend/agents/manager_agent.py - Manager Agent → Response Combiner: combines answers
src/backend/agents/manager_agent.py - RAG Agent → Pinecone Index: searches vectors
src/backend/agents/rag_agent.py - Table Agent → MySQL Tables: queries tables
README.md - RAG Agent → Agent Base: extends
src/backend/agents/rag_agent.py - FastAPI App → Query Orchestrator: initializes
src/backend/__init__.py - Chat API → Clear Data Service: clears data
src/backend/routes/chat.py - Clear Data Service → Pinecone Index: deletes vectors
src/backend/services/clear_data_service.py - Clear Data Service → MySQL Tables: drops tables
src/backend/services/clear_data_service.py - Clear Data CLI → Pinecone Index: clears vectors
clear_data_script.py - Clear Data CLI → MySQL Tables: clears tables
clear_data_script.py - Configuration → FastAPI App: configures
src/backend/__init__.py