112 lines
2.4 KiB
Markdown
112 lines
2.4 KiB
Markdown
# apply4jobs RAG Stack
|
||||
|
|
|
|||
|
|
KI-basierter Chat-Assistent für apply4jobs.de – beantwortet Recruiter-Fragen zu Sebastian Fröhlich auf Basis seiner Bewerbungsunterlagen.
|
|||
|
|
|
|||
|
|
## Architektur
|
|||
|
|
|
|||
|
|
\`\`\`
|
|||
|
|
apply4jobs.de (Next.js)
|
|||
|
|
└── ChatWidget → https://ai.apply4jobs.de/api/v1/chat/completions
|
|||
|
|
└── FastAPI RAG-Bridge (Port 8000)
|
|||
|
|
├── multilingual-e5-small (Embeddings)
|
|||
|
|
├── pgvector / PostgreSQL (Vektordatenbank)
|
|||
|
|
└── OpenAI GPT-4o-mini (Generierung)
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
## Stack
|
|||
|
|
|
|||
|
|
| Service | Image | Port |
|
|||
|
|
|---------|-------|------|
|
|||
|
|
| PostgreSQL + pgvector | pgvector/pgvector:pg16 | 5432 |
|
|||
|
|
| Ollama | ollama/ollama:latest | 11434 |
|
|||
|
|
| Open WebUI | ghcr.io/open-webui/open-webui:main | 3000 |
|
|||
|
|
| RAG API | python:3.11-slim (custom) | 8000 |
|
|||
|
|
|
|||
|
|
## Voraussetzungen
|
|||
|
|
|
|||
|
|
- Docker + Docker Compose v2
|
|||
|
|
- Ubuntu 22.04 LTS
|
|||
|
|
- Domain mit SSL (Let's Encrypt)
|
|||
|
|
- OpenAI API Key (GPT-4o-mini)
|
|||
|
|
|
|||
|
|
## Setup
|
|||
|
|
|
|||
|
|
### 1. Repository klonen
|
|||
|
|
|
|||
|
|
\`\`\`bash
|
|||
|
|
git clone <repo-url> /opt/apply4jobs
|
|||
|
|
cd /opt/apply4jobs
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
### 2. Umgebungsvariablen konfigurieren
|
|||
|
|
|
|||
|
|
\`\`\`bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
nano .env
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
\`\`\`env
|
|||
|
|
OPENAI_API_KEY=sk-proj-...
|
|||
|
|
POSTGRES_PASSWORD=dein-sicheres-passwort
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
### 3. Stack starten
|
|||
|
|
|
|||
|
|
\`\`\`bash
|
|||
|
|
docker compose up -d
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
### 4. Ollama-Modelle pullen
|
|||
|
|
|
|||
|
|
\`\`\`bash
|
|||
|
|
docker exec ollama ollama pull llama3.2:3b
|
|||
|
|
docker exec ollama ollama pull nomic-embed-text
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
### 5. Datenbank importieren
|
|||
|
|
|
|||
|
|
\`\`\`bash
|
|||
|
|
docker exec -i postgres psql -U anythingllm -d anythingllm < backup.sql
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
## RAG API Endpunkte
|
|||
|
|
|
|||
|
|
| Methode | Endpoint | Beschreibung |
|
|||
|
|
|---------|----------|-------------|
|
|||
|
|
| GET | /health | Health Check |
|
|||
|
|
| GET | /v1/models | Verfügbare Modelle |
|
|||
|
|
| POST | /retrieve | Kontext aus pgvector abrufen |
|
|||
|
|
| POST | /v1/chat/completions | OpenAI-kompatibler Chat-Endpunkt |
|
|||
|
|
|
|||
|
|
## Kosten
|
|||
|
|
|
|||
|
|
| Posten | Kosten/Monat |
|
|||
|
|
|--------|-------------|
|
|||
|
|
| Hetzner CPX42 | ~22 € |
|
|||
|
|
| OpenAI GPT-4o-mini | ~1-3 € |
|
|||
|
|
| **Gesamt** | **~23-25 €** |
|
|||
|
|
|
|||
|
|
## Wartung
|
|||
|
|
|
|||
|
|
\`\`\`bash
|
|||
|
|
# Logs anzeigen
|
|||
|
|
docker compose logs -f rag-api
|
|||
|
|
|
|||
|
|
# Container neu starten
|
|||
|
|
docker compose restart rag-api
|
|||
|
|
|
|||
|
|
# Nach Code-Änderungen neu bauen
|
|||
|
|
docker compose up -d --build rag-api
|
|||
|
|
|
|||
|
|
# SSL-Zertifikat testen
|
|||
|
|
certbot renew --dry-run
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
## Sicherheitshinweise
|
|||
|
|
|
|||
|
|
- .env niemals ins Git-Repository committen
|
|||
|
|
- DSGVO: Datenschutzhinweis auf apply4jobs.de erforderlich
|
|||
|
|
- Chat-Logs werden nicht persistiert
|
|||
|
|
- Hetzner Rechenzentrum Deutschland = DSGVO-konform
|
|||
|
|
|