ARIA: Full-stack RAG chatbot over your own documents
Overview
Most RAG tutorials explain the individual pieces without showing what it feels like to connect them into a usable application. ARIA was built to explore that gap — from document ingestion and embeddings to retrieval, chat state, and frontend/backend synchronization.
The result is a full-stack chatbot where users can upload documents, ask questions about them, and receive responses grounded in the uploaded content.
Document ingestion: Upload and delete documents, validate files, extract content, chunk documents, and prepare them for retrieval.
RAG-powered chat: User queries retrieve relevant document chunks before the LLM generates a contextual response.
Per-session isolation: Each user session gets an isolated ChromaDB collection so uploaded documents remain separated.
Shared document state: React Context keeps document state synchronized across pages and centralizes upload, deletion, loading, and error handling.
Request cancellation: AbortController allows users to manually cancel an in-progress chat request.
Optimistic UI: UI updates are handled optimistically where appropriate to make uploads and interactions feel more responsive.
Dynamic greetings: The initial greeting is generated dynamically using the LLM rather than being hardcoded.
Admin document management: A dedicated admin page makes it easier to inspect and manage uploaded documents.
Technical Snapshot
React + FastAPI + LangChain + ChromaDB and RAG workflow
Outcome
ARIA gave me hands-on experience building a RAG application beyond a notebook — connecting document ingestion, embeddings, vector storage, retrieval, LLM responses, session isolation, and frontend state into one application.