How ayushi2110/nestjs-react-rag-gemini-pgvector works
RAG Assistant is an administrator-managed document knowledge base with a public grounded-chat interface. Users ask questions that are embedded, searched against stored chunks, filtered for relevance, and answered with cited sources; administrators authenticate to ingest or manage documents. The README also describes retrieval evaluation, resilient Gemini requests, and the React chat/upload experience. Backend relationships below are supported by excerpts or the source index; frontend files are absent from the supplied tree, so its implementation links rely on README documentation.
Main entry points: documents.controller.ts Document API · documents.service.ts Document Operations · auth.controller.ts Authentication API · frontend Chat and Upload UI
Components 18
User Experience
- Chat and Upload UI
frontend - Chat API
backend/src/chat/chat.controller.ts
Knowledge Management
- Document API
backend/src/documents/documents.controller.ts - File Text Extraction
backend/src/documents/documents.controller.ts - Document Operations
backend/src/documents/documents.service.ts - Text Chunking
backend/src/documents/chunking.service.ts
Retrieval and Generation
- RAG and Evaluation
backend/src/chat/chat.service.ts - Gemini Embeddings and Generation
backend/src/gemini/gemini.service.ts
Admin Security
- Authentication API
backend/src/auth/auth.controller.ts - Admin Sessions and Tokens
backend/src/auth/auth.service.ts - Admin Authorization
backend/src/auth/guards/admin.guard.ts - JWT Authentication
backend/src/auth/guards/jwt-auth.guard.ts
Application Platform
- PostgreSQL Connection Pool
backend/src/common/database.module.ts - PostgreSQL pgvector Store
database/init.sql - NestJS Application
backend/src/app.module.ts
Other components
- Chat User
- Administrator
- Google Gemini
Connections 27
- Chat User → Chat and Upload UI: asks questions
README.md - Administrator → Chat and Upload UI: manages documents
README.md - Chat and Upload UI → Chat API: submits chat
README.md - Chat and Upload UI → Document API: uploads documents
README.md - Chat User → Chat API: asks question
README.md - Administrator → Document API: ingests documents
README.md - Chat API → RAG and Evaluation: dispatches chat
backend/src/chat/chat.controller.ts - Document API → Document Operations: dispatches operations
backend/src/documents/documents.controller.ts - Document API → File Text Extraction: extracts upload text
backend/src/documents/documents.controller.ts - File Text Extraction → Document Operations: passes extracted text
backend/src/documents/documents.controller.ts - Document Operations → Text Chunking: cleans and chunks
backend/src/documents/documents.service.ts - Document Operations → Gemini Embeddings and Generation: embeds chunks
backend/src/documents/documents.service.ts - Document Operations → PostgreSQL Connection Pool: queries through
backend/src/documents/documents.service.ts - PostgreSQL Connection Pool → PostgreSQL pgvector Store: connects to
backend/src/common/database.module.ts - Document Operations → PostgreSQL pgvector Store: writes and searches
backend/src/documents/documents.service.ts - RAG and Evaluation → Gemini Embeddings and Generation: embeds and generates
backend/src/chat/chat.service.ts - RAG and Evaluation → Document Operations: retrieves candidates
backend/src/chat/chat.service.ts - Gemini Embeddings and Generation → Google Gemini: requests AI models
backend/src/gemini/gemini.service.ts - Authentication API → Admin Sessions and Tokens: handles sessions
backend/src/auth/auth.controller.ts - Admin Sessions and Tokens → PostgreSQL Connection Pool: stores session state
backend/src/auth/auth.service.ts - Document API → JWT Authentication: requires authentication
backend/src/documents/documents.controller.ts - Document API → Admin Authorization: requires admin role
backend/src/documents/documents.controller.ts - Authentication API → JWT Authentication: protects profile route
backend/src/auth/auth.controller.ts - Authentication API → Admin Authorization: protects profile route
backend/src/auth/auth.controller.ts - NestJS Application → Authentication API: registers auth module
backend/src/app.module.ts - NestJS Application → Chat API: registers chat module
backend/src/app.module.ts - NestJS Application → Document API: registers document module
backend/src/app.module.ts