Close two documentation gaps found during an accuracy audit
- README's "Bekannte Stolpersteine" quick-reference list was missing the podcast-language pitfall (already documented in CLAUDE.md/BEDIENUNGSANLEITUNG.md). - The search/ask feature was only mentioned in passing; added a full section with the working curl examples and the SSE response shape, since it's the fastest/most accurate way to query long documents. Everything else cross-checked against live state (credential num_ctx, default models, running services, episode profile languages) and matched. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
81b2e90326
commit
83fd13fb98
2 changed files with 50 additions and 2 deletions
|
|
@ -15,7 +15,8 @@ siehe [`CLAUDE.md`](CLAUDE.md).
|
|||
5. [Stimmklonung](#5-stimmklonung)
|
||||
6. [Modelle und Provider verwalten](#6-modelle-und-provider-verwalten)
|
||||
7. [Dienste starten/stoppen](#7-dienste-startenstoppen)
|
||||
8. [Troubleshooting](#8-troubleshooting)
|
||||
8. [Suche über Chunks (Search/Ask)](#8-suche-über-chunks-searchask)
|
||||
9. [Troubleshooting](#9-troubleshooting)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -220,7 +221,51 @@ ollama ps # aktuell geladene Modelle + GPU/CPU-Verteilung
|
|||
|
||||
---
|
||||
|
||||
## 8. Troubleshooting
|
||||
## 8. Suche über Chunks (Search/Ask)
|
||||
|
||||
Jedes Dokument wird beim Hochladen automatisch in feste, überlappende Textabschnitte
|
||||
("Chunks", ~400 Tokens) zerlegt und eingebettet — **nicht** kapitelweise, sondern rein
|
||||
größenbasiert (siehe Abschnitt 2). Um gezielt in diesen Chunks zu suchen, gibt es zwei
|
||||
API-Endpunkte (in der UI vermutlich unter einem eigenen Menüpunkt wie „Search"/„Ask" mit
|
||||
Lupen-Symbol, getrennt von „Mit Notebook chatten" — die genaue Beschriftung war ohne
|
||||
Browser-Zugriff nicht zu verifizieren):
|
||||
|
||||
### Einfache Suche — schnell, liefert Roh-Textstellen
|
||||
|
||||
```bash
|
||||
curl -s -X POST http://127.0.0.1:5055/api/search \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"query": "Suchbegriff", "type": "vector", "limit": 5}'
|
||||
```
|
||||
|
||||
Liefert die ähnlichsten Chunks per Embedding-Vergleich samt Ähnlichkeits-Score (0–1), ohne
|
||||
KI-Interpretation — am schnellsten, aber du musst die Antwort selbst zusammensetzen.
|
||||
|
||||
### „Ask" — durchsuchen und direkt beantworten lassen
|
||||
|
||||
Die smartere Variante: Die KI zerlegt die Frage selbst in mehrere gezielte Suchanfragen,
|
||||
durchsucht die Chunks für jede getrennt und fasst alles zu einer einzigen, mit
|
||||
Quellenverweisen (`[source:...]`) belegten Antwort zusammen. Getestet mit „Wie kam Wallenstein
|
||||
ums Leben?" — Ergebnis war eine vollständige, korrekt zitierte Antwort in ca. 3 Minuten
|
||||
(mehrere LLM-Aufrufe hintereinander: Suchstrategie → Einzelantworten → Zusammenfassung).
|
||||
|
||||
```bash
|
||||
MODEL_ID=$(curl -s http://127.0.0.1:5055/api/models/defaults | python3 -c "import json,sys; print(json.load(sys.stdin)['default_chat_model'])")
|
||||
curl -N -X POST http://127.0.0.1:5055/api/search/ask \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"question\": \"Deine Frage\", \"strategy_model\": \"$MODEL_ID\", \"answer_model\": \"$MODEL_ID\", \"final_answer_model\": \"$MODEL_ID\"}"
|
||||
```
|
||||
|
||||
Antwort kommt als Server-Sent-Events-Stream (`data: {...}`-Zeilen, kein einzelnes JSON-Objekt);
|
||||
das letzte `"type": "complete"`-Event enthält die finale Antwort im Feld `final_answer`.
|
||||
|
||||
**Wann was nutzen:** Für gezielte Detailfragen über lange/viele Quellen ist „Ask" meist
|
||||
treffsicherer und dabei noch schneller als der „vollständiger Inhalt"-Chat-Modus (Abschnitt 3),
|
||||
weil nur die relevanten Chunks statt des ganzen Dokuments verarbeitet werden.
|
||||
|
||||
---
|
||||
|
||||
## 9. Troubleshooting
|
||||
|
||||
### „Chat gibt keine Antwort" (leere Antwort, kein Fehler)
|
||||
|
||||
|
|
|
|||
|
|
@ -204,3 +204,6 @@ Kurzreferenz — Details jeweils in [`CLAUDE.md`](CLAUDE.md):
|
|||
leere Chat-Antworten bei größerem Kontext, ohne sichtbaren Fehler.
|
||||
- **Neue Host-Ports brauchen eine `ufw`-Regel**, sonst kann der Container sie nicht erreichen
|
||||
(Timeout, keine Fehlermeldung in Open Notebook selbst).
|
||||
- **Podcasts werden ohne explizites `language`-Feld auf Englisch erzeugt**, unabhängig von der
|
||||
Sprache der Quelle. Die drei mitgelieferten Episode-Profile sind bereits auf `"de"` gesetzt;
|
||||
bei selbst angelegten Profilen selbst daran denken.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue