01 What students build
The first project of the RAG track makes the whole pipeline inspectable. ingest.py slices the VWO PRD into ~800-character chunks (120 overlap, page metadata kept), embeds each with Nomic Embed through local Ollama (768-dim vectors), and stores everything in a persistent ChromaDB collection. app.py serves a one-page Flask UI: ask a question, see the top-K nearest chunks with distance and similarity scores, then read the Groq answer that cites the exact chunks it used.
Visible Pipeline
The UI always shows the diagram: Question, Embed, ChromaDB, Top-K, Groq, Answer. Each node lights amber as your query flows through it.
Chunk Inspector
A DB viewer lists every stored chunk with embedding previews, and ingest writes a standalone chunks_report.html. Chunks used for the last answer are highlighted.
Local-first
Embedding model and vector DB run on your machine for free. The only network call is the final Groq gpt-oss-120b completion, swappable via .env.
02 Architecture
03 Live demo (simulated with sample data)
This is a UI walkthrough with pre-baked sample data so you can feel retrieval without a backend. In the course you run the real thing locally: Ollama for embeddings, ChromaDB on disk, Flask at 127.0.0.1:5000, and a free Groq key.
04 Inputs & outputs
What goes in
- One source PDF dropped into data/ (the VWO PRD)
- Natural-language questions typed into the Flask UI
- .env config: GROQ_API_KEY, model names, Ollama URL
- Tunables: CHUNK_SIZE, CHUNK_OVERLAP, TOP_K
What comes out
- Top-K retrieved chunks with distance and similarity scores
- A grounded Groq answer citing chunk numbers
- DB viewer of every stored chunk, last-used ones highlighted
- chunks_report.html: a standalone report of the whole ingest