Naive RAG
A linear, one-concept-per-lesson path through Naive RAG, the baseline retrieval-augmented generation architecture, built from scratch with no framework, from your first embedding to a complete FastAPI RAG service backed by ChromaDB. 26 lessons · 3 tiers.
Prerequisites: Comfortable writing basic Python (functions, imports, running a script). No LangChain or vector-database experience needed - this course builds naive RAG from raw API calls and a plain Python list, deliberately without a framework. This site's RAG Fundamentals course is a useful (not required) primer: it maps where naive RAG sits among the nine retrieval architectures, of which this course covers only the first.
Lessons use Google's Gemini free tier (gemini-embedding-001 for embeddings, gemini-3.5-flash-lite for chat), the same models as this site's other courses. No Docker and no database for most of the course - the vector store starts as a plain Python list; Lesson 20 onward swaps that for a local ChromaDB instance, still no server or account required.
Built on ChromaDB, the open-source vector database this course graduates to in the Advanced tier.

Beginner
Hand-rolled RAG, one piece at a time: chunk, embed, retrieve, generate.
Intermediate
Where naive RAG breaks, and the fixes that keep it naive.
- 10Chunk Size and OverlapGitHub
- 11Structure-Aware ChunkingGitHub
- 12Multiple Documents and MetadataGitHub
- 13Persisting the Vector StoreGitHub
- 14Choosing k and ThresholdsGitHub
- 15Prompting for Grounded AnswersGitHub
- 16Failure Modes by HandGitHub
- 17Minimal Evaluation: Precision at kGitHub
- 18Checkpoint: Notes Search Assistant with CitationsGitHub
Advanced
Graduating the hand-rolled store to ChromaDB, and a capstone.
- 19Where Linear Scan Breaks DownGitHub
- 20Introducing ChromaDBGitHub
- 21Repointing Retrieval at ChromaDBGitHub
- 22Metadata Filtering with ChromaDBGitHub
- 23Refactoring Into ingest() and ask()GitHub
- 24Wrapping It as a ServiceGitHub
- 25Capstone: A Complete Naive RAG ServiceGitHub
- 26Where Naive RAG Hits a WallGitHub