ARIA
My First RAG Chatbot
A closer look at the decisions, implementation details, and lessons behind the project.

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.
Upload and delete documents, validate files, extract content, chunk documents, and prepare them for retrieval.
User queries retrieve relevant document chunks before the LLM generates a contextual response.
Each user session gets an isolated ChromaDB collection so uploaded documents remain separated.
React Context keeps document state synchronized across pages and centralizes upload, deletion, loading, and error handling.
AbortController allows users to manually cancel an in-progress chat request.
UI updates are handled optimistically where appropriate to make uploads and interactions feel more responsive.
The initial greeting is generated dynamically using the LLM rather than being hardcoded.
A dedicated admin page makes it easier to inspect and manage uploaded documents.
The application is split between a React frontend and a layered FastAPI backend, with LangChain handling the RAG workflow and ChromaDB providing session-isolated vector storage.
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.
It is intentionally a learning project rather than a production-ready system, but it gave me a much clearer understanding of where the complexity in RAG applications actually lives.
If you enjoyed this build, here are a few others.
A DevTools extension for schema diffing and request approval.
A scroll-driven, video-heavy Rockstar-style site clone built with React and GSAP.
An immersive, scroll-driven experience built to feel like a visit, not a browse.