Spring Boot 3.5 / Java 21 REST API backend powering a personal portfolio website with optional AI capabilities.
Embeddings (RAG) are disabled by default.
- Portfolio project, not production
- Embeddings require paid API usage
- Free tier (~100 requests/day) is quickly exhausted during re-indexing
- Zero cost by default
- No dependency on Postgres/pgvector
- AI chat works using lightweight context (no vector search)
👉 You can enable full RAG anytime if needed.
gemini-embedding-001on the free tier allows 100 requests/day.- A typical portfolio (80–120 chunks) nearly exhausts this in a single re-index.
app.features.embeddings.index-batch-size=20 # chunks per API call
app.features.embeddings.index-batch-delay-ms=1000 # delay between batchesWhen the quota is hit:
- No failures
- Automatic fallback to context mode
- Only difference: no vector-based citations
POST /api/admin/ai/reindex-portfolio → 202 Accepted { jobId }
GET /api/admin/ai/reindex-portfolio/status/{jobId} → job progress
- Requires HTTP Basic auth
- Triggered on startup and blog updates