# nitishkumarpidikiti457/enterprise_rag_and_agentic_ai architecture

> Architecture diagram of the GitHub repository nitishkumarpidikiti457/enterprise_rag_and_agentic_ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai
- Repository: https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai

## Overview

This platform answers enterprise questions using document retrieval, read-only SQL, or both, and returns grounded answers with citations. The user-facing flow is client → authenticated FastAPI endpoint → single-shot RAG or the LangGraph agent → retrieval and/or SQL → routed model response. A separate ingestion flow turns uploaded or corpus documents into indexed chunks. The README documents streaming, conversation memory, model fallbacks, caching, and metrics; unsampled modules are shown at their documented boundaries, with uncertain wiring omitted.

Main entry points: [`src/app/api/main.py`](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/main.py) (FastAPI service), [`src/app/ingestion/pipeline.py`](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/pipeline.py) (Ingestion pipeline), [`src/app/retrieval/retriever.py`](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/retriever.py) (Hybrid retrieval), [`src/app/agent/graph.py`](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/graph.py) (LangGraph workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_service["API service"]
  node_api["FastAPI service<br/>[main.py]"]
  node_auth["JWT and limits<br/>[auth.py]"]
  node_ui["Chat UI<br/>[index.html]"]
  node_ingest_api["Upload ingestion<br/>[main.py]"]
end

subgraph group_ingest["Document ingestion"]
  node_pipeline["Ingestion pipeline<br/>[pipeline.py]"]
  node_loaders["Document loaders<br/>[loaders.py]"]
  node_chunking["Semantic chunking<br/>[chunking.py]"]
  node_embedding["Embedding<br/>[embed.py]"]
end

subgraph group_knowledge["Retrieval and data"]
  node_retriever["Hybrid retrieval<br/>[retriever.py]"]
  node_reranker["Cross-encoder reranker<br/>[rerank.py]"]
  node_vectors[("Chroma vector store<br/>[vectorstore.py]")]
  node_sql[("SQLite business data<br/>[sample.db]")]
end

subgraph group_reasoning["Agent and answers"]
  node_rag["Single-shot RAG<br/>[rag.py]"]
  node_agent["LangGraph workflow<br/>[graph.py]"]
  node_tools["Agent tools<br/>[tools.py]"]
  node_checkpoint[("Thread memory<br/>[graph.py]")]
end

subgraph group_models["Models and operations"]
  node_router["LLM router<br/>[router.py]"]
  node_providers["LLM providers<br/>[providers.py]"]
  node_templates["Prompt templates<br/>[templates.yaml]"]
  node_cache["Response cache<br/>[cache.py]"]
  node_observability["Metrics and logs<br/>[logging.py]"]
end

node_client(("Client"))
node_redis[("Redis cache")]
node_llm_services{{"Model services"}}

node_client -->|"sends requests"| node_api
node_api -->|"authenticates and limits"| node_auth
node_api -->|"serves UI"| node_ui
node_api -->|"routes uploads"| node_ingest_api
node_ingest_api -->|"ingests files"| node_pipeline
node_pipeline -->|"loads documents"| node_loaders
node_pipeline -->|"chunks documents"| node_chunking
node_chunking -->|"embeds sentences"| node_embedding
node_pipeline -->|"embeds chunks"| node_embedding
node_pipeline -->|"upserts chunks"| node_vectors
node_pipeline -->|"invalidates BM25"| node_retriever
node_api -->|"answers queries"| node_rag
node_api -->|"runs or streams chat"| node_agent
node_agent -->|"dispatches tools"| node_tools
node_tools -->|"searches documents"| node_retriever
node_tools -->|"queries read-only"| node_sql
node_agent -->|"classifies and synthesizes"| node_router
node_agent -->|"persists thread state"| node_checkpoint
node_rag -->|"retrieves passages"| node_retriever
node_rag -->|"generates answers"| node_router
node_retriever -->|"embeds query"| node_embedding
node_retriever -->|"searches dense index"| node_vectors
node_retriever -->|"reranks candidates"| node_reranker
node_router -->|"selects and calls"| node_providers
node_router -->|"reads and writes"| node_cache
node_cache -.->|"uses optional backend"| node_redis
node_providers -->|"calls model APIs"| node_llm_services
node_rag -->|"renders prompts"| node_templates
node_agent -->|"renders prompts"| node_templates
node_router -->|"records calls and cost"| node_observability
node_api -->|"records service metrics"| node_observability

click node_api "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/main.py"
click node_auth "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/auth.py"
click node_ui "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/static/index.html"
click node_ingest_api "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/main.py"
click node_pipeline "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/pipeline.py"
click node_loaders "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/loaders.py"
click node_chunking "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/chunking.py"
click node_embedding "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/embed.py"
click node_retriever "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/retriever.py"
click node_reranker "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/rerank.py"
click node_vectors "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/vectorstore.py"
click node_sql "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/data/sample.db"
click node_rag "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/rag.py"
click node_agent "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/graph.py"
click node_tools "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/tools.py"
click node_checkpoint "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/graph.py"
click node_router "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/router.py"
click node_providers "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/providers.py"
click node_templates "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/prompts/templates.yaml"
click node_cache "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/cache.py"
click node_observability "https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/observability/logging.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_auth,node_ui,node_ingest_api,node_client toneBlue
class node_pipeline,node_loaders,node_chunking,node_embedding,node_redis toneAmber
class node_retriever,node_reranker,node_vectors,node_sql toneMint
class node_rag,node_agent,node_tools,node_checkpoint toneRose
class node_router,node_providers,node_templates,node_cache,node_observability,node_llm_services toneIndigo
```

## Components

### API service

- [FastAPI service](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/main.py): `src/app/api/main.py`
- [JWT and limits](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/auth.py): `src/app/api/auth.py`
- [Chat UI](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/static/index.html): `src/app/api/static/index.html`
- [Upload ingestion](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/api/main.py): `src/app/api/main.py`

### Document ingestion

- [Ingestion pipeline](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/pipeline.py): `src/app/ingestion/pipeline.py`
- [Document loaders](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/loaders.py): `src/app/ingestion/loaders.py`
- [Semantic chunking](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/chunking.py): `src/app/ingestion/chunking.py`
- [Embedding](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/ingestion/embed.py): `src/app/ingestion/embed.py`

### Retrieval and data

- [Hybrid retrieval](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/retriever.py): `src/app/retrieval/retriever.py`
- [Cross-encoder reranker](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/rerank.py): `src/app/retrieval/rerank.py`
- [Chroma vector store](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/retrieval/vectorstore.py): `src/app/retrieval/vectorstore.py`
- [SQLite business data](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/data/sample.db): `data/sample.db`

### Agent and answers

- [Single-shot RAG](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/rag.py): `src/app/rag.py`
- [LangGraph workflow](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/graph.py): `src/app/agent/graph.py`
- [Agent tools](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/tools.py): `src/app/agent/tools.py`
- [Thread memory](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/agent/graph.py): `src/app/agent/graph.py`

### Models and operations

- [LLM router](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/router.py): `src/app/llm/router.py`
- [LLM providers](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/providers.py): `src/app/llm/providers.py`
- [Prompt templates](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/prompts/templates.yaml): `src/app/llm/prompts/templates.yaml`
- [Response cache](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/llm/cache.py): `src/app/llm/cache.py`
- [Metrics and logs](https://github.com/nitishkumarpidikiti457/enterprise_rag_and_agentic_ai/blob/main/src/app/observability/logging.py): `src/app/observability/logging.py`

### Other components

- **Client**
- **Redis cache**
- **Model services**

## Connections

- Client → FastAPI service: sends requests
- FastAPI service → JWT and limits: authenticates and limits
- FastAPI service → Chat UI: serves UI
- FastAPI service → Upload ingestion: routes uploads
- Upload ingestion → Ingestion pipeline: ingests files
- Ingestion pipeline → Document loaders: loads documents
- Ingestion pipeline → Semantic chunking: chunks documents
- Semantic chunking → Embedding: embeds sentences
- Ingestion pipeline → Embedding: embeds chunks
- Ingestion pipeline → Chroma vector store: upserts chunks
- Ingestion pipeline → Hybrid retrieval: invalidates BM25
- FastAPI service → Single-shot RAG: answers queries
- FastAPI service → LangGraph workflow: runs or streams chat
- LangGraph workflow → Agent tools: dispatches tools
- Agent tools → Hybrid retrieval: searches documents
- Agent tools → SQLite business data: queries read-only
- LangGraph workflow → LLM router: classifies and synthesizes
- LangGraph workflow → Thread memory: persists thread state
- Single-shot RAG → Hybrid retrieval: retrieves passages
- Single-shot RAG → LLM router: generates answers
- Hybrid retrieval → Embedding: embeds query
- Hybrid retrieval → Chroma vector store: searches dense index
- Hybrid retrieval → Cross-encoder reranker: reranks candidates
- LLM router → LLM providers: selects and calls
- LLM router → Response cache: reads and writes
- Response cache → Redis cache: uses optional backend
- LLM providers → Model services: calls model APIs
- Single-shot RAG → Prompt templates: renders prompts
- LangGraph workflow → Prompt templates: renders prompts
- LLM router → Metrics and logs: records calls and cost
- FastAPI service → Metrics and logs: records service metrics
