Infrastruktur · Selbst hosten

LibreChat — die Arbeitsoberfläche mit Agenten vor Deiner lokalen KI

LM Studio rechnet. LibreChat ist das, was man bedient — und es kann mehr als ein Chatfenster: Voreinstellungen, eine Prompt-Bibliothek, eigene Agenten mit Dokumentensuche, mehrere Modellanbieter nebeneinander. Diese Schulung baut auf LM Studio auf und ist die Schwester von Open WebUI.

▶ Das ganze Video

Gut zweiundzwanzig Minuten am Stück, oder unten Stufe für Stufe mit Text daneben.

LibreChat — die Arbeitsoberfläche mit Agenten vor Deiner lokalen KI

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Aufgenommen im September 2026 auf einem Windows-11-Rechner mit einer RTX 3090 (24 GB). LibreChat 0.8.7 im Docker-Container, dahinter LM Studio mit Qwen3.8 27B und bge-m3. Untertitel lassen sich im Player zuschalten.

Worum geht's?

Es gibt drei Wege, eine lokale KI zu benutzen. LM Studio ist der kürzeste: ein Programm, ein Modell, eine Antwort. Open WebUI ist der bequeme Mittelweg für ein Team. LibreChat ist der dritte — der aufwendigste und der mit den meisten Möglichkeiten.

LibreChat rechnet nichts. Es ist die Schicht darüber: Konten, Gesprächsverlauf, gespeicherte Voreinstellungen, eine Prompt-Bibliothek, eigene Agenten mit Dokumentensuche — und die Fähigkeit, mehrere Modellanbieter in einer Oberfläche nebeneinanderzustellen.

Der ehrliche Teil steht in Stufe 7. Dort liegt eine Menüentscheidung, die beim Aufbau dieser Schulung eine Stunde gekostet hat: Eine Datei kann auf drei verschiedenen Wegen in ein Gespräch kommen, und nur einer davon ist Dokumentensuche. Der falsche Weg scheitert lautlos.

Am Ende, in Stufe 12, steht eine Tafel, mit der Du selbst entscheiden kannst, welches der drei Werkzeuge zu Deiner Lage passt. Ohne Sieger.

Selbstlern-Kurs zum Durchklicken. Dein Fortschritt wird lokal gespeichert.

? Für wen ist das interessant?

🤖
Wer Agenten will
Eine Auskunftsstelle mit festen Anweisungen und eigenen Unterlagen, einmal gebaut, für alle da.
🔀
Wer mehrere Anbieter hat
Lokales Modell und Cloud-Dienst in einer Oberfläche, mit einem Verlauf. Dafür ist LibreChat gebaut.
📚
Wer Handbücher hat
Betriebsanleitungen, Hausordnungen, Prozessbeschreibungen — und Fragen, die dauernd dieselben sind.
🐳
Docker-Fortgeschrittene
Vier Dienste, die zusammenspielen. Ein gutes drittes Beispiel nach der Docker-Schulung.

↗ Was Du vorher brauchst

  1. Ein laufendes Modell. Diese Schulung setzt LM Studio voraus — inklusive des lokalen Servers aus dessen Stufe 7. Ollama geht genauso, siehe Lokale KI.
  2. Ein Einbettungsmodell. Für die Dokumentensuche ab Stufe 8 braucht es ein zweites, mehrsprachiges Modell. Warum, steht in Lokale KI.
  3. Docker. Hier sind es vier Dienste statt eines. Wenn Dir Container nichts sagen, lohnt vorher die Docker-Schulung.
  4. Grafikspeicher. Chat-Modell und Einbetter liegen gleichzeitig im Speicher. Auf 24 GB passt beides, aber nicht mit beliebigem Kontext — Stufe 3 sagt, worauf zu achten ist.

📚 Die zwölf Stufen

ℹ Stand der Dinge

Alles hier ist an LibreChat 0.8.7 aufgenommen, September 2026, unter Windows 11 mit Docker Desktop, Oberfläche auf Deutsch. Dahinter läuft LM Studio mit Qwen3.8 27B in Q4 (Kontext 32 768) und text-embedding-bge-m3 (Kontext 8192), auf einer RTX 3090 mit 24 GB.

LibreChat entwickelt sich schnell, Menüpunkte heißen in neueren Fassungen anders. Was sich selten ändert, sind die Begriffe: Endpunkt, Agent, Dateisuche, Voreinstellung, Einbettungsmodell. Danach suchen, nicht nach dem Wortlaut im Video. Einzelne Beschriftungen stehen auch auf einer deutschen Oberfläche englisch da — Attach File Options und Tools Options zum Beispiel; die Übersetzung ist an diesen Stellen noch nicht angekommen.

Stufe 1

Was LibreChat ist — und was es nicht ist

Drei Ebenen, die man auseinanderhalten sollte. Wer das tut, sucht Fehler an der richtigen Stelle.

Stufe 1 · Was LibreChat ist

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die Einordnung in einer Minute. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Drei Ebenen, und man sollte sie auseinanderhalten. Ganz unten das Modell: eine Datei mit Milliarden Zahlen, die auf Deiner Grafikkarte rechnet. Darüber der Motor, der sie ausführt — LM Studio zum Beispiel. Und ganz oben die Oberfläche, die man bedient.

LibreChat ist diese oberste Schicht. Es rechnet nichts. Es speichert Unterhaltungen, verwaltet Konten, hält Voreinstellungen bereit und baut Agenten. Die Antwort selbst kommt weiterhin aus dem Modell darunter.

Daraus folgt eine Regel, die Dir später Stunden spart. Ist eine Antwort inhaltlich schlecht, liegt es am Modell — kein Knopf in der Oberfläche macht sie besser. Kommt gar keine Antwort, liegt es an der Oberfläche oder an der Verbindung. Das sind zwei völlig verschiedene Baustellen.

Und die Abgrenzung zu Open WebUI, weil das die häufigste Frage ist: Beide sind Oberflächen, beide laufen im eigenen Haus. Open WebUI ist der kürzere Weg — ein Container, schnell da. LibreChat bringt mehr mit und kostet dafür mehr Betrieb. Am Ende dieser Schulung steht eine Tafel, mit der Du selbst entscheiden kannst.

1 Drei Ebenen

Fast jede Verwirrung rund um lokale KI kommt daher, dass drei Dinge in einen Topf geworfen werden. Sie gehören getrennt:

🧠
Das Modell
Eine Datei mit Milliarden Zahlen. Sie kann nichts von allein — sie muss ausgeführt werden.
⚙️
Der Motor
Lädt das Modell in den Grafikspeicher und rechnet. Hier: LM Studio. Könnte auch Ollama sein.
🖥️
Die Oberfläche
Das, was man bedient. Konten, Verlauf, Agenten, Dokumente. Hier: LibreChat.

LibreChat ist ausschließlich die dritte Ebene. Es besitzt kein Modell, lädt keines herunter und rechnet keine Antwort aus. Es fragt den Motor und stellt dar, was zurückkommt.

2 Die Regel, die Zeit spart

Antwort ist da, aber schlecht

Dann liegt es am Modell oder an der Frage. Kein Schalter in der Oberfläche ändert daran etwas. Abhilfe: größeres Modell, genauere Frage, oder die Aufgabe in kleinere Stücke zerlegen.

Gar keine Antwort

Dann liegt es an der Oberfläche oder an der Verbindung dazwischen. Abhilfe: Läuft der Motor? Stimmt die Adresse? Ist ein Modell geladen? Das sind die Fragen aus Stufe 3.

Diese Unterscheidung klingt banal und ist im Alltag Gold wert. Die meisten verlorenen Stunden entstehen, weil jemand in den Einstellungen der Oberfläche sucht, während das Problem eine Ebene tiefer liegt — oder umgekehrt.

3 Was LibreChat mitbringt

  1. Konten und Verlauf. Jede Person hat ihre eigenen Unterhaltungen, auf jedem Gerät.
  2. Voreinstellungen. Modell, Temperatur und Systemprompt unter einem Namen gespeichert — Stufe 6.
  3. Eine Prompt-Bibliothek. Wiederverwendbare Texte, über / ins Eingabefeld geholt.
  4. Agenten. Eine Auskunftsstelle mit festen Anweisungen und eigenen Dokumenten — Stufe 8.
  5. Mehrere Anbieter nebeneinander. Lokal und Cloud in einer Oberfläche, in einer Datei konfiguriert.
💡 Der letzte Punkt ist historisch der Grund, warum es LibreChat gibt. Wir filmen ihn in dieser Schulung bewusst nicht mit einem echten Cloud-Zugang, weil dabei Fragen den Rechner verlassen würden. Die Konfiguration dafür siehst Du trotzdem — es sind dieselben Zeilen wie in Stufe 3.

4 Und Open WebUI?

Das ist die häufigste Frage, deshalb gleich hier eine kurze Antwort — die ausführliche steht in Stufe 12, nach allem, was Du gesehen hast.

Beide sind selbst gehostete Oberflächen vor demselben Modell. Open WebUI ist ein Container, schnell eingerichtet, mit Wissenssammlungen und einem Knopf zum Neu-Indizieren. LibreChat sind vier Dienste, eine Konfigurationsdatei, dafür Agenten, Voreinstellungen und Prompt-Bibliothek.

Das ist keine Entscheidung gegen Open WebUI. Wer dort eingerichtet ist und zufrieden, verliert nichts. Diese Schulung zeigt den anderen Weg, damit Du beide kennst.

✓ Kurz geprüft

Stufe 2

Mit Docker starten

Vier Dienste statt einem Container. Das ist der erste greifbare Unterschied zu Open WebUI — und er hat Gründe.

Stufe 2a · Im Terminal: den Stapel starten

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die Compose-Datei, der Startbefehl, die Kontrolle. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Hier liegt die Compose-Datei. Bei Open WebUI stand darin ein einziger Dienst. Hier sind es vier, und das ist der erste greifbare Unterschied zwischen den beiden.

Api ist LibreChat selbst und lauscht auf Port dreitausendachtzig. Mongodb hält Konten, Unterhaltungen und Agenten. Vectordb ist eine Postgres-Datenbank mit der Erweiterung pgvector, dort landen später die Dokumentenschnipsel. Und rag underscore api zerlegt Dokumente und holt die Einbettungen.

Ein Befehl startet alle vier. Docker lädt beim ersten Mal ein paar Gigabyte und baut die Netzwerke. Danach steht der Stapel, und die Dienste starten in der richtigen Reihenfolge — die Datenbank zuerst, die Anwendung zuletzt.

Vier Zeilen, alle laufend. Wer hier nur drei sieht, schaut in die Protokolle des fehlenden Dienstes, bevor er im Browser etwas versucht. Die Daten liegen übrigens neben der Compose-Datei in einem Ordner data — bis auf den Vektor-Speicher, der braucht ein eigenes Volume.

Stufe 2b · Im Browser: das erste Konto

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Registrieren, und wer dabei zum Administrator wird. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Im Browser die Adresse lokalhost Doppelpunkt dreitausendachtzig. LibreChat zeigt eine Anmeldemaske. Ein Konto gibt es noch nicht, also unten auf Registrieren.

Name, E-Mail, Passwort. Die E-Mail muss nicht echt sein — es wird nichts verschickt, weil kein Mailversand eingerichtet ist. LibreChat schreibt trotzdem, man möge sein Postfach prüfen. Diese Meldung ist hier schlicht falsch: das Konto gilt sofort.

Wichtig für später: Der erste registrierte Nutzer bekommt automatisch die Rolle Administrator. Das ist bequem und gleichzeitig der Grund, warum man die Registrierung nicht offen lässt, sobald die Oberfläche aus dem Netz erreichbar ist.

1 Warum vier Dienste?

Open WebUI kommt mit einem Container aus, weil es alles selbst mitbringt. LibreChat trennt die Aufgaben:

🖥️
api
LibreChat selbst. Lauscht auf Port 3080, liefert die Oberfläche aus und spricht mit den Modellen.
🗄️
mongodb
Konten, Unterhaltungen, Agenten, Voreinstellungen, Prompts. Alles, was Du anlegst.
🔢
vectordb
Postgres mit der Erweiterung pgvector. Hier liegen die Dokumentenschnipsel als Zahlenreihen.
✂️
rag_api
Zerlegt hochgeladene Dokumente und holt die Einbettungen. Füllt vectordb.

Die letzten beiden braucht man erst ab Stufe 8. Sie laufen trotzdem von Anfang an mit, weil api ohne die Adresse von rag_api gar nicht startet.

2 Die Compose-Datei

Gekürzt auf das, was man verstehen muss:

1docker-compose.yml (gekürzt)
services:
  api:
    image: ghcr.io/danny-avila/librechat:latest
    ports:
      - "3080:3080"          # außen : innen
    env_file: .env
    environment:
      MONGO_URI: mongodb://mongodb:27017/LibreChat
      CONFIG_PATH: /app/librechat.yaml
      RAG_API_URL: http://rag_api:8000    # Pflicht, sonst startet api nicht
    volumes:
      - ./librechat.yaml:/app/librechat.yaml
      - ./data/uploads:/app/uploads

  mongodb:
    image: mongo:8
    volumes:
      - ./data/mongo:/data/db

  vectordb:
    image: pgvector/pgvector:0.8.0-pg15-trixie
    volumes:
      - pgdata:/var/lib/postgresql/data

  rag_api:
    image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:v0.9.0

volumes:
  pgdata:
Vier Dienste, ein Netzwerk. api wartet beim Start auf mongodb und rag_api, rag_api wiederum auf eine gesunde vectordb — deshalb starten sie in dieser Reihenfolge.

Links außen, rechts innen: Innen lauscht LibreChat auf 3080, die linke Zahl darfst Du frei wählen, wenn der Port schon belegt ist.

💡 Die -lite-Fassung von rag_api ist Absicht. Die Vollversion bringt PyTorch mit, um Einbettungen selbst zu rechnen — rund 9 GB Abbild. Unsere Einbettungen kommen von LM Studio, also ist das überflüssig.

3 Wo die Daten liegen

Alles, was Du anlegst, liegt neben der Compose-Datei im Ordner data/ — als normale Dateien, die Du sichern und mitnehmen kannst. Mit einer Ausnahme:

⚠️ Der Vektor-Speicher liegt in einem Docker-Volume namens pgdata, nicht im data/-Ordner. Grund: Ein Postgres-Datenverzeichnis verlangt bestimmte Besitzrechte, und die kann die Windows-Dateifreigabe von Docker Desktop nicht darstellen — initdb scheitert dann mit data directory has wrong ownership. Der Inhalt ist ohnehin abgeleitet: Er entsteht neu, wenn Du die Dokumente noch einmal hochlädst.
⚠️ Und die Kehrseite davon, die beim Aufräumen zählt: docker compose down -v löscht das Volume pgdata — aber nicht den Ordner data/mongo. Wer wirklich bei null anfangen will, muss den Ordner zusätzlich von Hand löschen. Sonst sind die Konten nach dem vermeintlichen Zurücksetzen noch da.

4 Das erste Konto

Nach docker compose up -d steht die Oberfläche unter http://localhost:3080. Es gibt noch kein Konto, also unten auf Registrieren.

⚠️ LibreChat antwortet mit „Bitte prüfe Deine E-Mails, um Deine Adresse zu bestätigen". Diese Meldung ist hier falsch. Es ist kein Mailversand eingerichtet, also wird nichts verschickt — und das Konto gilt trotzdem sofort. Einfach anmelden.

Wichtiger ist etwas anderes, und es kommt in Stufe 11 wieder: Der erste registrierte Nutzer bekommt automatisch die Rolle Administrator. Das ist bequem, solange Du allein bist. Es ist der Grund, warum die Person, die den Dienst betreibt, sich als Erste registrieren sollte.

✓ Kurz geprüft

Stufe 3

An LM Studio anbinden

Eine Datei statt eines Einstellungsdialogs. Unbequemer zum Ausprobieren, besser zum Wiederholen.

Stufe 3 · LM Studio anbinden

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die Konfigurationsdatei, die Adresse aus dem Container, und beide Modelle laden. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Bei Open WebUI trägt man die Verbindung in der Oberfläche ein. LibreChat macht das anders: Die Endpunkte stehen in einer Datei namens librechat Punkt yaml. Das ist unbequemer zum Ausprobieren und besser, sobald man die Einrichtung wiederholen oder weitergeben will.

Ganz oben steht eine Versionsnummer. Die meint nicht LibreChat, sondern das Format dieser Datei — und sie muss zum installierten Abbild passen. Steht dort eine ältere, meldet LibreChat beim Start eine veraltete Konfiguration und ignoriert Teile davon.

Der Endpunkt heißt LM Studio, und die Adresse ist die wichtigste Zeile der ganzen Datei. Aus einem Container heraus ist lokalhost der Container selbst, und dort läuft kein Modell. Host Punkt docker Punkt internal meint den Rechner, auf dem Docker läuft. Genau dieselbe Falle wie bei Open WebUI.

Fetch auf wahr heißt: LibreChat holt die Modellliste selbst von der Schnittstelle ab. Du musst also nicht jedes Modell einzeln eintragen — was in LM Studio geladen ist, steht im Chat zur Auswahl.

Damit dort etwas steht, muss in LM Studio etwas geladen sein. Zwei Modelle brauchen wir: das Chat-Modell und später den Einbetter für die Dokumentensuche. Beide werden hier ausdrücklich geladen, nicht dem Automatismus überlassen.

Der Grund ist der knappe Grafikspeicher. LM Studio kann Modelle bei Bedarf nachladen und wirft dabei das vorherige hinaus. Passiert das mitten in einer Dokumentenfrage, lädt das Chat-Modell mit siebzehn Gigabyte neu — und die Antwort dauert plötzlich eine halbe Minute länger.

1 librechat.yaml

Open WebUI trägt man die Verbindung in der Oberfläche ein. LibreChat liest sie aus einer Datei. Das ist der Unterschied zwischen „schnell mal ausprobieren" und „bei der nächsten Installation genauso".

1librechat.yaml
# Muss zur installierten Abbild-Version passen
version: 1.3.13
cache: true

endpoints:
  custom:
    - name: "LM Studio"
      baseURL: "http://host.docker.internal:1234/v1"
      apiKey: "lm-studio"
      models:
        default: ["qwen3.8-27b"]
        fetch: true
      titleConvo: true
      modelDisplayLabel: "LM Studio (lokal)"
Unter custom dürfen beliebig viele Endpunkte stehen — genau das ist der Punkt, für den LibreChat bekannt ist. Ein zweiter Anbieter wäre ein zweiter Eintrag mit derselben Form.
⚠️ Die version ganz oben meint nicht LibreChat, sondern das Format dieser Datei — und sie muss zum installierten Abbild passen. Stimmt sie nicht, meldet LibreChat beim Start Outdated Config version und ignoriert Teile der Datei. Die Meldung steht im Protokoll, nicht in der Oberfläche: docker compose logs api.

2 Die wichtigste Zeile

http://host.docker.internal:1234/v1 — das ist die Adresse, an der sich die meisten Einrichtungen aufhängen.

Warum nicht localhost?

Weil LibreChat im Container läuft. Dort meint localhost den Container selbst — und darin läuft kein Modell. Die Verbindung wird abgelehnt, und die Modellliste bleibt leer.

Was host.docker.internal tut

Docker Desktop löst diesen Namen auf den Rechner auf, auf dem Docker läuft. Genau dort hört LM Studio auf Port 1234. Dieselbe Falle, dieselbe Lösung wie bei Open WebUI.

Der apiKey ist Pflichtfeld, aber egal — LM Studio prüft ihn nicht. Irgendein Wort genügt, es darf nur nicht leer sein.

Wenn die Modellliste leer bleibt, hilft eine Gegenprobe aus dem Container heraus. Sie beantwortet in einem Schritt, ob es an der Adresse oder an LM Studio liegt:

2Gegenprobe aus dem Container
docker compose exec rag_api python -c "import urllib.request;print(urllib.request.urlopen('http://host.docker.internal:1234/v1/models').status)"
Kommt 200, ist die Adresse richtig und LM Studio erreichbar — dann liegt der Fehler in der Konfigurationsdatei. Kommt ein Verbindungsfehler, läuft LM Studios Server nicht oder hört auf einem anderen Port.
⚠️ Trag kein extra_hosts: host-gateway in die Compose-Datei ein, auch wenn Anleitungen im Netz das empfehlen. Unter Docker Desktop überschreibt das die eingebaute Auflösung und zerstört genau die Zustellung, die man reparieren wollte. „Serve on Local Network" in LM Studio ist ebenfalls nicht nötig.

3 fetch: true

Damit holt LibreChat die Modellliste selbst von /v1/models ab. Du musst also nicht jedes Modell einzeln eintragen: Was in LM Studio geladen ist, steht im Chat zur Auswahl. Der Eintrag unter default ist nur die Vorauswahl.

4 Beide Modelle laden — ausdrücklich

Damit in der Liste etwas steht, muss in LM Studio etwas geladen sein. Für diese Schulung sind es zwei Modelle: das Chat-Modell und der Einbetter für die Dokumentensuche ab Stufe 8.

3Beide Modelle laden
lms load qwen/qwen3.8-27b --identifier qwen3.8-27b --context-length 32768
lms load text-embedding-bge-m3 --context-length 8192
Geht auch über die Oberfläche von LM Studio. Wichtig ist nur, dass beide Modelle vor der ersten Dokumentenfrage geladen sind.
⚠️ Verlass Dich nicht darauf, dass LM Studio bei Bedarf nachlädt. In der Voreinstellung wirft es dabei das vorher geladene Modell aus dem Speicher. Passiert das mitten in einer Dokumentenfrage, fliegt das Chat-Modell hinaus, und die nächste Antwort wartet erst einmal 30 bis 45 Sekunden, während 17 GB neu geladen werden. Ausdrücklich geladene Modelle sind davon nicht betroffen.
⚠️ Die Kontextlänge beim Einbetter ist kein Schmuck: bge-m3 kann höchstens 8192, und manche Werkzeuge schlagen deutlich mehr vor. Mit zu großem Wert lädt das Modell nicht.

Beim Grafikspeicher wird es eng, und das sollte man vorher wissen. Gemessen auf einer RTX 3090 mit 24 GB: Das Chat-Modell belegt rund 17,7 GB. Der Einbetter kostet trotz 634 MB Dateigröße etwa 2,8 GB, weil für 8192 Kontext Puffer angelegt werden. Mit Kontext 32 768 beim Chat-Modell bleiben knapp 1,4 GB frei — mit 65 536 wären es nur noch rund 370 MB, und das ist zu wenig.

✓ Kurz geprüft

Stufe 4

Der erste Chat

Sieht aus wie jedes Chatfenster. Drei Dinge sind anders — und eines fehlt.

Stufe 4 · Der erste Chat

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Modell wählen, fragen, und wo LibreChat mehr zeigt als andere. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Oben steht die Modellauswahl. Sie zeigt, was über den Endpunkt aus der letzten Stufe erreichbar ist. Ich nehme das große Modell, dasselbe wie in den beiden Schulungen davor.

Eine Frage ins Feld, abschicken. Die Antwort entsteht auf der Grafikkarte dieses Rechners. Bis hierhin sieht das aus wie jedes Chatfenster.

Der erste Unterschied steht direkt in der Antwort: ein aufklappbarer Block namens Gedanken. Dieses Modell denkt vor dem Antworten, und LibreChat zeigt diesen Zwischenschritt, statt ihn wegzuwerfen. Wenn eine Antwort seltsam ist, steht hier oft, warum.

Links bleibt jede Unterhaltung stehen, mit automatisch vergebenem Titel. Darüber gibt es Projekte — Ordner für zusammengehörige Gespräche. Wer täglich damit arbeitet, findet Sachen wieder; das ist der ganze Trick.

Eine ehrliche Einschränkung an dieser Installation: Eine Suche über alle Unterhaltungen gibt es nicht. LibreChat kann das, es braucht dafür aber einen zusätzlichen Suchdienst, der hier bewusst nicht mitläuft. Vier Dienste sind genug.

Und rechts oben ein Schalter, den ich mag: der private Chat. Ein Gespräch, das nicht im Verlauf landet. Für die schnelle Zwischenfrage, die niemanden etwas angeht.

1 Fragen

Oben sitzt die Modellauswahl (Ein KI-Modell auswählen). Sie zeigt alles, was über den Endpunkt aus Stufe 3 erreichbar ist. Auswählen, Frage ins Feld, abschicken — die Antwort entsteht auf der Grafikkarte dieses Rechners.

Das Modell lässt sich mitten im Gespräch wechseln. Der bisherige Verlauf bleibt erhalten und wird dem neuen Modell als Vorgeschichte mitgegeben.

2 Der Gedanken-Block

Direkt in der Antwort steht ein aufklappbarer Abschnitt namens Gedanken. Moderne Modelle überlegen vor dem Antworten; LibreChat wirft diesen Zwischenschritt nicht weg, sondern zeigt ihn.

💡 Das ist mehr als eine Spielerei. Wenn eine Antwort seltsam ist, steht im Gedanken-Block oft, warum — welche Annahme das Modell getroffen hat, welche Quelle es für maßgeblich hielt, wo es unsicher war. In Stufe 10 wird daraus ein echtes Werkzeug.

Nebenbei: Der Block ist auch die ehrlichste Antwort auf die Frage, warum eine lokale Antwort länger dauert als erwartet. Ein gutes Stück der Zeit geht fürs Nachdenken drauf, nicht fürs Schreiben.

3 Verlauf und Projekte

Chatverlauf

Jede Unterhaltung bleibt stehen und bekommt automatisch einen Titel. Sie gehört Deinem Konto, nicht dem Rechner — auf einem anderen Gerät ist sie wieder da.

Projekte

Ordner für zusammengehörige Gespräche. Bei zwanzig Unterhaltungen egal, bei zweihundert der Unterschied zwischen Wiederfinden und Neuanfangen.

Daneben gibt es den privaten Chat: ein Gespräch, das gar nicht erst im Verlauf landet. Für die schnelle Zwischenfrage, die niemanden etwas angeht.

4 Was hier fehlt

⚠️ Eine Volltextsuche über alle Unterhaltungen gibt es in dieser Installation nicht. LibreChat kann das grundsätzlich, braucht dafür aber einen zusätzlichen Suchdienst (Meilisearch) als fünften Container. Hier läuft er bewusst nicht mit — vier Dienste sind genug, und die Suche war den fünften nicht wert.

Das ist eine Entscheidung, keine Eigenschaft. Wer viele Gespräche führt und darin suchen will, nimmt den Dienst dazu; in der .env steht dafür SEARCH. Für diese Schulung ist es vor allem ein gutes Beispiel dafür, dass ein selbst gehosteter Dienst genau so viel kann, wie man ihm mitgibt.

5 Was gleich bleibt

Die Antwortqualität. Das Tempo. Der Speicherbedarf. Die Grenzen aus der LM-Studio-Schulung gelten unverändert.

⚠️ Eine Sache wird sogar unangenehmer: Weil hier alles aufgeräumt aussieht, ordentlich formatiert ist und ein Gedanken-Block nach Nachvollziehbarkeit aussieht, wirken Antworten glaubwürdiger als in einem schlichten Fenster. Das ist Optik. Ab Stufe 9 wird das wichtig.

✓ Kurz geprüft

Stufe 5

Zwei Modelle nebeneinander

Dieselbe Frage, zwei Antworten, ein Bild. Der ehrlichste Weg, ein Modell auszuwählen.

Stufe 5 · Zwei Modelle nebeneinander

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Als Folie zusammengefasst: ein großes und ein kleines Modell auf dieselbe Frage. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Neben der Modellauswahl sitzt ein Knopf mit dem Namen Mehrere Chats hinzufügen. Er teilt das Fenster nicht, sondern hängt ein zweites Modell an dieselbe Frage. Über dem Eingabefeld erscheint eine Zeile für jedes Modell, das mitantwortet.

Das erste bleibt das große Modell mit siebenundzwanzig Milliarden Parametern. Dazu nehme ich ein kleines, gut vier Milliarden. Beide liegen auf demselben Rechner und sind gleichzeitig geladen.

Eine Frage, einmal getippt, geht an beide. Und jetzt sieht man etwas, das man sonst nur nacheinander erlebt: das kleine Modell ist deutlich schneller fertig.

Aber lies beide Antworten. Das kleine Modell antwortet flüssig und knapp — und wird ungenau, sobald es um Einzelheiten geht. Das große braucht länger und bleibt näher an der Frage.

Dieser Vergleich ist der ehrlichste Weg, ein Modell für den eigenen Zweck auszuwählen. Nicht nach Ranglisten, sondern mit den eigenen Fragen, in einem Durchgang, untereinander.

1 Ein zweites Modell dazunehmen

Neben der Modellauswahl sitzt Mehrere Chats hinzufügen. Der Name führt ein wenig in die Irre: Das Fenster wird nicht geteilt. Stattdessen hängt LibreChat ein zweites Modell an dieselbe Frage — über dem Eingabefeld erscheint eine Zeile pro Modell, das mitantwortet.

Für diese Schulung antwortet einmal das große Modell (27 Milliarden Parameter) und einmal ein kleines (gut 4 Milliarden). Beide liegen auf demselben Rechner und sind gleichzeitig geladen. Was Du tippst, geht an beide; die Antworten stehen untereinander.

2 Was man dabei sieht

Das kleine Modell

Ist deutlich schneller fertig, formuliert flüssig und wirkt auf den ersten Blick genauso gut. Bei Einzelheiten wird es ungenau — es rät plausibel weiter, wo das große nachfragt oder einschränkt.

Das große Modell

Braucht spürbar länger und bleibt näher an der Frage. Der Unterschied zeigt sich nicht in der Sprache, sondern im Inhalt — deshalb muss man beide Antworten wirklich lesen.

💡 Genau deshalb ist der Vergleich so nützlich: In zwei getrennten Sitzungen merkt man den Unterschied kaum, weil man die erste Antwort schon vergessen hat. Untereinander im selben Verlauf springt er einen an.

3 Warum das besser ist als jede Rangliste

Ranglisten sagen, wie ein Modell bei fremden Aufgaben abschneidet. Für Deine Frage ist das eine Vermutung. Zwei Modelle nebeneinander mit Deinen Fragen sind eine Messung.

Ein brauchbares Vorgehen für die Auswahl:

  1. Fünf echte Fragen sammeln — aus dem Alltag, nicht ausgedacht. Darunter eine, die Du selbst schwer findest.
  2. Beide Modelle nebeneinander dieselben fünf Fragen beantworten lassen.
  3. Antworten vergleichen, nicht Gefühle. Wo ist die kleine Antwort falsch, wo nur kürzer? Kürzer ist oft besser.
  4. Das kleinste Modell nehmen, das durchkommt. Es lässt Platz im Grafikspeicher — den brauchst Du ab Stufe 8 für den Einbetter.

4 Was der Vergleich nicht zeigt

Beide Antworten sind Momentaufnahmen. Sprachmodelle antworten nicht jedes Mal gleich, und ein einzelner Durchgang kann täuschen — in beide Richtungen. Wer sich festlegen will, fragt jede Frage zweimal.

⚠️ Und ein praktischer Hinweis zum Speicher: Zwei Modelle gleichzeitig geladen heißt zweimal Grafikspeicher. Auf 24 GB geht ein großes plus ein kleines gerade so. Ein zweites großes geht nicht — dann lädt LM Studio nach, und der Vergleich misst Ladezeiten statt Modelle.

✓ Kurz geprüft

Stufe 6

Voreinstellungen und Prompts

Einmal einrichten statt jedes Mal tippen — und, wichtiger, jedes Mal wortgleich.

Stufe 6 · Voreinstellungen und Prompts

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Als Folie zusammengefasst: Voreinstellung, Systemprompt und Prompt-Bibliothek. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Oben links steht Voreinstellungen. Dahinter liegen die Stellschrauben eines Gesprächs: welches Modell, wie kreativ die Antworten ausfallen, und vor allem der Systemprompt.

Der Systemprompt ist die Anweisung, die vor jeder Frage mitläuft, ohne dass man sie sieht. Hier steht, wie geantwortet werden soll: knapp, auf Deutsch, und ohne etwas zu erfinden, das nicht in den Unterlagen steht.

Das Ganze lässt sich unter einem Namen speichern. Ab jetzt ist es ein Klick statt einer Tipperei — und, wichtiger, es ist jedes Mal wortgleich. Wer Antworten vergleichen will, braucht genau das.

Daneben gibt es die Prompt-Bibliothek. Der Unterschied: Eine Voreinstellung bestimmt, wie das Modell arbeitet. Ein Prompt ist ein fertiger Text, den Du immer wieder brauchst — eine Zusammenfassung in drei Sätzen, ein höflicher Absagebrief, eine Prüfliste.

Gespeicherte Prompts holt man über einen Schrägstrich ins Eingabefeld. In einem Team ist das die Stelle, an der aus persönlichem Ausprobieren gemeinsame Arbeitsweise wird.

1 Der Systemprompt

Oben links steht Voreinstellungen. Dahinter liegen die Stellschrauben eines Gesprächs — Modell, Temperatur und vor allem der Systemprompt.

Der Systemprompt ist die Anweisung, die vor jeder Frage mitläuft, ohne dass man sie sieht. Er beantwortet nicht was gefragt wird, sondern wie geantwortet werden soll. Ein brauchbarer für den Anfang:

1Systemprompt zum Übernehmen
Antworte auf Deutsch, knapp und ohne Einleitungsfloskeln.
Wenn etwas nicht in den bereitgestellten Unterlagen steht, sage das
ausdrücklich und erfinde nichts.
Bei widersprüchlichen Angaben nenne beide und sage, woher jede stammt.
💡 Der letzte Satz ist der wertvollste. Ohne ihn entscheidet sich ein Modell bei Widersprüchen für eine Version — und begründet das hinterher überzeugend. Mit ihm legt es beide nebeneinander und überlässt Dir die Entscheidung. In Stufe 10 siehst Du, was das ausmacht.

2 Temperatur

Die Temperatur bestimmt, wie stark das Modell vom naheliegendsten Wort abweicht. Niedrig heißt vorhersagbar und langweilig, hoch heißt einfallsreich und unzuverlässig.

Niedrig (etwa 0,2)

Für Auskünfte, Zusammenfassungen und alles, was mit Dokumenten zu tun hat. Dieselbe Frage gibt fast dieselbe Antwort — genau das will man beim Nachschlagen.

Hoch (etwa 0,9)

Für Formulierungsvorschläge, Ideensammlungen, Varianten. Hier ist Abwechslung der Zweck. Für Faktenfragen ist es die falsche Einstellung.

3 Als Voreinstellung speichern

Modell, Temperatur und Systemprompt lassen sich unter einem Namen sichern. Ab dann ist es ein Klick statt einer Tipperei.

Der eigentliche Gewinn ist aber nicht die Bequemlichkeit, sondern die Wiederholbarkeit: Eine gespeicherte Voreinstellung ist jedes Mal wortgleich. Wer Antworten über Wochen vergleichen oder einem Kollegen zeigen will, wie er zu einem Ergebnis kam, braucht genau das. Ein von Hand getippter Systemprompt ist beim zweiten Mal nie derselbe.

4 Die Prompt-Bibliothek

Daneben gibt es Prompts. Der Unterschied ist wichtig und wird oft verwechselt:

Voreinstellung

Bestimmt, wie das Modell arbeitet: welches Modell, wie kreativ, mit welcher Grundanweisung. Gilt für das ganze Gespräch.

Prompt

Ist ein fertiger Text, den Du immer wieder brauchst. Wird über / ins Eingabefeld geholt und dann abgeschickt.

Gute Kandidaten für die Bibliothek sind die Sachen, die man ohnehin dauernd tippt: „Fasse das in drei Sätzen zusammen, für jemanden ohne Vorwissen." „Schreib daraus eine höfliche Absage." „Prüf diesen Text auf Zahlen, die nicht zusammenpassen."

💡 In einem Team ist die Prompt-Bibliothek die Stelle, an der aus persönlichem Ausprobieren gemeinsame Arbeitsweise wird. Wer einen guten Prompt gefunden hat, legt ihn dort ab, statt ihn per Mail zu verschicken.

✓ Kurz geprüft

Stufe 7

Drei Wege, eine Datei

Nur einer davon ist Dokumentensuche. Der falsche Weg scheitert lautlos — das ist die teuerste Falle dieser Schulung.

Stufe 7 · Drei Wege, eine Datei

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Das Menü hinter der Büroklammer — und der Fehler, den der falsche Weg auslöst. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Jetzt die Stelle, an der ich beim Aufbau eine Stunde verloren habe. Sie sieht harmlos aus: die Büroklammer im Eingabefeld.

Sie öffnet nicht einfach einen Dateidialog, sondern fragt vorher, wohin die Datei gehen soll. Hochladen zum KI-Anbieter. Hochladen als Text. Oder hochladen für die Dateisuche. Drei Wege, drei völlig verschiedene Dinge.

Der erste Weg schickt die Datei als Dokument mit an das Modell. Das können große Anbieterdienste, ein lokales Modell über die einfache Schnittstelle in der Regel nicht. Der zweite Weg kippt den ganzen Dateiinhalt als Text in den Verlauf — bei einer kurzen Notiz sinnvoll, bei einem Handbuch sprengt es den Kontext.

Und genau das war mein Fehler. Ich habe die Dateien einfach angehängt, ohne den Weg zu wählen. Antwort: ein Vierhunderter-Fehler über Inhaltsobjekte, die ein Typfeld brauchen. Die Meldung zeigt auf den Chat. Das Problem lag im Menü.

Nur der dritte Weg macht das, was die meisten meinen, wenn sie eigene Dokumente sagen: Die Datei geht an rag underscore api, wird in Stücke geschnitten, eingebettet und in der Vektordatenbank abgelegt. Erst dann kann danach gesucht werden.

Das Tückische daran: Der falsche Weg scheitert nicht laut. Die Datei ist hochgeladen, sie steht im Eingabefeld, sie sieht richtig aus. Nur die Vektordatenbank bleibt leer, und niemand sagt es Dir. Merke Dir diesen Satz — er erklärt die Hälfte aller Enttäuschungen mit Dokumentensuche.

1 Die Büroklammer fragt nach

In den meisten Oberflächen öffnet die Büroklammer einen Dateidialog. In LibreChat fragt sie vorher, wohin die Datei gehen soll. Das Menü heißt (noch englisch) Attach File Options und hat drei Einträge:

📤
Hochladen zum KI-Anbieter
Die Datei wird als Dokument-Teil in die Anfrage gepackt. Große Cloud-Dienste können das. Ein lokales Modell über die einfache Schnittstelle in der Regel nicht.
📄
Hochladen als Text
Der ganze Dateiinhalt landet als Text im Gespräch. Bei einer kurzen Notiz sinnvoll. Ein Handbuch sprengt damit den Kontext.
🔍
Hochladen für Dateisuche
Die Datei geht an rag_api, wird in Stücke geschnitten, eingebettet und in vectordb abgelegt. Nur das ist Dokumentensuche.

2 Was passiert, wenn man nicht wählt

Wer die Datei einfach ins Fenster zieht, einfügt oder ohne Menü anhängt, bekommt den ersten Weg. Gegen ein lokales Modell endet das so:

Fehlermeldung im Chat
An error occurred while processing the request: 400 "Invalid 'content': 'content' objects must have a 'type' field that is either 'text' or 'image_url'."

Das ist LM Studio, das ein Dokument-Teil bekommt und damit nichts anfangen kann. Die Meldung erscheint im Chat und sieht nach einem Problem mit dem Modell aus. Sie hat mit dem Modell nichts zu tun.

⚠️ Der eigentlich gefährliche Fall ist der leise. Bei einem Dateiformat, das durchgeht, kommt gar kein Fehler: Die Datei ist hochgeladen, sie steht sichtbar im Eingabefeld, alles wirkt richtig — nur wurde sie nie eingebettet. Die Vektordatenbank bleibt leer, und das Modell antwortet aus seinem Allgemeinwissen, als hätte es Deine Unterlagen gelesen. Nichts und niemand sagt Dir das.

So prüfst Du es in einem Befehl:

1Sind überhaupt Schnipsel angekommen?
docker compose exec vectordb psql -U librechat -d librechat_vectors -c "select count(*) from langchain_pg_embedding;"
Steht dort 0, obwohl Du Dokumente hochgeladen hast, war es der falsche Zustellweg. Das ist die verlässlichste Antwort auf die Frage „warum kennt es meine Unterlagen nicht?".

3 Warum es überhaupt drei Wege gibt

Der Grund ist nicht Schikane, sondern dass die drei Wege wirklich verschiedene Dinge sind — und man je nach Lage einen anderen will:

WegWohin die Datei gehtWofür sinnvoll
Zum KI-Anbieterals Dokument-Teil in die AnfrageBilder, PDFs bei Anbietern, die das können
Als Textvollständig in den Gesprächskontextkurze Dateien, die das Modell ganz sehen soll
Für Dateisuchean rag_api → vectordbHandbücher, Ablagen, alles Längere

Bei einer einseitigen Notiz ist „als Text" sogar die bessere Wahl als die Suche: Das Modell sieht dann garantiert alles, statt nur die ähnlichsten Schnipsel. Die Suche lohnt erst, wenn der Text nicht mehr in den Kontext passt.

4 Die Konfigurationsschraube dazu

Welchen Weg eine Datei nimmt, wenn niemand wählt, lässt sich pro Dateityp festlegen — in librechat.yaml:

2librechat.yaml · fileConfig
fileConfig:
  endpoints:
    "LM Studio":              # EXAKT der Endpunktname aus Stufe 3
      fileLimit: 10
      fileSizeLimit: 100
      defaultLLMDeliveryPath:
        overrides:
          application/pdf: none
          text/markdown: none
          text/plain: none
none heißt: diesen Dateityp gar nicht erst an das Modell durchreichen. Damit bleibt der Fehler aus — die Datei geht dann aber trotzdem nur in die Suche, wenn Du den dritten Weg wählst.
⚠️ Der Schlüssel unter endpoints muss der exakte Endpunktname sein. Ein Eintrag unter default greift bei eigenen Endpunkten nicht — der eingebaute agents-Eintrag überdeckt ihn.

5 Der Unterschied zu Open WebUI

Open WebUI

Es gibt Wissenssammlungen. Was Du dort hineinlegst, ist eingebettet — die Entscheidung fällt über den Ort, nicht über den Weg. Dafür ist weniger einstellbar.

LibreChat

Du entscheidest pro Datei, was mit ihr geschehen soll. Mehr Möglichkeiten, mehr zu verstehen — und eine Standardeinstellung, die nicht die ist, die die meisten erwarten.

✓ Kurz geprüft

Stufe 8

Ein Agent mit Dateisuche

In LibreChat gehören Dokumente keiner Sammlung, sondern einem Agenten. Das ist der größte Unterschied zu Open WebUI.

Stufe 8 · Ein Agent mit Dateisuche

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Agenten anlegen, Dateisuche einschalten, drei Dokumente einbetten. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Der saubere Weg führt über einen Agenten. Das ist der zweite Unterschied zu Open WebUI, und der größere: Die Dokumentensuche hängt hier nicht an einer Sammlung, sondern an einem Agenten.

Ein Agent bekommt einen Namen, eine kurze Beschreibung und Anweisungen — das ist derselbe Systemprompt wie eben, nur dauerhaft. Dazu ein Modell, mit dem er arbeitet.

Dann die Fähigkeiten. Dateisuche einschalten — und jetzt kommt eine Reihenfolge, die man kennen muss: Der Agent muss angelegt sein, bevor man ihm Dateien geben kann. Vorher ist der Knopf grau.

Drei Dokumente einer erfundenen Firma: ein Mitarbeiterhandbuch von Januar sechsundzwanzig, eine Hausordnung von März vierundzwanzig und ein IT-Blatt von Juni sechsundzwanzig. Genau so sehen echte Ablagen aus — verschiedene Stände, niemand räumt auf.

Das Einbetten dauert ein paar Sekunden. Aus den drei Dokumenten werden fünf Schnipsel — LibreChat schneidet ab Werk bei fünfzehnhundert Zeichen. Merk Dir die Einheit: Zeichen, nicht Token. Open WebUI rechnet in Token, und das führt später zu einem sichtbaren Unterschied.

Fertig. Der Agent steht in der Auswahl, trägt seine Unterlagen bei sich und lässt sich später teilen. Wer im Team arbeitet, baut so eine Auskunftsstelle einmal und alle benutzen dieselbe.

1 Was ein Agent ist

Ein Agent ist eine gespeicherte Arbeitsweise mit eigenem Namen: feste Anweisungen, ein Modell, Fähigkeiten — und eigene Dokumente. Man wählt ihn wie ein Modell aus und stellt dann Fragen.

Der Unterschied zur Voreinstellung aus Stufe 6: Eine Voreinstellung ist eine Einstellung. Ein Agent ist ein Gegenüber. Er hat Unterlagen, er kann geteilt werden, und in der Modellauswahl steht sein Name statt eines Modellnamens.

💡 LibreChat 0.8.7 bringt sogar einen Agenten-Marktplatz mit, samt Kategorien wie Personalwesen, IT oder Finanzen. Für den Eigenbetrieb interessanter ist die Möglichkeit, eigene Agenten im Team freizugeben — dazu mehr in Stufe 11.

2 Anlegen — in dieser Reihenfolge

  1. Agenten erstellen in der linken Leiste öffnen.
  2. Name und Beschreibung eintragen. Beides ist später sichtbar, also sprechende Namen wählen.
  3. Anweisungen — das ist der Systemprompt aus Stufe 6, nur dauerhaft. Hier gehört hinein, worauf er sich stützen soll und was er tun soll, wenn etwas nicht in den Unterlagen steht.
  4. Modell wählen, mit dem der Agent arbeitet.
  5. Speichern.
  6. Erst jetzt: Dateisuche aktivieren und die Dokumente hochladen.
⚠️ Die Reihenfolge ist nicht Geschmackssache. Solange der Agent nicht gespeichert ist, bleibt der Knopf zum Hochladen grau — Dateien hängen an einer Agenten-Kennung, und die gibt es vorher nicht. Wer es über die Schnittstelle versucht, bekommt No agent ID provided for agent file upload.

3 Die Übungsdokumente

Für diese Schulung liegen drei Dokumente einer erfundenen Firma bereit, der Nordwerk GmbH — dieselben wie in der Open-WebUI-Schulung, damit der Vergleich zwischen beiden Oberflächen etwas wert ist. Sie liegen in demo/.

DateiStandWas darin steckt
mitarbeiterhandbuch-2026.mdJanuar 2026die gültige Fassung; sagt von sich, dass sie ältere ersetzt
hausordnung-2024.mdMärz 2024veraltet: 28 statt 42 Mitarbeitende
it-kurzanleitung.mdJuni 2026widersprüchlich: andere IT-Durchwahl als das Handbuch — und neuer als dieses

Dazu eine Frage, die in keinem der drei beantwortet wird: die Zahl der Urlaubstage. Genau so sehen echte Ablagen aus — verschiedene Stände nebeneinander, niemand räumt auf, und die wichtigste Angabe fehlt.

4 Was beim Einbetten passiert

Nach dem Hochladen dauert es ein paar Sekunden. In dieser Zeit schneidet rag_api die Dokumente in Stücke, schickt jedes davon an das Einbettungsmodell in LM Studio und legt das Ergebnis in vectordb ab.

Aus den drei Dokumenten werden dabei fünf Schnipsel. Die Werkseinstellung schneidet bei 1500 Zeichen mit 100 Zeichen Überlappung.

💡 Zeichen, nicht Token. Open WebUI rechnet in Token, LibreChat in Zeichen. Bei deutschem Text ist ein Token grob vier Zeichen — dieselbe Zahl bedeutet also sehr unterschiedliche Stückgrößen. Warum das einen sichtbaren Unterschied macht, steht in Stufe 10.

Nachzählen lässt sich das jederzeit:

1Schnipsel zählen
docker compose exec vectordb psql -U librechat -d librechat_vectors -c "select count(*) from langchain_pg_embedding;"

✓ Kurz geprüft

Stufe 9

Fundstellen prüfen

LibreChat zeigt, woher die Antwort kommt — mit Trefferquote. Das ist viel wert und trotzdem kein Beleg.

Stufe 9 · Fundstellen prüfen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die erste Frage an den Agenten, die Trefferliste, und wie man sie liest. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Erste Frage an den Agenten: Wie viele Mitarbeitende hat die Firma? Die Antwort steht in zwei Dokumenten — mit zwei verschiedenen Zahlen.

Zuerst meldet LibreChat, dass es die Dateien durchsucht hat. Dann klappt eine Liste auf, und die ist der eigentliche Gewinn dieser Stufe.

Jede Fundstelle nennt ihre Datei und daneben eine Zahl: wie ähnlich dieser Schnipsel der Frage war. Fünfundsechzig Prozent, dreiundsechzig, einundfünfzig. Das ist kein Wahrheitsgehalt, sondern Ähnlichkeit — aber es zeigt sofort, ob überhaupt etwas Passendes gefunden wurde.

Die Antwort lautet zweiundvierzig, mit Begründung: Das Handbuch ist von Januar sechsundzwanzig und erklärt selbst, dass es ältere Fassungen ersetzt. Die achtundzwanzig aus der Hausordnung nennt das Modell ausdrücklich als überholt.

Und jetzt das Wichtigste an dieser Stufe: Klapp eine Fundstelle auf und lies den Text. Eine Quellenangabe ist kein Beleg, solange niemand hineingesehen hat. Die Liste macht das Nachprüfen zu einer Sache von Sekunden — nutz das.

1 Die erste Frage

„Wie viele Mitarbeitende hat die Nordwerk GmbH?" — eine Frage, die in zwei Dokumenten beantwortet wird, mit zwei verschiedenen Zahlen.

LibreChat meldet zuerst Deine Dateien wurden durchsucht und klappt dann eine Liste auf. Diese Liste ist der eigentliche Gewinn dieser Stufe.

2 Was in der Trefferliste steht

Jede Fundstelle nennt ihre Datei, eine Prozentzahl und den gefundenen Textausschnitt zum Aufklappen. Im gemessenen Durchlauf sah das so aus:

FundstelleTrefferquoteWas darin stand
mitarbeiterhandbuch-202665 %„Wir beschäftigen 42 Mitarbeitende an zwei Standorten" — samt der Zeile „Stand: Januar 2026"
hausordnung-202463 %„beschäftigt 28 Mitarbeitende am Standort Bremerhaven"
it-kurzanleitung51 %Passwörter, Drucker — zur Frage gehört das nicht
mitarbeiterhandbuch-202651 %Abschnitt „Sicherheit in der Fertigung" — ebenfalls unpassend
⚠️ Die Prozentzahl ist Ähnlichkeit, nicht Wahrheit. Sie sagt, wie nah ein Textstück der Frage im Bedeutungsraum kam — nicht, ob es die Frage beantwortet. Zwei der vier Fundstellen oben haben mit der Mitarbeiterzahl nichts zu tun und stehen trotzdem mit 51 % dabei.

Trotzdem ist die Zahl nützlich, und zwar an den Rändern: Sind alle Treffer niedrig, hat die Suche nichts Passendes gefunden — dann ist die Antwort mit hoher Wahrscheinlichkeit aus dem Allgemeinwissen zusammengesetzt, egal wie sicher sie klingt.

3 Die Antwort

Das Modell antwortet 42 — und begründet es: Das Handbuch ist von Januar 2026 und sagt selbst, dass es ältere Fassungen ersetzt. Die 28 aus der Hausordnung nennt es ausdrücklich als überholt.

Das ist eine gute Antwort. In Stufe 10 sehen wir uns an, warum sie gut ist — denn das Verdienst liegt nicht bei der Oberfläche.

4 Die Gewohnheit, auf die es ankommt

Klapp eine Fundstelle auf und lies den Text. Nicht jedes Mal, aber immer dann, wenn eine Antwort eine Entscheidung trägt.

Eine Quellenangabe ist kein Beleg, solange niemand hineingesehen hat. Sie sagt nur: Dieses Textstück lag dem Modell vor. Ob das Modell es richtig gelesen, zusammengefasst oder stillschweigend um eigenes Wissen ergänzt hat, steht dort nicht.

💡 Genau das ist der Grund, warum diese Liste so viel wert ist: Sie macht das Nachprüfen zu einer Sache von Sekunden. In einer Oberfläche ohne Fundstellen müsstest Du die Dokumente selbst durchsuchen — und dann tut es niemand.

5 Der Gedanken-Block als zweite Spur

Über der Antwort steht der Gedanken-Block aus Stufe 4, und bei Dokumentenfragen wird er zum Werkzeug. Dort steht im Klartext, welche Fundstelle das Modell für maßgeblich hielt und warum es sich entschieden hat.

Wenn eine Antwort falsch ist, findest Du dort meistens den Grund — und der ist fast nie „das Modell hat sich das ausgedacht", sondern „es hat einer Quelle geglaubt, der es nicht hätte glauben sollen".

✓ Kurz geprüft

Stufe 10

Wo es schiefgeht

Zwei schwere Fragen, zwei gute Antworten — und die unbequeme Erklärung, warum das kein Verdienst der Oberfläche ist.

Stufe 10 · Wo es schiefgeht

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die widersprüchliche Durchwahl, die unbeantwortbare Frage — und warum es hier klappt. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Zwei Fragen, die schwerer sind als die erste. Zuerst die Durchwahl der IT. Das Handbuch von Januar nennt eine Nummer, das IT-Blatt von Juni eine andere. Keines der beiden ist als alt erkennbar.

Das Modell nennt beide Zahlen, prüft die Vorrangklausel des Handbuchs — und stellt fest, dass sie nur gegenüber älteren Unterlagen gilt. Das IT-Blatt ist neuer. Also fünfhunderteins, mit dem Rat, es einmal bestätigen zu lassen. Das ist eine gute Antwort.

Zweite Frage: die Zahl der Urlaubstage. Die steht in keinem der drei Dokumente. Das Modell sagt genau das und verweist auf die Personalabteilung. Es hängt kein Gesetzeswissen an. Auch das ist eine gute Antwort.

Und jetzt die ehrliche Einordnung, denn das ist kein Verdienst der Oberfläche. Es funktioniert, weil die Schnipsel groß genug sind, dass die Zeile mit dem Stand im selben Stück steht wie die Zahl. Wäre das Datum in einem anderen Schnipsel gelandet, könnte das Modell gar nicht nach Aktualität urteilen.

Daraus folgt die praktischste Regel dieser ganzen Schulung: Schreib den Stand nicht nur oben ins Dokument, sondern in die Nähe der Angabe, um die es geht. Dann hat das Modell eine Chance. Und prüf Dein Ergebnis mit eigenen Dokumenten nach — meine sagen nichts über Deine.

1 Der Widerspruch

„Unter welcher Durchwahl erreiche ich die IT?" Das Handbuch von Januar nennt eine Nummer, das IT-Blatt von Juni eine andere. Keines der beiden ist als veraltet erkennbar — beide sind aktuelle Dokumente einer echten Ablage.

Die gemessene Antwort nennt beide Zahlen, prüft die Vorrangklausel des Handbuchs — und stellt fest, dass sie nur gegenüber älteren Unterlagen gilt. Das IT-Blatt ist neuer. Ergebnis: die Nummer aus dem IT-Blatt, mit dem Rat, sie einmal bestätigen zu lassen.

💡 Das ist eine sehr gute Antwort. Sie entscheidet sich, begründet die Entscheidung, nennt die Alternative und markiert die Restunsicherheit. Mehr kann man von einer Auskunft nicht verlangen.

2 Die Frage ohne Antwort

„Wie viele Urlaubstage habe ich im Jahr?" steht in keinem der drei Dokumente. Das Handbuch regelt nur, wie man Urlaub beantragt.

Die gemessene Antwort sagt genau das, nennt die Abschnitte, die es gibt, und verweist auf die Personalabteilung. Sie hängt kein Gesetzeswissen an.

⚠️ Genau das ist die Stelle, an der es in der Open-WebUI-Schulung schiefging: Dort sagte das Modell „steht nicht drin" — und lieferte trotzdem die gesetzlichen Mindesturlaubstage hinterher. Das ist die gefährlichste Sorte Fehler, weil die Einschränkung davorsteht und man sie überliest.

3 Warum es hier klappt — und das ist der wichtige Teil

Gleiche Dokumente, gleiches Modell, gleicher Einbetter, besseres Ergebnis. Die Versuchung ist groß, daraus „LibreChat ist besser" zu machen. Das wäre falsch.

Der Unterschied liegt in der Schnipselgröße. LibreChat schneidet bei 1500 Zeichen, Open WebUI in Token. Dadurch bleibt hier die Zeile „Stand: Januar 2026" im selben Stück wie die Mitarbeiterzahl — und erst dadurch kann das Modell überhaupt nach Aktualität urteilen. Landet das Datum in einem anderen Schnipsel, sieht das Modell die beiden Angaben nie zusammen.

Das ist kein Verdienst der Oberfläche, sondern eine Einstellung, die zufällig zu diesen Dokumenten passt. Bei anderen Dokumenten kann dieselbe Einstellung genau falsch sein.

⚠️ Übertrag also nicht mein Ergebnis auf Deine Unterlagen. Was Du hier siehst, ist ein Durchlauf mit drei kurzen Dateien. Miss es mit Deinen eigenen nach — mit Fragen, deren richtige Antwort Du kennst, darunter mindestens eine, die nirgends beantwortet wird.

4 Die Regel, die daraus folgt

Wenn die Nähe von Datum und Angabe darüber entscheidet, ob eine Antwort stimmt, dann ist das eine Anweisung an das Schreiben von Dokumenten, nicht an die Software:

💡 Schreib den Stand nicht nur oben ins Dokument, sondern in die Nähe der Angabe, um die es geht. Also nicht „Stand: Juni 2026" in der Kopfzeile und die Durchwahl auf Seite 4 — sondern „Durchwahl 501 (Stand Juni 2026)". Dann hat das Modell eine Chance, und ein Mensch übrigens auch.

Zwei weitere Gewohnheiten, die mehr bringen als jede Einstellung:

  1. Alte Fassungen aus der Ablage nehmen. Der beste Umgang mit einem veralteten Dokument ist, es nicht zu durchsuchen. Die Hausordnung von 2024 gehört ins Archiv, nicht in den Agenten.
  2. Im Systemprompt Widersprüche verlangen. Der Satz aus Stufe 6 — beide Angaben nennen statt sich zu entscheiden — verwandelt eine falsche Sicherheit in eine brauchbare Rückfrage.

5 Wo es wirklich schiefgeht

Die echten Stolperstellen dieser Installation liegen nicht beim Modell, sondern im Betrieb. Vier, die beim Aufbau dieser Schulung aufgetreten sind:

Was passiertWonach es aussiehtWas es ist
Antwort kennt die Dokumente nicht, kein FehlerSuche funktioniert nichtfalscher Zustellweg — die Datei wurde nie eingebettet (Stufe 7)
400 … 'type' field im ChatProblem mit dem ModellDokument-Teil an ein lokales Modell geschickt (Stufe 7)
Antwort dauert plötzlich 40 Sekunden längerModell ist überlastetder Einbetter hat das Chat-Modell aus dem Speicher geworfen (Stufe 3)
different vector dimensionskaputte DatenbankEinbettungsmodell wurde gewechselt (Stufe 12)

Alle vier haben gemeinsam, dass die Meldung in die falsche Richtung zeigt. Wer das einmal weiß, spart sich die Suche an der falschen Stelle — das war schon die Regel aus Stufe 1.

✓ Kurz geprüft

Stufe 11

Für mehrere Leute

Konten, zwei Rollen — und ein Schalter, den man umlegt, bevor der erste Gast kommt.

Stufe 11 · Für mehrere Leute

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Konto, Rollen, Registrierung schließen, Agenten teilen. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Jeder bekommt ein eigenes Konto. Damit gehören Unterhaltungen, Voreinstellungen und Agenten einer Person und nicht dem Rechner. Wer sich woanders anmeldet, findet seine Sachen wieder.

Rollen gibt es zwei: Nutzer und Administrator. Der erste, der sich registriert, wird Administrator — deshalb sollte das die Person sein, die den Dienst betreibt, und nicht die, die zufällig zuerst neugierig war.

Und der Schalter, der wirklich zählt: Die Registrierung steht ab Werk offen. Solange die Oberfläche nur auf Deinem Rechner läuft, ist das bequem. In dem Moment, in dem sie aus dem Netz erreichbar ist, legt jeder sich ein Konto an. Der Schalter dafür steht in der Punkt-env-Datei.

Was sich lohnt zu teilen, sind die Agenten. Einmal gebaut, mit den richtigen Unterlagen bestückt, für alle freigegeben — das ist der Punkt, an dem sich der höhere Aufwand von LibreChat gegenüber einer schlichteren Oberfläche auszahlt.

1 Was ein Konto ändert

In LM Studio gehören die Unterhaltungen dem Rechner. Hier gehören sie einer Person. Damit wandern Verlauf, Voreinstellungen, Prompts und Agenten mit — auf ein anderes Gerät, in ein anderes Büro, ins Homeoffice.

Das ist der eigentliche Grund, eine Oberfläche vor ein lokales Modell zu setzen. Ein Rechner mit Grafikkarte im Haus, fünf Leute, die ihn benutzen, und niemand muss etwas installieren.

2 Zwei Rollen

LibreChat kennt USER und ADMIN. Mehr nicht — keine Gruppen, keine feingliedrigen Rechte pro Modell, wie Open WebUI sie hat.

⚠️ Der erste registrierte Nutzer wird automatisch Administrator. Das ist praktisch beim Einrichten und heikel im Betrieb: Wer als Erster auf die frisch gestartete Oberfläche stößt, hat die Verwaltung. Also selbst zuerst registrieren, bevor irgendjemand anders die Adresse kennt.

3 Der Schalter, der wirklich zählt

Ab Werk darf sich jeder registrieren. Solange die Oberfläche nur auf Deinem Rechner läuft, ist das bequem und harmlos. In dem Moment, in dem sie aus dem Netz erreichbar ist, ist es eine offene Tür.

1.env — nach dem Anlegen der Konten
ALLOW_REGISTRATION=false
ALLOW_EMAIL_LOGIN=true
Danach docker compose up -d, damit die Änderung greift. Bestehende Konten bleiben, neue kann nur noch anlegen, wer Zugriff auf die Datei hat.

Das ist die übliche Reihenfolge für ein kleines Team: Dienst starten, sich selbst registrieren, die Kolleginnen und Kollegen der Reihe nach registrieren lassen, dann den Schalter umlegen.

4 Was sich zu teilen lohnt

Der eigentliche Gewinn im Team sind nicht die Konten, sondern die Agenten. Ein Agent, der die aktuellen Unterlagen kennt und eine vernünftige Anweisung hat, ist eine Auskunftsstelle — einmal gebaut, für alle da.

Ohne geteilte Agenten

Jeder lädt seine eigenen Dokumente hoch, jeder schreibt seinen eigenen Systemprompt, und keiner weiß, wessen Fassung aktuell ist. Fünf Leute, fünf Wahrheiten.

Mit geteilten Agenten

Eine Person pflegt die Unterlagen, alle fragen dieselbe Stelle. Wird ein Dokument ausgetauscht, gilt das sofort für alle — und zwar nachvollziehbar.

Damit das trägt, braucht es eine Zuständigkeit: Wer tauscht die Dokumente aus, wenn sich etwas ändert? Ohne diese Antwort veraltet der Agent, und nach einem halben Jahr ist er schlechter als keiner — weil ihm noch alle glauben.

5 Was LibreChat hier nicht kann

  1. Keine Gruppen. Zwei Rollen, das war's. Wer feiner steuern will, wer welches Modell sieht, ist mit Open WebUI besser bedient.
  2. Keine Volltextsuche über die Unterhaltungen — siehe Stufe 4, dafür fehlt hier der Suchdienst.
  3. Kein Mailversand in dieser Einrichtung. Passwort vergessen heißt: Administrator greift in die Datenbank.
💡 Für ein Team von drei bis zehn Leuten, die sich kennen, ist das alles verschmerzbar. Für eine Abteilung mit wechselnden Zuständigkeiten sollte man vorher überlegen, ob eine Anmeldung über einen zentralen Dienst besser passt — LibreChat kann OpenID, und dafür gibt es die Keycloak-Schulung.

✓ Kurz geprüft

Stufe 12

Betrieb und Grenzen — und wann welches Werkzeug

Sichern, aktualisieren, mehrere Anbieter. Und am Ende die Tafel, mit der Du selbst entscheidest.

Stufe 12 · Betrieb und Grenzen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Was gesichert gehört, was ein Update unwiderruflich macht, und die eine endgültige Entscheidung. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Was gesichert werden muss, liegt an zwei Stellen. Der Ordner data neben der Compose-Datei enthält Konten, Unterhaltungen und die hochgeladenen Dateien. Der Vektor-Speicher liegt in einem eigenen Volume — der ist abgeleitet und ließe sich durch erneutes Hochladen wiederherstellen.

Aktualisieren heißt: neues Abbild holen, Stapel neu starten. Ich tippe die Befehle nur und führe sie nicht aus, und zwar mit Absicht. Ein Abbild mit der Marke latest holt jederzeit eine neue Fassung, und der nächste Start wandert die Datenbank unwiderruflich nach vorn. Vorher sichern, nicht danach.

Eine Entscheidung ist besonders endgültig: das Einbettungsmodell. Es bestimmt die Länge der Zahlenreihen. Wechselst Du es später, passen die alten Einträge nicht mehr, und der Fehler kommt erst bei der Abfrage. Einen Knopf zum Neu-Indizieren gibt es hier nicht — Open WebUI hat einen.

Und der Punkt, für den LibreChat eigentlich bekannt ist: In derselben Datei stehen beliebig viele Endpunkte nebeneinander. Lokal und Cloud, in einer Oberfläche, mit einem Verlauf. Wir haben das hier bewusst nicht gefilmt, weil dabei Fragen den Rechner verlassen würden. Die Zeilen dafür sind dieselben wie die, die Du gesehen hast.

1 Was gesichert gehört

data/ — unersetzlich

Konten, Unterhaltungen, Agenten, Voreinstellungen, Prompts und die hochgeladenen Dateien. Ein normaler Ordner neben der Compose-Datei. Wer den hat, hat alles Wichtige.

pgdata — abgeleitet

Die Einbettungen. Verloren ist ärgerlich, aber nicht schlimm: Sie entstehen neu, wenn Du die Dokumente noch einmal hochlädst.

1Sicherung im laufenden Betrieb
docker compose stop api
tar czf librechat-sicherung-$(date +%F).tgz data/ librechat.yaml .env
docker compose start api
Das kurze Anhalten von api genügt; die Datenbank schreibt dann nichts mehr dazwischen. .env gehört mit in die Sicherung — darin stehen die Schlüssel, mit denen gespeicherte Zugangsdaten verschlüsselt sind. Ohne sie ist die Sicherung unvollständig.

2 Aktualisieren

2Neues Abbild holen
docker compose pull
docker compose up -d
⚠️ Das ist eine Einbahnstraße. Das Abbild trägt die Marke latest — pull holt also jederzeit eine neue Fassung, und der nächste Start wandert die Datenbank nach vorn. Zurück geht das nicht ohne Sicherung. Also: erst sichern, dann aktualisieren, und nicht am Freitagnachmittag.

Nach einem Update lohnt ein Blick ins Protokoll — dort steht, ob die version in librechat.yaml noch zum neuen Abbild passt:

3Nachsehen
docker compose logs api | grep -i "config\|version"

3 Die eine endgültige Entscheidung

Das Einbettungsmodell lässt sich nicht folgenlos wechseln. Es bestimmt die Länge der Zahlenreihen, mit denen Textstücke abgelegt werden — bei bge-m3 sind das 1024 Werte, bei anderen Modellen 1536 oder mehr.

⚠️ Der Wechsel fällt nicht beim Hochladen auf, sondern erst bei der Abfrage: ERROR: different vector dimensions 1024 and 1536. Und dann gibt es hier keinen Knopf zum Neu-Indizieren — man löscht die Tabellen langchain_pg_embedding und langchain_pg_collection und lädt alles neu hoch. Open WebUI hat für genau diesen Fall einen Knopf.

Deshalb: Vor dem ersten Dokument entscheiden, nicht danach. Für deutsche Texte ein mehrsprachiges Modell — warum, steht in Lokale KI.

4 Mehrere Anbieter — wofür LibreChat eigentlich gebaut ist

Unter endpoints.custom in librechat.yaml dürfen beliebig viele Einträge stehen. Lokales Modell und Cloud-Dienst nebeneinander, in einer Oberfläche, mit einem Verlauf — und das Modell mitten im Gespräch wechselbar.

⚠️ In dieser Schulung ist das bewusst nicht vorgeführt. Ein zweiter Endpunkt mit echtem Schlüssel hätte bedeutet, dass die Beispielfragen den Rechner verlassen — und das passt nicht zu einer Reihe über lokale KI. Die Zeilen dafür sind dieselben, die Du in Stufe 3 gesehen hast: Name, baseURL, apiKey, Modelliste.

Wer das tut, sollte eines wissen: Selbst gehostete Oberfläche heißt nicht lokale Verarbeitung. Sobald ein Cloud-Endpunkt eingetragen ist, gehen die Fragen dorthin, die Du an ihn stellst. Die Oberfläche im eigenen Haus ändert daran nichts.

5 Die Tafel: wann welches Werkzeug

Drei Wege, dieselbe lokale KI. Keiner ist der Sieger; sie passen zu verschiedenen Lagen.

LM StudioOpen WebUILibreChat
AufwandProgramm installierenein Containervier Dienste + Konfigurationsdatei
Für weneine Personkleines TeamTeam mit Ansprüchen
Konten—ja, mit Gruppen und Rechtenja, zwei Rollen
DokumentensucheeinfachWissenssammlungen, Knopf zum Neu-Indizierenüber Agenten, kein Neu-Indizieren
Agenten—„Modelle" mit Systempromptja, mit eigenen Unterlagen
Voreinstellungen / Prompts—begrenztja, beides
Mehrere Anbieter—möglichdafür gebaut
Modelle vergleichennacheinandernebeneinandernebeneinander
Volltextsuche im Verlauf—janur mit fünftem Dienst
1️⃣
Nimm LM Studio,
wenn Du allein arbeitest und vor allem Modelle ausprobieren willst. Kürzester Weg zur Antwort, keine Oberfläche nötig.
2️⃣
Nimm Open WebUI,
wenn mehrere Leute chatten sollen, Dokumente eine Rolle spielen und der Aufwand klein bleiben muss. Schneller eingerichtet, verzeiht mehr.
3️⃣
Nimm LibreChat,
wenn Du Agenten willst, Voreinstellungen, eine Prompt-Bibliothek oder mehrere Anbieter in einer Oberfläche. Preis: mehr Teile, mehr zu verstehen.
💡 Und was alle drei nicht ändern: die Antwort selbst. Dasselbe Modell gibt in allen dreien dasselbe. Wer eine bessere Antwort will, wechselt das Modell oder verbessert die Dokumente — nicht die Oberfläche. Das war die Regel aus Stufe 1, und sie gilt bis hierher.

6 Vor- und Nachteile auf einen Blick

Dafür

Agenten mit eigenen Unterlagen · Voreinstellungen und Prompt-Bibliothek · mehrere Anbieter in einer Oberfläche · Fundstellen mit Trefferquote · sichtbarer Gedanken-Block · Konfiguration in einer Datei, also wiederholbar · Modelle nebeneinander vergleichbar

Dagegen

vier Dienste statt einem · Zustellweg für Dateien muss verstanden werden · kein Neu-Indizieren der Einbettungen · nur zwei Rollen, keine Gruppen · Volltextsuche nur mit zusätzlichem Dienst · Konfigurationsdatei-Version muss zum Abbild passen · Update ist eine Einbahnstraße

✓ Kurz geprüft

Bonus

Befehle zum Kopieren

Alles aus den zwölf Stufen an einer Stelle, in der Reihenfolge, in der man es braucht.

1 Der ganze Stapel

1docker-compose.yml
services:
  api:
    image: ghcr.io/danny-avila/librechat:latest
    container_name: librechat
    restart: unless-stopped
    ports:
      - "3080:3080"
    depends_on: [mongodb, rag_api]
    env_file: .env
    environment:
      MONGO_URI: mongodb://mongodb:27017/LibreChat
      CONFIG_PATH: /app/librechat.yaml
      HOST: 0.0.0.0
      RAG_API_URL: http://rag_api:8000
    volumes:
      - ./librechat.yaml:/app/librechat.yaml
      - ./data/images:/app/client/public/images
      - ./data/uploads:/app/uploads
      - ./data/logs:/app/api/logs

  mongodb:
    image: mongo:8
    container_name: librechat-mongodb
    restart: unless-stopped
    command: --quiet
    volumes:
      - ./data/mongo:/data/db

  vectordb:
    image: pgvector/pgvector:0.8.0-pg15-trixie
    container_name: librechat-vectordb
    restart: unless-stopped
    environment:
      POSTGRES_DB: librechat_vectors
      POSTGRES_USER: librechat
      POSTGRES_PASSWORD: librechat_local
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U librechat -d librechat_vectors"]
      interval: 5s
      retries: 20

  rag_api:
    image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:v0.9.0
    container_name: librechat-rag-api
    restart: unless-stopped
    depends_on:
      vectordb: { condition: service_healthy }
    env_file: .env
    environment:
      DB_HOST: vectordb
      DB_PORT: "5432"
      POSTGRES_DB: librechat_vectors
      POSTGRES_USER: librechat
      POSTGRES_PASSWORD: librechat_local
      RAG_PORT: "8000"

volumes:
  pgdata:
Die POSTGRES_*-Werte stehen bewusst inline und nicht in der .env: rag_api liest die .env mit, und abweichende Werte auf beiden Seiten ergeben einen Anmeldefehler, dessen Ursache man lange sucht.

2 Die Konfigurationsdatei

2librechat.yaml
version: 1.3.13          # muss zum Abbild passen
cache: true

interface:
  fileSearch: true
  defaultPinnedTools:
    - file_search

fileConfig:
  serverFileSizeLimit: 100
  endpoints:
    "LM Studio":
      fileLimit: 10
      fileSizeLimit: 100
      totalSizeLimit: 200
      defaultLLMDeliveryPath:
        overrides:
          application/pdf: none
          text/markdown: none
          text/plain: none

endpoints:
  custom:
    - name: "LM Studio"
      baseURL: "http://host.docker.internal:1234/v1"
      apiKey: "lm-studio"
      models:
        default: ["qwen3.8-27b"]
        fetch: true
      titleConvo: true
      modelDisplayLabel: "LM Studio (lokal)"

3 Starten, anhalten, nachsehen

3Alltag
docker compose up -d          # starten
docker compose ps             # vier Dienste, alle laufend?
docker compose logs -f api    # mitlesen, Strg+C beendet nur das Mitlesen
docker compose down           # anhalten (Daten bleiben)
⚠️ docker compose down -v löscht das Volume pgdata — aber nicht data/mongo. Für ein wirkliches Zurücksetzen muss der Ordner zusätzlich gelöscht werden.

4 Modelle laden

4Beide, ausdrücklich
lms load qwen/qwen3.8-27b --identifier qwen3.8-27b --context-length 32768
lms load text-embedding-bge-m3 --context-length 8192
lms ps                      # was ist geladen?

5 Wenn etwas nicht geht

5Erreicht der Container LM Studio?
docker compose exec rag_api python -c "import urllib.request;print(urllib.request.urlopen('http://host.docker.internal:1234/v1/models').status)"
200 = Adresse stimmt. Verbindungsfehler = LM Studios Server läuft nicht oder hört woanders.
6Sind Dokumente wirklich eingebettet?
docker compose exec vectordb psql -U librechat -d librechat_vectors -c "select count(*) from langchain_pg_embedding;"
0 trotz hochgeladener Dateien = falscher Zustellweg (Stufe 7).
7Einbettungsmodell gewechselt — Tabellen leeren
docker compose exec vectordb psql -U librechat -d librechat_vectors \
  -c "truncate langchain_pg_embedding; truncate langchain_pg_collection cascade;"
Danach alle Dokumente neu hochladen. Es gibt keinen Knopf dafür.

6 Sichern

8Alles Unersetzliche
docker compose stop api
tar czf librechat-sicherung-$(date +%F).tgz data/ librechat.yaml .env
docker compose start api

7 Weiterlesen

  1. LibreChat-Dokumentation — Einrichtung, alle Konfigurationsschlüssel
  2. Agenten — Fähigkeiten, Werkzeuge, Freigabe
  3. LM Studio — der Motor darunter
  4. Open WebUI — die Schwester-Oberfläche
  5. Lokale KI — warum Einbettungsmodelle eine eigene Sache sind
  6. Docker — falls Container noch neu sind
Lernkontrolle

Quiz

7 Fragen quer durch die Stufen. Ab 6 richtigen Antworten schaltest du dein Zertifikat frei.

Frage 1 von 7
…
Abschluss

Dein Zertifikat

Glückwunsch! Trage deinen Namen ein und drucke das Zertifikat (oder speichere als PDF).

FL
Florian Ludwig
AI Consultant · Kutzschbach INNOVATIONS
Zertifikat
LibreChat — die Arbeitsoberfläche mit Agenten vor Deiner lokalen KI
Hiermit wird bestätigt, dass
Dein Name hier
den Workshop „LibreChat — die Arbeitsoberfläche mit Agenten vor Deiner lokalen KI" erfolgreich abgeschlossen hat.
—Datum
★GEPRÜFT
Florian LudwigAI Consultant · Kutzschbach INNOVATIONS