An AI-powered portfolio assistant that lets visitors explore my skills, projects, and experience through natural language.
See the codeMore3zdenAI is a RAG-powered portfolio assistant that lets visitors ask natural-language questions about a person's skills, projects, and experience. The app combines a FastAPI backend, a Next.js frontend, FAISS-based retrieval, and a local Ollama model to deliver grounded answers with source attribution.
It is designed as a modern, containerized AI product with streaming responses, persistent conversations, and optional voice output.
More3zdenAI replaces static portfolio navigation with an interactive chat experience. Users can ask questions such as:
The backend retrieves relevant chunks from a markdown knowledge base, generates an answer with a local LLM, and returns the results to the frontend with source references.
User → Next.js UI → FastAPI API → RAG Pipeline
├─ FAISS vector search
├─ PostgreSQL conversation history
├─ Redis response cache
└─ Ollama LLM generation
.
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── config.py
│ │ ├── database.py
│ │ ├── models.py
│ │ ├── schemas.py
│ │ ├── cache.py
│ │ ├── rag/
│ │ └── routes/
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── app/
│ │ ├── components/
│ │ └── lib/
│ ├── package.json
│ └── Dockerfile
├── knowledge_base/
│ └── portfolio.md
├── tts/
├── docker/
├── scripts/
├── docker-compose.yml
└── .env.example
git clone https://github.com/3zden/More3zdenAi.git
cd More3zdenAi
cp .env.example .env
Adjust the values in .env if needed. The defaults are suitable for local development.
./scripts/start.sh
Or run the services directly:
docker compose up -d --build
docker compose logs -f backend
docker compose logs -f frontend
docker compose down
docker compose down -v
Edit knowledge_base/portfolio.md, then rebuild the FAISS index and restart the backend:
docker compose exec backend python -c "import os; os.remove('/app/data/faiss.index'); os.remove('/app/data/chunks.pkl')"
docker compose restart backend
The backend will rebuild the index on startup if the cached files are missing.
The app uses environment variables from .env. Key variables include:
| Variable | Purpose |
|---|---|
| POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD | Database configuration |
| REDIS_URL | Redis connection string |
| OLLAMA_BASE_URL / OLLAMA_MODEL | Ollama LLM settings |
| EMBEDDING_MODEL | Sentence-transformer embedding model |
| RAG_TOP_K / RAG_MIN_SCORE | Retrieval settings |
| TTS_ENABLED / TTS_BASE_URL | Optional voice output settings |
| NEXT_PUBLIC_API_URL | Frontend API base URL |
db, redis, and ollama.faiss_data volume.voice profile in Docker Compose.This project is intended for personal portfolio and demonstration use.
An AI-powered portfolio assistant that lets visitors explore my skills, projects, and experience through natural language.
See the codeMore3zdenAI is a RAG-powered portfolio assistant that lets visitors ask natural-language questions about a person's skills, projects, and experience. The app combines a FastAPI backend, a Next.js frontend, FAISS-based retrieval, and a local Ollama model to deliver grounded answers with source attribution.
It is designed as a modern, containerized AI product with streaming responses, persistent conversations, and optional voice output.
More3zdenAI replaces static portfolio navigation with an interactive chat experience. Users can ask questions such as:
The backend retrieves relevant chunks from a markdown knowledge base, generates an answer with a local LLM, and returns the results to the frontend with source references.
User → Next.js UI → FastAPI API → RAG Pipeline
├─ FAISS vector search
├─ PostgreSQL conversation history
├─ Redis response cache
└─ Ollama LLM generation
.
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── config.py
│ │ ├── database.py
│ │ ├── models.py
│ │ ├── schemas.py
│ │ ├── cache.py
│ │ ├── rag/
│ │ └── routes/
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── app/
│ │ ├── components/
│ │ └── lib/
│ ├── package.json
│ └── Dockerfile
├── knowledge_base/
│ └── portfolio.md
├── tts/
├── docker/
├── scripts/
├── docker-compose.yml
└── .env.example
git clone https://github.com/3zden/More3zdenAi.git
cd More3zdenAi
cp .env.example .env
Adjust the values in .env if needed. The defaults are suitable for local development.
./scripts/start.sh
Or run the services directly:
docker compose up -d --build
docker compose logs -f backend
docker compose logs -f frontend
docker compose down
docker compose down -v
Edit knowledge_base/portfolio.md, then rebuild the FAISS index and restart the backend:
docker compose exec backend python -c "import os; os.remove('/app/data/faiss.index'); os.remove('/app/data/chunks.pkl')"
docker compose restart backend
The backend will rebuild the index on startup if the cached files are missing.
The app uses environment variables from .env. Key variables include:
| Variable | Purpose |
|---|---|
| POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD | Database configuration |
| REDIS_URL | Redis connection string |
| OLLAMA_BASE_URL / OLLAMA_MODEL | Ollama LLM settings |
| EMBEDDING_MODEL | Sentence-transformer embedding model |
| RAG_TOP_K / RAG_MIN_SCORE | Retrieval settings |
| TTS_ENABLED / TTS_BASE_URL | Optional voice output settings |
| NEXT_PUBLIC_API_URL | Frontend API base URL |
db, redis, and ollama.faiss_data volume.voice profile in Docker Compose.This project is intended for personal portfolio and demonstration use.