diff --git a/ARCHITECTURE_ROLES_GROUPS.md b/ARCHITECTURE_ROLES_GROUPS.md index 88b84de..6a286ee 100644 --- a/ARCHITECTURE_ROLES_GROUPS.md +++ b/ARCHITECTURE_ROLES_GROUPS.md @@ -1,5 +1,10 @@ # 🎨 Crumbforest Roles & Groups Architecture +> [!NOTE] +> **Status RC1 (2025-12-07)**: This document outlines the original architectural vision. +> The current implementation has exceeded this specification, featuring **15 Roles** (including DeepBit, Prof. Eule), full **RAG Integration** (Nullfeld), and **Deep Memory**. +> See `crumbforest_config.json` for the definitive configuration. + ## 🎯 Vision **Statt 8x .sh Files → 1x JSON Config mit Rollen, Gruppen & Themes** diff --git a/SESSION_2025-12-03_DOCUMENT_SEARCH_FIX.md b/SESSION_2025-12-03_DOCUMENT_SEARCH_FIX.md deleted file mode 100644 index c194ab2..0000000 --- a/SESSION_2025-12-03_DOCUMENT_SEARCH_FIX.md +++ /dev/null @@ -1,208 +0,0 @@ -# 🎉 Session Notes: Document Search Fix -**Datum:** 2025-12-03 -**Status:** ✅ ERFOLGREICH - -## 🎯 Ziel - -Document Search API zum Laufen bringen - Semantic Search über 721 Crumbforest + 12 RZ-Nullfeld Markdown-Dateien. - -## 🐛 Hauptproblem - -``` -{"detail":"Unsupported embedding model: openai/text-embedding-3-small. -Supported models: ['text-embedding-3-small', 'text-embedding-3-large', 'text-embedding-ada-002']"} -``` - -## 🔍 Root Causes (3x!) - -### 1. Falscher Provider in `.env` -```bash -# ❌ FALSCH: -DEFAULT_EMBEDDING_PROVIDER=openai - -# ✅ RICHTIG: -DEFAULT_EMBEDDING_PROVIDER=openrouter -``` - -### 2. Kein Volume Mount - Code nicht aktiv! -- **Problem**: Docker Image hat Code eingebacken (kein Volume Mount) -- **Symptom**: Alle Code-Edits hatten keine Wirkung -- **Fix**: `docker compose up --build -d` nach JEDER Code-Änderung - -### 3. Collection-Namen inkonsistent -- **Qdrant**: `docs_crumbforest_`, `docs_rz_nullfeld_` (mit Unterstrich) -- **Code**: Suchte nach `docs_crumbforest`, `docs_rz_nullfeld` (ohne) -- **Zusätzlich**: RAGService fügte `_{locale}` hinzu → Doppel-Unterstrich! - -## ✅ Alle Fixes - -### Fix 1: `.env` Konfiguration -```bash -# compose/.env -DEFAULT_EMBEDDING_PROVIDER=openrouter -DEFAULT_EMBEDDING_MODEL=text-embedding-3-small -DEFAULT_COMPLETION_PROVIDER=openrouter -DEFAULT_COMPLETION_MODEL=anthropic/claude-3-5-sonnet -``` - -### Fix 2: `app/routers/document_rag.py` -```python -# Explizites embedding_model ohne Prefix -embedding_provider = ProviderFactory.create_provider( - provider_name=provider, - settings=settings, - embedding_model="text-embedding-3-small" # Ohne openai/ prefix -) - -# Collection-Namen ohne trailing underscore (RAGService fügt _{locale} hinzu) -collections = ["docs_rz_nullfeld", "docs_crumbforest"] -``` - -### Fix 3: `app/lib/embedding_providers/openrouter_provider.py` -```python -# Auto-Prefix für OpenRouter API -model = self.embedding_model if "/" in self.embedding_model else f"openai/{self.embedding_model}" -``` - -### Fix 4: `app/config.py` -```python -# Model ohne Prefix (funktioniert für beide Provider) -default_embedding_model: str = "text-embedding-3-small" -``` - -### Fix 5: Docker Rebuild -```bash -cd compose -docker compose down -docker compose up --build -d -``` - -## 🎊 Erfolgreiche Test-Query - -**Request:** -``` -GET http://localhost:8000/api/documents/search?q=Docker&limit=5 -``` - -**Response:** -```json -{ - "query": "Docker", - "results": [ - { - "post_id": 2032991606, - "title": "ssh_login_test", - "header": "Dockerfile Ergänzung", - "score": 0.5505129, - "collection": "docs_crumbforest" - }, - { - "post_id": 676631428, - "title": "crumbforest_specialist_roles", - "header": "🐋 DockerDuke – Container-Kapitän", - "score": 0.5469476, - "collection": "docs_crumbforest" - } - ], - "provider": "openrouter" -} -``` - -## 🦉 Besondere Momente - -### DockerDuke ist Legende! 🐋 -Der Character "DockerDuke – Container-Kapitän" tauchte in den Search Results auf und begeisterte sofort: -> "dockerduke ist bereits jetzt legende #dude <3" - -### Token-Verbrennung 😅 -Nach vielen Debugging-Runden: -> "nö ... wir verbrennen nur token?" - -Aber am Ende: **WUHUUUU! 🎉** - -## 📊 System-Status - -### Indexierte Dokumente -- **Crumbforest**: 721 Dokumente, 5,219 Vektoren -- **RZ Nullfeld**: 12 Dokumente, 308 Vektoren -- **Total**: 733 Dokumente, 5,527 Vektoren - -### Qdrant Collections -```bash -curl -s http://localhost:6333/collections | jq '.result.collections[].name' -# "docs_crumbforest_" -# "docs_rz_nullfeld_" -``` - -### Provider-Status -```bash -docker compose logs app | grep provider -# ✓ Using provider: openrouter -``` - -## 🎓 Wichtige Learnings - -### 1. Docker Volume Mounts prüfen! -```yaml -# compose/docker-compose.yml -# KEIN Volume Mount für app/ Code! -# → Code ist im Image eingebacken -# → Rebuild nach jeder Änderung! -``` - -### 2. .env überschreibt config.py -```python -# config.py Defaults werden von .env überschrieben -# Pydantic BaseSettings liest: -# 1. Environment Variables -# 2. .env File -# 3. Class Defaults -``` - -### 3. Collection-Namen Konvention -```python -# RAGService erwartet PREFIX -collection_prefix = "docs_crumbforest" # Ohne trailing _ - -# RAGService fügt hinzu: -collection_name = f"{collection_prefix}_{locale}" - -# Bei locale="" → "docs_crumbforest_" ✅ -``` - -### 4. Provider-spezifische Model-Namen -```python -# OpenRouter: "openai/text-embedding-3-small" (mit Prefix) -# OpenAI: "text-embedding-3-small" (ohne Prefix) - -# Lösung: Auto-Prefix in Provider -model = embedding_model if "/" in embedding_model else f"openai/{embedding_model}" -``` - -## 📝 Aktualisierte Dokumentation - -- ✅ **QUICKSTART.md** - Provider-Config Warnung, Rebuild-Requirements -- ✅ **HANDBUCH.md** - Fehler 9 hinzugefügt mit vollständiger Diagnose -- ✅ **compose/.env** - Korrekte Provider-Einstellungen - -## 🚀 Next Steps - -1. ✅ Document Search funktioniert -2. ✅ DockerDuke ist Legende -3. ⏭️ Weitere Queries testen (Python, Qdrant, Kubernetes) -4. ⏭️ RAG mit Completions testen -5. ⏭️ Performance monitoring - -## 🦉 Fazit - -Nach intensivem Debugging (und einigen Token-Opfern 😅): -- **3 Root Causes** identifiziert und gefixt -- **5 Code-Änderungen** implementiert -- **721 Dokumente** durchsuchbar -- **DockerDuke** ist geboren! 🐋 - -**Status: WUHUUUU! 🎊** - ---- - -*"Die Eule hat den Wald durchsucht und gefunden!" - Crumbforest Philosophy, 2025* diff --git a/crumbforest_config.json b/crumbforest_config.json index 86b6271..a621ca5 100644 --- a/crumbforest_config.json +++ b/crumbforest_config.json @@ -1,5 +1,5 @@ { - "version": "1.0.0", + "version": "1.0.0-rc1", "groups": { "home": { "name": "Home (Öffentlich)",