Recently, I built a Custom Retrieval-Augmented Generation (RAG) system that allows users to upload their own documents and interact with them through natural-language questions.
The goal was to understand how modern AI document-chat systems work internally — from document processing and chunking to embeddings, vector search, and LLM-based responses.
What I Built
📄 Document Upload — Users can upload PDF and DOCX documents.
🔍 Text Extraction — Extracts readable text from uploaded documents.
✂️ Document Chunking — Splits large documents into smaller overlapping chunks for better retrieval.
🧠 Embeddings — Converts document chunks into vector representations.
🗄️ Vector Storage — Uses Qdrant to store and search document embeddings.
🔎 Semantic Search — Retrieves the most relevant document chunks based on the user's question.
This project helped me understand the complete RAG pipeline rather than treating RAG as just an API call to an LLM.
Tech Stack
Backend: ASP.NET Core Web API, C#
Document Processing: PDF & DOCX text extraction
Embeddings: Ollama + nomic-embed-text
Vector Database: Qdrant
AI: Retrieval-Augmented Generation (RAG), LLM
API Testing: Swagger
Frontend: React.js
Like this project
Posted Aug 9, 2026
Custom RAG Document Chat System
Recently, I built a Custom Retrieval-Augmented Generation (RAG) system that allows users to upload their own documents and in...