What It Is
The RAG Portfolio Assistant is an AI-powered chat interface built directly into my personal portfolio. Instead of a visitor navigating static pages to learn about me, they can ask a natural language question and receive a grounded answer drawn from my actual content — my projects, articles, CV, skills, and background.
It lives inside the portfolio itself, powered by a full-stack Nuxt backend.
How RAG Works
RAG stands for Retrieval Augmented Generation. It is a pattern that grounds an AI's responses in a specific knowledge base rather than its general training data. The flow has three stages.
First, content is ingested — documents are split into chunks, each chunk is converted into a vector embedding using an embedding model, and the embeddings are stored in a vector database. Second, when a user asks a question, that question is embedded using the same model and the database is searched for the most semantically similar chunks. Third, those retrieved chunks are passed to a language model as context, and the model generates an answer using only that content.
The result is an assistant that cannot hallucinate beyond what has been explicitly provided to it.
How I Built It
The entire system runs inside Nuxt as a full-stack application. The chat UI sends requests to a Nuxt server API route which handles the embedding, retrieval, and generation steps server-side. The knowledge base is built from my markdown content files — articles, project write-ups, and personal background pages — which are chunked and ingested into a PostgreSQL database running the pgvector extension.
| Layer | Technology |
|---|---|
| Framework | Nuxt 4 |
| API route | Nuxt server route |
| Embeddings | OpenAI text-embedding-3-small |
| Vector store | PostgreSQL + pgvector |
| Language model | OpenAI gpt-4o-mini |
| Content source | Nuxt Content markdown files |
Skills Demonstrated
- Full-Stack Development: Designed and implemented both frontend (Vue, Nuxt 4) and backend (Nuxt server API) components for a seamless user experience.
- AI Integration: Integrated OpenAI APIs for embeddings and language model responses, including prompt engineering and context management.
- Vector Database Management: Set up and managed PostgreSQL with the pgvector extension for efficient semantic search and retrieval.
- Content Engineering: Automated ingestion, chunking, and embedding of markdown content to build a robust knowledge base.
- API Design: Developed custom server routes to handle chat requests, embedding, retrieval, and generation workflows.
- DevOps & Deployment: Deployed the assistant as part of a unified Nuxt application, ensuring scalability and maintainability.
- UX/UI Design: Built an intuitive chat interface and focused on user experience for natural language interactions.
- Security & Privacy: Ensured that all responses are grounded in provided content, minimizing hallucinations and protecting user data.
- Documentation & Communication: Clearly documented the system architecture and workflow for transparency and future development.



