How I built a RAG chatbot for my portfolio
Visitors to a portfolio often ask the same questions: what have you built, what can you do, how do they reach you. A chatbot can answer those — but only if it is grounded in real context.
The idea
I stored short chunks about my projects, skills, and experience in Supabase. When someone asks a question, the app embeds it, finds the closest chunks, and passes them to an LLM as context.
That is classic RAG: Retrieve, Augment, Generate.
The stack
- Embeddings: Hugging Face
all-MiniLM-L6-v2 - Vector store: Supabase with a
match_documentsRPC - Generation: Groq (
llama-3.3-70b-versatile)
Contact info stays in the system prompt so email and location are never lost when retrieval misses.
What I learned
Retrieval quality matters more than model size. A clear knowledge file and a sensible similarity threshold did more for answer quality than swapping models.