User Tools

Site Tools


ai-deployment-deutsch

This is an old revision of the document!


# Deployment: Lokale KI-Umgebung (Zahn-Abrechnungs-Assistent) – Teil 1

Ziel: Von null auf lauffähiges System (LM Studio + Open WebUI + ComfyUI) auf Nobara (Fedora-basiert), x86-64. Alle Komponenten lokal – kein Cloud-Zugriff.

—

## 0. Voraussetzungen

Voraussetzung Details
——
GPU NVIDIA, 16–19 GB VRAM (Qwen3 27B)
Treiber aktueller NVIDIA-Treiber + CUDA-Check: `nvidia-smi`
Podman `podman –version` (Open WebUI läuft als Container)
User `rootai`, Arbeitsverzeichnis `/home/rootai`
Ports 1234 (LM Studio), 3000 (Open WebUI), 8188 (ComfyUI)

—

## 1. LM Studio (AppImage) installieren

1. AppImage herunterladen und nach `/home/rootai/Downloads` legen. 2. Ausführbar machen:

 ```bash
 chmod +x ~/Downloads/lm-studio-*.AppImage
 ```

3. Nobara/Fedora-Kompatibilität (FUSE): Falls die AppImage nicht startet:

 ```bash
 ./lm-studio-*.AppImage --appimage-extract
 ./lm-studio-*/AppRun
 ```

4. Modell laden: In LM Studio → Models → *Qwen3 27B (GGUF)* herunterladen (~16 GB).

  1. Wichtig: Modelle & Einstellungen landen in `~/.lmstudio` – die AppImage selbst ist austauschbar, die Daten bleiben.

5. CLI `lms` global verlinken (Symlink auf die AppImage):

 ```bash
 sudo ln -sf /home/rootai/Downloads/lm-studio-*.AppImage /usr/local/bin/lms
 ```
 ⚠️ Nach jedem AppImage-Update mit neuem Dateinamen: Symlink neu setzen (siehe Fehlersuche).

Test: ```bash lms ls # Modell muss gelistet sein ```

—

## 2. LM Studio Server starten + Test

```bash # Server starten (LM Studio → Developer → Start Server, Port 1234) lms load qwen/qwen3.8-27b

# API-Test curl -s http://127.0.0.1:1234/v1/models ``` ✅ Erwartet: JSON-Liste mit `qwen3.8-27b`.

—

## 3. Open WebUI (Podman-Container)

```bash # Image holen podman pull ghcr.io/open-webui/open-webui

# Container starten (Name: open-webui, Port 3000, eigene Daten-Volume) podman run -d \

  1. -name open-webui \
  2. p 3000:8080 \
  3. v open-webui-data:/app/backend/data \
  4. -restart unless-stopped \

ghcr.io/open-webui/open-webui ```

Einrichtung im Browser (`http://<server>:3000`):

1. LLM-Anbindung: Settings → Connections → *OpenAI API*

  1. Base URL: `http://host.docker.internal:1234/v1` (aus der Container-Sicht)
  2. API-Key: beliebig (LM Studio fordert keinen)
  3. Test: Modell `qwen3.8-27b` muss erscheinen

2. Embedding-Modell: Settings → Models → `nomic-embed-text-v1.5` (eingebaut) als Embedding setzen 3. Benutzer anlegen: `artz` mit Lesezugriff auf die Wissensbasis 4. Wichtig: Eingebautes Tool „Ask User“ deaktivieren – sonst stellt das Modell Rückfragen statt zu antworten

Test: ```bash podman ps | grep open-webui # Container muss laufen curl -s http://127.0.0.1:3000 # WebUI-Antwort ```

—

## 4. ComfyUI (Z-Image)

```bash # Start (läuft im Hintergrund, Log nach ~/comfyui.log) nohup ~/comfyui-env/bin/python ~/comfyui/main.py –listen –port 8188 » ~/comfyui.log 2>&1 &

# Test curl -s http://127.0.0.1:8188/system_stats ```

Anbindung in Open WebUI: Settings → Connections → ComfyUI - URL: `http://localhost:8188` - Modell: Z-Image - Log bei Problemen: `tail -f ~/comfyui.log`

—

## 5. Autostart beim Systemstart

Skript: `/home/rootai/start-ai.sh` (bereits vorhanden)

```bash #!/bin/bash # warte für Systemdienste und LM Studio Server sleep 15 # lade Qwen-Modell automatisch in LM Studio lms load qwen/qwen3.8-27b # kurze Stabilisierungszeit sleep 10 # starte Open WebUI neu podman restart open-webui ```

Startreihenfolge ist entscheidend: LM Studio → Modell laden → Open WebUI. (ComfyUI-Start bei Bedarf ergänzen: `nohup`-Zeile aus Schritt 4 anhängen.)

—

## 6. Abschluss-Smoke-Test

```bash # 1. LM Studio API curl -s http://127.0.0.1:1234/v1/models

# 2. Open WebUI erreichbar curl -sI http://127.0.0.1:3000 | head -1

# 3. ComfyUI erreichbar curl -s http://127.0.0.1:8188/system_stats | head -c 100 ```

1. Browser → `http://<server>:3000` → Login `artz` 2. Freie Frage an `qwen3.8-27b` stellen → Antwort muss ohne RAG-Zitate kommen (RAG kommt in Teil 2)

—

## 7. Fehlersuche (Deployment)

Symptom Ursache Lösung
———
AppImage startet nicht FUSE fehlt (Fedora/Nobara) `–appimage-extract`, dann `AppRun` starten
`lms: command not found` Symlink defekt/alter Dateiname `sudo ln -sf /pfad/neue/AppImage /usr/local/bin/lms`
WebUI findet kein Modell Falsche Base URL `host.docker.internal:1234/v1` statt `localhost`
Container startet nicht neu Name falsch `podman ps -a` → richtigen Container-Namen prüfen
Port belegt Alter Prozess `sudo lsof -i :1234` / `:3000` / `:8188`

# Deployment: Lokale KI-Umgebung (Zahn-Abrechnungs-Assistent) – Teil 2: RAG-Wissensbasis

Ziel: Die 5 Abrechnungsdokumente als Wissensbasis „Zahnarztabrechnung” in Open WebUI einbinden und ein spezialisiertes Modell „Zahn-Abrechnungs-Assistent“ anlegen.

—

## 1. Embedding-Modell setzen (Voraussetzung)

Ohne Embedding-Modell funktioniert RAG nicht.

1. Open WebUI → Settings → Models 2. Embedding-Modell: `nomic-embed-text-v1.5` (eingebaut – kein Ollama/LM-Studio nötig) 3. Test: Modell-Liste zeigt Embedding an

Fallback, falls die deutsche Suche schlecht wird: `bge-m3` per Ollama installieren und als Embedding setzen.

—

## 2. PDFs vorbereiten

# Dokument Quelle Besonderheit
————
1 SGB V (Gesamtext) gesetze-im-internet.de 577 Seiten – enthält viel Fremdmaterial (Pharmazie, Klinik). Ggf. auf Teil 3 (§§ 55–66) beschneiden, wenn Zitate „Rauschen” zeigen
2 KZBV FZ-Kompendium 2025 KZBV Festzuschüsse
3 GOÄ/GOZ pkv.de Privatärztliche Gebührenordnungen
4 BEL-Preisliste 2025 kvzbw.de
5 BEB-Preisliste 2024 itzgmbh.de ⚠️ Bildbasiert (Scanner) – OCR erforderlich, siehe unten

Vorheriger Check jedes PDFs: - Kann man Text per Auswahl/Kopieren extrahieren? → OK - Nur Bilder? → OCR-Problem (BEB)

—

## 3. OCR für bildbasierte PDFs aktivieren (BEB!)

Symptom ohne OCR: BEB-Zitate fehlen oder liefern Unsinn, andere PDFs funktionieren.

Lösung: 1. Open WebUI → Admin → Settings → Documents 2. „PDF Extract Images (OCR)“ aktivieren (ON) 3. BEB-Preisliste neu hochladen / neu indizieren (altes Dokument löschen, sonst bleibt der alte, leere Index)

—

## 4. Wissensbasis anlegen

1. Open WebUI → Knowledge → Create

  1. Name: `Zahnarztabrechnung`

2. Dokumente hinzufügen: alle 5 PDFs hochladen 3. Warten, bis alle Dokumente den Status „processed” haben (keine Fehler) 4. Zugriff: Nutzer `artz` → Read-Zugriff auf die Wissensbasis

Test der Wissensbasis (ohne Modell-Prompt): - Neue Chat-Session, Wissensbasis „Zahnarztabrechnung“ per 📎 anhängen - Testfrage: *„Welcher Festzuschuss gilt für eine Inlaysversorgung?”* - ✅ Erwartet: Antwort mit Quellen-Zitaten aus dem FZ-Kompendium

—

## 5. Modell „Zahn-Abrechnungs-Assistent“ anlegen

1. Open WebUI → Settings → Models → Create 2. Name: `Zahn-Abrechnungs-Assistent` 3. Base Model: `qwen3.8-27b` (LM Studio) 4. System-Prompt:

``` Du bist ein Experte für die zahnärztliche und zahntechnische Abrechnung (GOÄ/GOZ, FZ-Kompendium, BEL/BEB, SGB V). Beantworte ausschließlich auf Basis der hinterlegten Dokumente. Nenne konkrete Positionsnummern, Preise, die Edition (z. B. BEB 2024, BEL 2025) und die Quelle. Falls ein Thema nicht in den Dokumenten abgedeckt ist, sag das klar. Hinweis: Dies ersetzt keine Rechtsberatung. ```

5. Wichtig: Eingebautes Tool „Ask User” in diesem Modell deaktivieren – sonst stellt das Modell Rückfragen („Welche Zahnnummer?“) statt direkt aus den Dokumenten zu antworten.

—

## 6. End-to-End-Test (RAG)

1. Browser → `http://<server>:3000` → Login `artz` 2. Modell `Zahn-Abrechnungs-Assistent` auswählen 3. Deutsche Testfragen, z. B.:

  1. *„Welche GOZ-Position ist für eine Füllung mit Komposit an einem Schneidezahn zu berechnen?”* → erwartet: GOZ 2010 mit Quelle
  2. *„Was kostet ein Vollkeramik-Krone laut BEB?“* → erwartet: BEB-Position + Preis + Edition 2024
  3. *„Welcher Festzuschuss gilt bei Inlays?”* → erwartet: FZ-Kompendium 2025

4. Prüfpunkte pro Antwort:

  1. ✅ Quellen-Zitate sichtbar (Dokument + Abschnitt)
  2. ✅ Konkrete Positionsnummer + Preis
  3. ✅ Edition genannt (BEB 2024 / BEL 2025 / FZ 2025)
  4. ✅ Bei fehlender Info: klare Aussage statt Halluzination

—

## 7. Fehlersuche (RAG)

Symptom Ursache Lösung
———
Antwort ohne Quellen / frei erfunden RAG nicht angeschlossen Modell-Prompt prüfen + Wissensbasis in Chat anhängen
BEB liefert keine sinnvollen Zitate PDF bildbasiert OCR (Abschnitt 3) aktivieren, Dokument neu indizieren
Zitate aus SGB V zeigen Pharma/Klinik-Rauschen 577-Seiten-Gesamtext zu breit SGB V auf §§ 55–66 beschneiden, Dokument ersetzen, neu indizieren
Langsame Antworten bei großen PDFs Index-Größe Normal – Cache warmt sich auf; ggf. Chunk-Größe in Settings prüfen
Modell fragt nach statt zu antworten Tool „Ask User“ aktiv In den Modell-Einstellungen deaktivieren
`artz` sieht keine Wissensbasis Keine Berechtigung Knowledge → `artz` → Read-Zugriff setzen
ai-deployment-deutsch.1789564875.txt.gz · Last modified: by misa