Retrieval-Augmented Generation · Portfolio project

📘 EduReflect — AI study assistant

Ask questions about school science and maths and get answers grounded in a knowledge base of 2,316 passages, with every claim cited back to the passage it came from. Turn any answer into a quiz, track what you've mastered, or upload your own PDF and ask questions about it.

2,316indexed passages
97.3%retrieval hit@5 (75-question benchmark)
~1 sper answer
$0to run, no credit card

Try it here

The demo runs on a free tier and sleeps when unused. Loading it here takes a few seconds; if it shows a "wake up" screen, click it and give it about a minute.

Sign-up is free. Demo limits: 20 actions per person per day, 500 AI calls per day in total.

How an answer is produced

  1. Two searches run in parallel. Semantic search (bge-small embeddings + FAISS) finds passages that mean the same thing; BM25 keyword search catches exact terms like "Heron's formula" or "nichrome".
  2. The rankings are fused. Reciprocal rank fusion merges both lists and keeps the best 5 passages.
  3. The model answers from those passages only. One call, with the passages numbered, so it can cite [1], [2] and say when the evidence doesn't cover the question.
  4. You see the evidence. The cited passages, a confidence rating, key terms and follow-up questions come back with the answer.

What it does

Cited answers

Every answer points at the passages it used, with adjustable depth, length and format.

Quizzes from any answer

Five multiple-choice questions, scored, with per-concept mastery tracking.

Your own documents

Upload a PDF or DOCX; the relevant sections are found and cited, not just the first page.

Study workspace

Chats grouped in projects, search, editing, summaries and PDF export.

Retrieval benchmark

75 questions generated from random passages; the test is whether search returns the passage each question was written from. Hybrid is the default: the model reads all five passages, so top-5 coverage matters most.

Modehit@1hit@5MRR@10Latency
Dense (bge-small)73.3%93.3%0.823~18 ms
BM2582.7%94.7%0.884~1 ms
Hybrid (default)82.7%97.3%0.885~21 ms
Hybrid + cross-encoder rerank90.7%98.7%0.937~1,100 ms

Built with

FastAPI · Streamlit · SQLAlchemy with Postgres · FAISS + fastembed (BAAI/bge-small-en-v1.5, ONNX, no PyTorch, ~380 MB total) · Groq (gpt-oss-20b with automatic fallback) · pytest and GitHub Actions. Daily budgets, per-user limits and sign-up throttling keep the public demo inside free quotas.