Bump version to 1.0.0-rc1
This commit is contained in:
@@ -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**
|
||||
|
||||
@@ -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*
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.0-rc1",
|
||||
"groups": {
|
||||
"home": {
|
||||
"name": "Home (Öffentlich)",
|
||||
|
||||
Reference in New Issue
Block a user