RAG für medizinische Bücher


Guten Tag.
Von der Installation eines einfachen RAG-Systems für medizinische Bücher habe ich ein Protokoll geschrieben.
Idee ist, medizinische Lehrbücher besser nutzen zu können.
Vorgesehen ist ein Nutzer und 5 bis 50 Bücher.
Wobei sich die KI strikt auf den Text der Bücher begrenzt.
Und die KI ihre Fundstellen kapitelgenau angibt.
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.
Aber eigentlich ganz einfach. 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.
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.
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.
Erstmal kommen Vorarbeiten.
Im Folgenden werden alle Texte als Terminalbefehl oder Dateiinhalt zum Kopieren in Rahmen 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.
Der Editor nano hat ungewohnte Befehle. Einfügen mit STRG u oder Rechtsklick und Klick auf Einfügen. Speichern mit STRG o.

sudo nano /etc/apt/sources.list


Jetzt kommt ein Textstück, das in der geöffneten Datei nach jedem "non-free-firmware" am Zeilenende hinzugefügt werden muss
nach (!) vorheriger Eingabe eines Leerzeichens.

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 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

sudo apt install linux-headers-$(uname -r) nvidia-driver nvidia-cuda-toolkit


Weiterer Terminalbefehl:

sudo apt update


Weiterer Terminalbefehl zum Neustart:

sudo reboot



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 angegeben ist, ist alles OK.
(Die recht alte CUDA-Version des Debian-Repos kann angeblich allerdings bei RTX 5090 manchmal Probleme machen.)
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:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)


Im Folgenden wird in mehreren Schritten Docker's official GPG key hinzugefügt:

sudo apt update


sudo apt install ca-certificates curl


sudo install -m 0755 -d /etc/apt/keyrings


sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc


sudo chmod a+r /etc/apt/keyrings/docker.asc



Add the repository to Apt sources (als 1 Block ins Terminal kopieren, bitte Vorsicht wegen <br> u.a.)

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF


sudo apt update


Jetzt kommt die eigentliche Docker Installation:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin



Es wird geprüft ob Docker gestartet ist:

sudo systemctl status docker


Nur (!) wenn nicht gestartet: Manueller Docker-Start:

sudo systemctl start docker


Jetzt ein Probelauf von Docker:

sudo docker run hello-world




Docker soll ohne sudo laufen. Offizielle Anleitung dazu

sudo groupadd docker


sudo usermod -aG docker $USER


Neustart oder/und

newgrp docker


Test:

docker run hello-world



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 -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg


Repository-Konfiguration erstellen:

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


Jetzt die eigentliche Installation des Nvidia Container Toolkit:

sudo apt-get install -y nvidia-container-toolkit


Konfigurieren:

sudo nvidia-ctk runtime configure --runtime=docker


Docker-Daemon neu starten:

sudo systemctl restart docker


Prüfen ob Docker die GPU sieht:

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


Mit dem Editor nano in diesem Verzeichnis die Datei docker-compose.yml erstellen:

nano docker-compose.yml


docker-compose.yml braucht korrekte Einrückungen. Deshalb funktioniert die ansonsten hier genutzte Copy-Funktion nicht.
Bitte diesen Link öffnen, den gesamten (!) Inhalt markieren z.B. mit STRG a und kopieren mit Rechtsklick mit der Maus und Klick auf Kopieren.
Dann den Inhalt im nano-Editor einfügen mit STRG u oder Rechtsklick und Klick auf Einfügen.
Inhalt von docker-compose.
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 öfnen in Firefox unter der Adresse

localhost:3000


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
Die Aufforderung zum Starten anklicken
Lokal anmelden mit Name, Emailadresse, Passwort.
Die Angaben 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