How amitksoftech/rag-mvp1 works
Purpose and Runtime
This is a Java/Spring Boot RAG MVP for uploading knowledge documents, storing their metadata and files, asynchronously ingesting content into a vector store, and presenting document/admin views. The application starts at src/main/java/com/ai/applications/rag/ragmvp1/Ragmvp1Application.java; Maven build/runtime dependencies are defined in pom.xml.
HTTP and Server-rendered UI
Spring MVC controllers expose the primary interaction surfaces: home/login, document upload/list/detail, and administrative operations. Server-rendered Thymeleaf-style templates form the UI rather than a separate frontend.
• src/main/java/com/ai/applications/rag/ragmvp1/controller/DocumentController.java
• src/main/java/com/ai/applications/rag/ragmvp1/controller/AdminController.java
• src/main/resources/templates/documents/upload.html
Document Lifecycle and Persistent Metadata
DocumentService coordinates document-facing lifecycle operations, while DocumentStorageService manages physical uploaded files. StoredDocument, status models, and KnowledgeDocument represent lifecycle/state and persisted knowledge-document metadata. Files are presently rooted under the repository’s data/uploads directory.
• src/main/java/com/ai/applications/rag/ragmvp1/service/DocumentService.java
• src/main/java/com/ai/applications/rag/ragmvp1/service/DocumentStorageService.java
• src/main/java/com/ai/applications/rag/ragmvp1/models/entity/KnowledgeDocument.java
Event-driven Asynchronous Ingestion
Upload completion is decoupled from processing through DocumentUploadedEvent. IngestionEventListener receives the event and delegates to IngestionProcessor; async execution is configured separately. This boundary lets upload requests persist/return independently of extraction, chunking, embedding, and index status transitions.
• src/main/java/com/ai/applications/rag/ragmvp1/models/DocumentUploadedEvent.java
• src/main/java/com/ai/applications/rag/ragmvp1/service/IngestionEventListener.java
• src/main/java/com/ai/applications/rag/ragmvp1/config/AsyncConfiguration.java
RAG Indexing Boundary
IngestionProcessor is the ingestion orchestration stage and EmbeddingIndexer is the explicit embedding/vector-index adapter boundary. Embedding and vector-store beans/properties are isolated in configuration, allowing provider or backing-store changes without restructuring controllers or document persistence.
• src/main/java/com/ai/applications/rag/ragmvp1/service/IngestionProcessor.java
• src/main/java/com/ai/applications/rag/ragmvp1/service/EmbeddingIndexer.java
• src/main/java/com/ai/applications/rag/ragmvp1/config/EmbeddingConfiguration.java
• src/main/java/com/ai/applications/rag/ragmvp1/config/VectorStoreConfiguration.java
Database, Security, and Administration
Spring Data repositories persist users and knowledge documents. Security authenticates against database users through a custom user-details service and configuration. Administrative document operations and ingestion statistics are surfaced through dedicated services/controller and template.
• src/main/java/com/ai/applications/rag/ragmvp1/repository/KnowledgeDocumentRepository.java
• src/main/java/com/ai/applications/rag/ragmvp1/security/SecurityConfiguration.java
• src/main/java/com/ai/applications/rag/ragmvp1/service/StatisticsService.java
Configuration and Infrastructure
Application properties define the operational wiring; typed storage/bootstrap properties support configurable startup and file-storage behavior. Material infrastructure consists of Spring Boot’s web, async, security, persistence, local file storage, embedding provider, and vector-store integration; exact providers are not inferable from the supplied tree.
• src/main/resources/application.yml
• src/main/java/com/ai/applications/rag/ragmvp1/config/StorageConfiguration.java
• src/main/java/com/ai/applications/rag/ragmvp1/config/BootstrapProperties.java
Main entry points: DocumentService.java Document service · IngestionProcessor.java Ingestion processor · KnowledgeDocumentRepository.java Document repository · Ragmvp1Application.java Spring Boot app
Components 19
Web & Admin
- Document controllers · Handles upload, list, and document detail requests.
src/main/java/com/ai/applications/rag/ragmvp1/controller/DocumentController.java - Admin controller
src/main/java/com/ai/applications/rag/ragmvp1/controller/AdminController.java - Upload page
src/main/resources/templates/documents/upload.html
Document Lifecycle
- Document service · Coordinates document-facing lifecycle operations.
src/main/java/com/ai/applications/rag/ragmvp1/service/DocumentService.java - File storage service · Manages uploaded files rooted under data/uploads.
src/main/java/com/ai/applications/rag/ragmvp1/service/DocumentStorageService.java - Uploaded files
- Knowledge document · Stores document metadata and lifecycle state.
src/main/java/com/ai/applications/rag/ragmvp1/models/entity/KnowledgeDocument.java - Statistics service · Supplies ingestion statistics.
src/main/java/com/ai/applications/rag/ragmvp1/service/StatisticsService.java
Async Ingestion
- Document uploaded event · Decouples upload completion from ingestion.
src/main/java/com/ai/applications/rag/ragmvp1/models/DocumentUploadedEvent.java - Ingestion event listener
src/main/java/com/ai/applications/rag/ragmvp1/service/IngestionEventListener.java - Ingestion processor · Extracts, chunks, and advances index status.
src/main/java/com/ai/applications/rag/ragmvp1/service/IngestionProcessor.java - Embedding indexer · Boundary for embedding and vector indexing.
src/main/java/com/ai/applications/rag/ragmvp1/service/EmbeddingIndexer.java - Vector store
Platform & Persistence
- Spring Boot app
src/main/java/com/ai/applications/rag/ragmvp1/Ragmvp1Application.java - Security configuration · Authenticates database-backed users.
src/main/java/com/ai/applications/rag/ragmvp1/security/SecurityConfiguration.java - Document repository
src/main/java/com/ai/applications/rag/ragmvp1/repository/KnowledgeDocumentRepository.java - Async configuration
src/main/java/com/ai/applications/rag/ragmvp1/config/AsyncConfiguration.java - Embedding/vector configuration · Wires embedding and vector-store beans.
src/main/java/com/ai/applications/rag/ragmvp1/config/EmbeddingConfiguration.java - Application configuration · Defines operational wiring and storage/bootstrap settings.
src/main/resources/application.yml
Connections 22
- Spring Boot app → Document controllers: starts MVC
- Spring Boot app → Security configuration: applies security
- Spring Boot app → Application configuration: loads
- Document controllers → Upload page: renders
- Document controllers → Document service: document operations
- Admin controller → Document service: admin operations
- Admin controller → Statistics service: ingestion stats
- Document service → File storage service: stores files
- File storage service → Uploaded files: reads and writes
- Document service → Document repository: persists metadata
- Document repository → Knowledge document: maps
- Document service → Document uploaded event: publishes after upload
- Document uploaded event → Ingestion event listener: received asynchronously
- Async configuration → Ingestion event listener: configures execution
- Ingestion event listener → Ingestion processor: delegates
- Ingestion processor → Uploaded files: reads content
- Ingestion processor → Embedding indexer: chunks and indexes
- Ingestion processor → Document repository: updates status
- Embedding indexer → Vector store: writes embeddings
- Embedding/vector configuration → Embedding indexer: wires provider
- Embedding/vector configuration → Vector store: wires store
- Statistics service → Document repository: reads metrics