How chahmed12/enterprise-rag-assistant works
Masrvi is an enterprise RAG question-answering assistant. Users ask questions in the Angular chat; the Spring backend manages sessions and messages, calls the FastAPI RAG service, and returns answers with sources. The RAG service retrieves passages from Qdrant and generates responses; its API also accepts document ingestion and corpus reload requests. The README describes the three-service architecture and model integrations. Some cross-service links are supported by documented HTTP contracts; unsampled implementation details are not inferred.
Main entry points: qdrant_client.py Vector retrieval · main.py RAG API · chat.service.ts Chat API client · ChatService.java Chat orchestration
Components 20
Chat interface
- Chat interface
masrvi-frontend/src/app/components/chat-area/chat-area.ts - Session sidebar
masrvi-frontend/src/app/components/sidebar/sidebar.ts - Chat API client
masrvi-frontend/src/app/services/chat.service.ts
Core API
- Chat endpoints
masrvi-core-backend/src/main/java/com/masrvi/core/controller/ChatController.java - Session endpoints
masrvi-core-backend/src/main/java/com/masrvi/core/controller/ChatSessionController.java - Document endpoints
masrvi-core-backend/src/main/java/com/masrvi/core/controller/DocumentController.java - Chat orchestration
masrvi-core-backend/src/main/java/com/masrvi/core/service/ChatService.java - RAG HTTP client
masrvi-core-backend/src/main/java/com/masrvi/core/client/RagEngineClient.java
RAG engine
- RAG API
masrvi-rag-engine/app/main.py - Document processing
masrvi-rag-engine/core/process_document.py - Answer generation
masrvi-rag-engine/core/exchange.py - Semantic chunking
masrvi-rag-engine/retrieval/semantic_chunker.py - Vector retrieval
masrvi-rag-engine/retrieval/qdrant_client.py - Model clients
masrvi-rag-engine/utils/clients.py
Persistence and retrieval
- Chat repositories
masrvi-core-backend/src/main/java/com/masrvi/core/repository - Chat records
masrvi-core-backend/src/main/java/com/masrvi/core/entity
Other components
- User
- Qdrant
- Embedding and LLM services
- Relational database
Connections 22
- User → Chat interface: asks
- Chat interface → Chat API client: uses
masrvi-frontend/src/app/components/chat-area/chat-area.ts - Session sidebar → Chat API client: loads sessions
masrvi-frontend/src/app/components/sidebar/sidebar.ts - Chat API client → Chat endpoints: HTTP chat requests
masrvi-frontend/src/app/services/chat.service.ts - Chat API client → Session endpoints: HTTP session requests
masrvi-frontend/src/app/services/chat.service.ts - Chat endpoints → Chat orchestration: delegates to
masrvi-core-backend/src/main/java/com/masrvi/core/controller/ChatController.java - Session endpoints → Chat orchestration: delegates to
masrvi-core-backend/src/main/java/com/masrvi/core/controller/ChatSessionController.java - Document endpoints → RAG HTTP client: calls
masrvi-core-backend/src/main/java/com/masrvi/core/controller/DocumentController.java - Chat orchestration → RAG HTTP client: asks question
masrvi-core-backend/src/main/java/com/masrvi/core/service/ChatService.java - Chat orchestration → Chat repositories: reads and saves
masrvi-core-backend/src/main/java/com/masrvi/core/service/ChatService.java - Chat repositories → Chat records: persists
masrvi-core-backend/src/main/java/com/masrvi/core/repository/MessageRepository.java - Chat repositories → Relational database: accesses
- RAG HTTP client → RAG API: calls HTTP endpoints
masrvi-core-backend/src/main/java/com/masrvi/core/client/RagEngineClient.java - RAG API → Answer generation: generates answer
masrvi-rag-engine/app/main.py - RAG API → Document processing: queues ingestion
masrvi-rag-engine/app/main.py - RAG API → Vector retrieval: checks and clears index
masrvi-rag-engine/app/main.py - Document processing → Semantic chunking: chunks documents
masrvi-rag-engine/core/process_document.py - Document processing → Vector retrieval: indexes documents
masrvi-rag-engine/core/process_document.py - Answer generation → Vector retrieval: searches passages
masrvi-rag-engine/core/exchange.py - Vector retrieval → Model clients: gets embeddings
masrvi-rag-engine/retrieval/qdrant_client.py - Vector retrieval → Qdrant: queries and updates
masrvi-rag-engine/retrieval/qdrant_client.py - Model clients → Embedding and LLM services: uses configured models