Guten Tag.
Von der Installation eines einfachen RAG-Systems für medizinische Bücher habe ich ein Protokoll geschrieben.
Retrieval-Augmented Generation (RAG) kombiniert das Abrufen von Informationen (Retrieval) aus internen Dokumenten mit der Textgenerierung (Generation) durch KI. Wikipedia zu RAG
Es gibt auch RAG mit Nutzung externer Quellen.
Dieses RAG hier soll sich strikt auf lokale Buchtexte begrenzen.
Dieses RAG hier ist nicht für schutzbedürftige personenbezogene Daten vorgesehen.
Idee ist, medizinische Lehrbücher besser nutzen zu können.
Vorgesehen ist ein Nutzer und 5 bis 50 Bücher.
Fundstellen sollen kapitelgenau angegeben werden.
Was mir die KI erzählt nehme ich als Anregung und lese ggf. das Orginal.
Eine Nvidia-RTX Grafikkarte ist nötig, angeblich reicht eine RTX 2060, ich nutze eine RTX 3700.
Installiert wird am besten auf einer separaten Festplatte mit >100GB.
Es sollte klar sein, welche Taste beim Computerstart gedrückt werden muss für Boot-Auswahl (bei mir F11) und Bios-Menü (bei mir DEL).
Im Bios-Menü muss eingestellt sein, dass kein(!) secure-boot erfolgt, weil sonst angeblich CUDA nicht funktioniert. Bei mir war secure-boot sowieso ausgeschaltet gewesen.
Mit secure-boot ist nicht gemeint die Einstellung, die TPM deaktiviert.
Die Deaktivierung von secure-boot war bei mir im Bios-UEFI-Menü arg versteckt.
Bei Unsicherheit ist es gut, mit genauer Bezeichnung des Mainboard ChatGPT oder die Google-KI zu fragen.
Die Vorgehensweise bei der Installation ist eher kleinschrittig, um Fehler besser eingrenzen zu können.
Ein falscher Buchstabe reicht ja schon für ein Scheitern.
Installiert wird Debian, bei mir ist es Version 13.4.
Dann werden installiert Nvidia-Driver und Nvidia-Cuda-Toolkit, Docker-Ce und Nvidia-Container-Toolkit.
Dann aus dem Docker-Hub Open-WebUI (bei mir Version 0.8.10.), Ollama, Qdrant.
LLM für das Embedding ist z.B. mxbai-embed-largest,
LLM für Auswertung ist z.B. llama 3.1 8B.
Sprache der Wissenstexte ist Englisch, deutsche Texte übersetze ich z.B. mit Google Translate.
Viele Einzelschritte. Die ich reichlich für Irrwege nutzte.
Ohne viele Nachfragen bei ChatGPT und der Google-Ki hätte ich es nicht geschafft.
Auch bei der Fehlersuche im Protokoll war ChatGPT hilfreich.
Interessant war dabei auch, wie anders und auch eigenartig die Missverständnisse beim Dialog mit KI sind.
In der Richtung sehe ich auch den besonderen Wert von RAG bei medizinischen Fragen. Mit den vom System genutzten Büchern neben mir.
Die Installation ist eigentlich ganz einfach. Wenn man eine klare Linie hat. Deshalb die Weitergabe des Protokolls.
Bei meiner Art der Nutzung (privat, lokal, ein Nutzer) sind alle Programme gratis und ohne Registrierung nutzbar.
Bei einer anderen Nutzung sind Lizenzbedingungen zu klären.
Alle Angaben sind natürlich ohne jede Gewähr, Haftung usw.
Debian und Cuda installieren
Meine Debian-ISO-Datei war debian-13.4.0-amd64-DVD-1.iso Die Debian-Seite mit Download.
Mit dem Hilfsprogramm Rufus kommt unter Windows die ISO-Datei auf einen USB-Stick.
Hier ein Link zu Rufus: Rufus-Download bei Chip
Bei der Debian-Installation kann man eigentlich nichts wirklich falsch machen.
Ausser: Auf der falschen Festplatte installieren!
Es kann deshalb sinnvoll sein, zur Sicherheit bei allen anderen Festplatten das Stromkabel zu entfernen.
Beim Computerstart zum Installieren die Taste für Bootauswahl gedrückt halten, den USB-Stick als Quelle wählen.
Im Zweifelsfall ist immer die voreingestellte Auswahl zu nehmen.
Die Frage ob man einen lokalen Treiber laden wolle verneinen.
Die Frage nach Spiegelserver bejahen.
Kein root-Passwort eingeben.
Ein sehr kurzes Nutzerpasswort nehmen - es muss oft (!) eingegeben werden.
Wenn doch etwas schief geht: Alles von vorne.
Jetzt ist Debian fertig installiert und gestartet.
In den Einstellungen (Zahnrad) > Energie > Automatische Bereitschaft nein.
Einstellungen > System > Softwareaktualisierungen manuell.
Evtl. Desktop aufräumen nach Geschmack.
Vor manuellen Debian-Updates mache ich ggf. ein Backup der Festplatte mit Clonezilla.
Nun werden installiert die zu Debian-Repos gehörende Ausführung von nvidia-driver
und von nvidia-cuda-toolkit, das ist bei späterer Kernel-Aktualisierung viel stabiler,
als die Verwendung der von nvidia direkt angebotenen Treiber/Toolkits.
Die Debian-Pakete bieten höhere Stabilität, unterstützen aber ggf. nicht die neuesten NVIDIA-GPUs.
Erstmal kommen Vorarbeiten.
Im Folgenden werden alle Terminalbefehle im blauen Rahmen und alle Dateitexte im roten Rahmen zum Kopieren mit Copy-Button angeboten.
Bei mehrzeiligen Texten enthält die HTML-Quelle die Zeichenfolge <br>, diese erscheint aber nicht bei der Einfügung.
Trotzdem ist darauf zu achten, dass nicht durch irgendwelche Umstände doch die Zeichenfolge <br> erscheint.
Hier der erste Terminalbefehl. Er öffnet eine vorhandene Konfigurationsdatei im Editor nano.
Einfügen erfolgt im Terminal und auch sonst in Linux am besten mit Rechtsklick und dann Klick auf Einfügen.
Dann mit der Pfeiltaste nach rechts, damit die Markierung verschwindet.
Der Editor nano hat ungewohnte Befehle. Cursorsteuerung mit den Pfeiltasten. Einfügen mit Rechtsklick und Klick auf Einfügen. Speichern mit STRG o.
sudo nano /etc/apt/sources.list
Gehe mit den Pfeiltasten mit dem Cursor hinter "non-free-firmware" ans Zeilenende.
Gib ein Leerzeichen ein. Gib dann mit Rechtsklick und Klick auf Einfügen den kopierten Text contrib non-free ein.
Mache das für alle sechs Vorkommen von "non-free-firmware".
contrib non-free
Dann wird gespeichert mit STRG o, der Dateinamen wird bestätigt mit ENTER, geschlossen wird mit STRG x
Der nächste Terminalbefehl:
sudo apt update
Jetzt kommen zwei Terminalbefehle zur Reinigung von alten nvidia und cuda Programmen (ob nötig lasse ich offen).
sudo apt purge -y 'nvidia-*' 'cuda-*' || true
sudo apt autoremove -y
Jetzt kommt ein Terminalbefehl, der eine Blacklist für nouveau mit dem Nano-Editor erstellt (ob nötig lasse ich offen).
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
Jetzt kommt Text der dazu in nano als Inhalt einzufügen ist:
blacklist nouveau
options nouveau modeset=0
Wieder speichern mit STRG o, bestätigen mit ENTER, schliessen mit STRG x.
Weiterer Terminalbefehl:
sudo update-initramfs -u
Jetzt Header erneuern und die eigentliche Installation
Den Hinweis auf den wegen momentanem TreiberKonflikt nach Ende der Installation nötigen Neustart mit Klick auf OK bestätigen.
Weiterer Terminalbefehl noch vor dem Neustart:
sudo apt update
Weiterer Terminalbefehl zum Neustart:
sudo reboot
Wenn nach dem Herunterfahren der Neustart beginnt die Bootmenütaste drücken.
Der Neustart klappt ohne Probleme
Jetzt kommt die Prüfung, ob CUDA korrekt installiert ist.
nvidia-smi
Wenn hier die GPU benannt ist, ist alles OK.
nvcc --version
Wenn hier die CUDA-Treiber-Version - aktuell 12.4. - angegeben ist, ist alles OK.
Anmerkungen:
Die recht alte CUDA-Version 12.4. des Debian-Repos kann angeblich bei RTX 5090 manchmal Probleme machen.
Andererseits ist angeblich Ollama derzeit primär auf CUDA 12.x optimiert. Neuere CUDA-Versionen (z. B. 13.x) könnten zu Inkompatibilitäten führen. Fertig.
Hier habe ich die Festplatte gesichert mit Clonezilla.
Docker Engine installieren
Verwendet wird die proprietäre Docker-CE Engine und nicht die Docker-Engine aus den Debian-Repos.
Angeblich würde die Nutzung der Debian-Repos bei KI-Anwendungen Probleme machen.
Hier der Link zur offiziellen Docker Anleitung.
Vorbereitend wird jetzt das System von alten Docker Resten gereinigt:
Um Docker-ce unter Debian 13.4 die Nutzung der Nvidia-GPU zu ermöglichen ist Nvidia Container Toolkit nötig.
Hierfür den GPG-Schlüssel herunterladen und speichern:
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Paketliste aktualisieren:
sudo apt-get update
Damit Docker Zugriff auf die GPU erhält, wird das NVIDIA Container Toolkit installiert und konfiguriert.
Jetzt die eigentliche Installation des Nvidia Container Toolkit:
sudo docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi
Man muss eine Tabelle mit der GPU sehen. Docker ist fertig.
Hier habe ich die Festplatte gesichert mit Clonezilla.
Docker Images, Container und Volumes erstellen für die
RAG-Oberfläche (OpenWebUI), RAG-System(Ollama), RAG-Datenbank(Qdrant)
Hier verwende ich ein Script, das mir bis auf eine kleine Abweichung dankenswerter Weise ChatGPT erstellte.
Unterverzeichnis rag erstellen:
mkdir rag
In rag wechseln.
cd rag
Das System ist für lokale Nutzung ausgelegt. Alle Docker-Dienste sind an 127.0.0.1 gebunden, um Zugriff aus dem Netzwerk zu verhindern.
Achtung bei eventuellem Editieren von docker-compose.yml: korrekte Einrückungen sind nötig.
Mit dem Editor nano in diesem Verzeichnis die Datei docker-compose.yml erstellen:
nano docker-compose.yml
Bitte diesen Link öffnen: Inhalt von docker-compose Den gesamten (!) Inhalt markieren z.B. mit STRG a und kopieren mit Rechtsklick mit der Maus und Klick auf Kopieren.
Nur zur Information ist dieser Text auch ganz unten im grossen grünen Rahmen gezeigt.
Wegen der Formatierung der Einrückungen in HTML ist der Inhalt im grünen Rahmen
jedoch formal nicht als Inhalt einrer compose-Datei geeignet.
Dann den Inhalt im nano-Editor einfügen mit Rechtsklick und Klick auf Einfügen.
Dann in nano speichern mit STRG o , Dateiname bestätigen mit ENTER, Verlassen mit STRG x
Dann die Compose-Datei ausführen mit:
docker compose up -d
Achtung. Der Download der Images von etwa 8 GB aus dem Docker-Hub dauert lange, dann werden aus Images Container und Volumes erstellt.
Wenn aus technischem Grund der Download abbrechen sollte einfach docker compose up -d neu starten
Als Test die Oberfläche von OpenWebUI öffnen in Firefox: localhost:3000
Bitte jetzt noch keine Eingaben machen. Fertig.
Open-WebUI einrichten und die ersten LLM und Wissenstexte laden
Die Angaben im Folgenden beziehen sich auf die am 20.3.206 aktuelle Version 0.8.10 von OpenWebUI
Jetzt(!) in Firefox in OpenWebUI die Aufforderung zum Starten anklicken.
Lokal anmelden mit Name, Emailadresse, Passwort.
Die Angaben bleiben lokal, sie können beliebig gemacht werden, müssen nicht echt sein, müssen nur erinnert werden.
Modelle von Ollama
holen für Auswertung und Embedding, ich empfehle llama3.1:8b und mxbai-embed-large:latest
Links unten im Eck auf den orange Punkt mit den Initialen klicken
In der Auswahl links Admin-Bereich anklicken
In der Auswahl in der Leiste oben auf Einstellungen klicken
In der Auswahl Links auf Modelle klicken
Rechts oben auf das kleine Feld Verwalten klicken
Bei Bedarf auf den klein geschriebenen Link rechts "hier klicken" klicken, es öffnet sich ein neuer Tab mit der Modellauswahl von Ollama.
Im Firefox-Tab "Admin-Bereich" bei dem grauen Text "Modell Tag eingeben .. " ein Modell eingeben, z.B. :
llama3.1:8b
Rechts neben dieser Eingabe auf den Download-Pfeil klicken, den Download abwarten, der Fortschritt wird mit einem Balken angezeigt.
Nochmal Verwalten anklicken
Jetzt nochmal bei dem grauen Text "Modell Tag eingeben .. " ein Modell eingeben, z.B.:
mxbai-embed-large:latest
Und auf den Download-Pfeil klicken
Einstellen, dass mxbai-embed-large:latest zum Embedding verwendet wird:
Auf Admin-Bereich>Einstellungen>Dokumente gehen, Wichtig: Bei Embedding-Modell-Engine in der Auswahl rechts anstelle von "Standard .." "Ollama" auswählen.
Bei dem grauen Text "Embedding Modell festlegen" eingeben mxbai-embed-large:latest
Rechts unten auf Speichern klicken.
Den Arbeitsbereich konfigurieren:
In der Ecke links oben auf "OI" klicken
Links auf Arbeitsbereich klicken
Rechts oben auf +Neues Modell klicken
Den grossen Text Modellname überschreiben z.B. mit MeineFrage
"Wählen Sie ein Basismodell" anklicken und llama3.1:8b wählen
Den grauen Text "Fügen Sie eine kurze Beschreibung .." beliebig überschreiben, z.B. Auswertung
Bei Bedarf ein Bild eingeben mit Klick auf den schwarzen Punkt im grossen OI-Feld
Unter System-Prompt eingeben: Use provided context only
Unten Speichern & Erstellen anklicken
Klick links unten auf orangen Punkt. Dann Klick auf Einstellungen>Allgemein.
Bei System-Prompt Use provided context only eintragen und speichern.
Wissen hinzufügen
Oben auf "Wissen" klicken
Rechts auf + Neues Wissen klicken
Den grauen Text Benennen Sie Ihren Wissensspeicher überschreiben, bei mir Merck
Den grauen Text Beschreiben Sie Ihren Wissensspeicher .. überschreiben, bei mir Ausgabe
Klick rechts unten auf Wissen erstellen
Klick rechts oben auf +
Bei mir klicken auf Ordner hochladen, alternativ auf Datei hochladen
Bei mir wähle ich den Ordner aus, in dem ich die pdf-Dateien für die englisch-sprachigen Kapitel des Merck-Manual-of-Diagnosis-and-Therapy habe
Anmerkung: Bisher habe ich noch kein gutes zweisprachiges Embedding Modell för Deutsch und Englisch zum Laufen gebracht.
Ich nehme deshalb zum Embedding nur Texte in englischer Sprache. Deutsche Texte übersetze ich vorher mit Google-Translate.
Klick rechts oben auf Hochladen
Firefox fragt nochmal nach, auch hier Klick auf Hochladen
Fortschritt und Erfolg werden angezeigt. Abwarten. Bei laufendem Embedding nicht (!) gleichzeitig Abfragen machen.
Klick Arbeitsbereich
Klick auf das Bild für meinen Arbeitsbereich
Klick auf Wissensspeicher auswählen
Klick bei mir auf auf Merck
Klick auf Speichern & Aktualisieren
Die erste Abfrage
Klick auf Arbeitsbereich
Klick auf - bei mir - "MeineFrage"
Die Beispielfrage - Welche Krankheiten machen Gelbsucht - gibt eine schlechte Antwort
Die Beispielfrage - Give diseases with icterus - gibt eine gute Antwort
Antworten sind begrenzt auf die Wissenstexte. Genutzte Kapitel werden angegeben.
Guten Erfolg beim Testen!
21.3.2026 Peter G. Sende Mail
##############################################################################################################