01 What students build
A production-shaped RAG explorer over a real corpus: 5,000 VWO test cases ingested into Qdrant. One bge-m3 model produces dense and sparse vectors from each chunk, queries are rewritten into alternate phrasings before search, both rank lists are fused with RRF, and a bge-reranker-v2-m3 cross-encoder picks the final context. Every stage is inspectable in the UI, nothing is a black box.
Hybrid + RRF
Dense vectors catch meaning, sparse vectors catch exact tokens like TC-00003 and P0. Reciprocal Rank Fusion merges both rank lists into one.
Cross-encoder Rerank
A before/after table shows candidates jumping ranks after bge-reranker-v2-m3 scores each (question, chunk) pair directly.
Query Rewriting
Groq rewrites each question into alternate phrasings before retrieval, so "role changes" also finds "permission updates".
02 Architecture
03 Live demo (simulated with sample data)
This is a UI walkthrough with pre-baked sample data so you can feel the pipeline without downloading the 2.3 GB bge-m3 model. In the course you run the real thing locally: Flask + Qdrant + Groq at localhost:5050.
04 Inputs & outputs
What goes in
- A CSV/XLSX of test cases (5,000 VWO rows shipped with the lab)
- Your pick of text columns to embed and metadata columns to filter on
- Natural-language questions in the chat pane
- Optional payload filters: priority, module, jira_id
What comes out
- Grounded answer with [Chunk N] citations
- Dense vs sparse vs RRF-fused rank tables per query
- Rerank before/after table showing rank movement
- The 3 query rewrites Groq generated
- Chunk explorer: payloads, dense preview, sparse top tokens