Skip to content

Erste Schritte

bl0rb edited this page Sep 7, 2026 · 2 revisions

Erste Schritte

Diese Seite beschreibt den Weg von einem leeren Rechner bis zur ersten Frage, die der Chat mit Quellenangabe beantwortet. Sie ersetzt weder das Betriebshandbuch noch die Wissensportal-Dokumentation — sie ordnet ein, in welcher Reihenfolge man beides liest und an welchen Stellen Leute typischerweise hängenbleiben. Alle Werte, Variablennamen und Fehlerbilder stehen im Betriebshandbuch und werden hier nicht wiederholt.

Der Punkt, an dem die meisten hängenbleiben

Verarbeiten bringt nichts in den Index. Erst die Freigabe tut das.

Ein hochgeladenes und fertig verarbeitetes Dokument ist kein durchsuchbares Dokument. Weave-Knowledge indiziert regulär ausschließlich das Ereignis document.released; das Ereignis document.processed wird nur mit awaiting_release quittiert. Wer einen Ordner hochlädt, das Portal zuklappt und danach im Chat sucht, findet nichts — und zwar ohne Fehlermeldung, weil technisch nichts kaputt ist. Auch die Symptomtabelle des Betriebshandbuchs nennt zu „Dokumente erscheinen nicht im Index“ zuerst die fehlende Freigabe und erst danach ein abweichendes Webhook-Secret.

Was eine Freigabe ist, wer sie auslösen darf und warum sie ein unveränderlicher Snapshot ist: Wissensbereiche-und-Freigaben.

Was Sie vorher brauchen

  • Docker mit Compose und Python für die beiden Konfigurationsbefehle.
  • Die Pflicht-Geheimnisse als Umgebungsvariablen — über direnv, einen Passwort-Manager, einen CI-Secret-Store, wie ist gleichgültig. Fehlt eines, nennt render alle fehlenden Variablen auf einmal und bricht ab, statt eine halbe Datei zu schreiben. Welche das sind, steht in betrieb.md, Abschnitt 11.
  • Ausgehende Verbindungen für die Image-Pulls und, falls Sie den OCR-Worker starten, für die PaddleOCR-Gewichte. Fehlt dieser Ausgang, fällt die Verarbeitung still auf reine Textextraktion zurück (README, Outbound connections).

Ein LLM-Zugang wird für den ersten Durchlauf nicht gebraucht. Der Stack startet mit Attrappen-Providern und erreicht keinen externen Dienst; siehe Schritt 7.

1. Konfiguration erzeugen

weave.yaml im Wurzelverzeichnis ist die einzige Konfigurationsquelle. Sie enthält keine Geheimnisse im Klartext, sondern nur die Namen der Umgebungsvariablen, aus denen die Werte gelesen werden. Die Datei deploy/.env wird daraus erzeugt und nicht von Hand gepflegt.

python scripts/weave_config.py render   # schreibt deploy/.env
python scripts/weave_config.py check    # prüft die Datei auf Widersprüche

check findet genau die Fehler, die sonst erst später als unerklärliches 401 oder 503 an einer Dienstgrenze auftauchen — geteilte Werte, die auseinander laufen, fehlende Pflichtwerte, unpassende Embedding-Dimensionen. Führen Sie ihn nach jeder Änderung an einem Geheimnis oder einer Adresse erneut aus.

Hinweis zur Lesereihenfolge: Abschnitt 2 des Betriebshandbuchs zeigt noch den älteren Weg über cp .env.example .env. Abschnitt 11 derselben Datei hält fest, dass Handarbeit an der .env vollständig entfällt — dieser Weg ist der aktuelle.

2. Stack starten

docker compose --env-file deploy/.env \
  -f deploy/docker-compose.weave.yml \
  -f deploy/docker-compose.local.yml \
  up -d --build

Die Compose-Datei allein zeigt auf Registry-Images, die nie veröffentlicht wurden; das lokale Override baut die Dienste aus diesem Monorepo. Deshalb immer beide Dateien angeben.

Danach ist das Wissensportal unter http://localhost:3000 erreichbar und die Chat-Oberfläche unter http://localhost:3001. Ein Punkt, der spätestens beim Veröffentlichen hinter einem Reverse Proxy zählt: Die Portal-Oberfläche leitet Anfragen nicht weiter, der Browser spricht die Ingest-API direkt an. Port 3000 und Port 8000 müssen also beide vom Arbeitsplatz aus erreichbar sein.

Ist Port 3000 belegt, setzen Sie FRONTEND_PORT und CORS_ORIGINS gemeinsam, bevor Sie neu rendern. Wer nur den Port verschiebt, bekommt im Browser einen Access-Control-Fehler und hält daraufhin CORS für das Problem — tatsächlich ist es der Port. CORS_ORIGINS steuert nämlich nicht nur CORS, sondern zugleich die Herkunftsprüfung gegen CSRF, an der dann jede schreibende Anfrage scheitert, die Anmeldung eingeschlossen. check meldet diesen Widerspruch.

3. OCR-Worker starten

Derselbe Aufruf noch einmal, nur endet er auf --profile ocr up -d weave-ingest-worker statt auf up -d --build.

Der Worker bringt PaddleOCR mit und ist mehrere Gigabyte groß. Er hängt hinter einem eigenen Profil, damit der übrige Stack in Minuten hochkommt. Ohne ihn bleiben hochgeladene Aufträge in PENDING stehen — auch das ohne Fehlermeldung.

4. Ersten Administrator anlegen

Öffnen Sie das Portal und legen Sie über die Setup-Seite (/setup) das erste Konto an. Der erste Nutzer wird automatisch Administrator. Weitere Nutzer, Teams und OIDC-Verbindungen verwaltet dieser Administrator anschließend unter /admin; Weave-Ingest ist der Identitätsanbieter der Plattform (ADR-0006). Wer sich hier anmelden kann, kann auch chatten — eine zweite Benutzerverwaltung im Gateway gibt es nicht. Wie Teams, Wissensbereiche und Sichtbarkeit zusammenhängen, steht in Rechte-und-Sichtbarkeit.

5. Admin-Token nachtragen und Knowledge neu starten

Dieser Schritt ist der einzige zyklische Punkt der Erstinbetriebnahme, und er lässt sich nicht vorziehen: Weave-Knowledge braucht einen persönlichen API-Token, der einem Administrator gehört, weil es die Collection-Registry über einen Admin-Endpunkt holt — dieser Endpunkt gibt die vollständige Zugriffskarte aus. Der Token kann erst existieren, wenn der Stack läuft und Schritt 4 erledigt ist, render verlangt ihn aber bereits als Pflichtwert. Beim ersten Rendern steht dort daher zwangsläufig ein vorläufiger Wert, den Sie jetzt ersetzen.

Erzeugen Sie den Token als Administrator im Portal unter Konto → API-Tokens, setzen Sie ihn als WEAVE_KNOWLEDGE_INGEST_API_TOKEN, rendern Sie neu und erstellen Sie die beiden Knowledge-Container neu — mit up -d --no-deps weave-knowledge weave-knowledge-worker; den vollständigen Befehl nennt die Wissensportal-Dokumentation, Abschnitt Betriebskonfiguration. Abschnitt 3 des Betriebshandbuchs nennt an dieser Stelle noch ein restart; Abschnitt 7.5 derselben Datei hält fest, dass geänderte .env-Werte erst durch up -d in den Container gelangen — deshalb der obige Aufruf. Im Container selbst heißt der Wert WEAVE_INGEST_API_TOKEN; wer in Logs oder printenv danach sucht, findet ihn unter diesem Namen.

Bis dahin läuft der Registry-Sync in ein 401, und die Collections in Chat und Suche bleiben leer. Bleiben sie es auch danach, gehört der Token höchstwahrscheinlich keinem Administrator.

6. Wissensbereich anlegen, Quelle hinzufügen, freigeben

Ab hier arbeiten Sie nur noch in der Oberfläche. Der Ablauf ist im Wissensportal geführt: Wissensbereich anlegen, dabei die berechtigten Teams wählen, dann Quellen hinzufügen — Dateien, einzelne .eml-E-Mails oder eine Confluence-Startseite — und ein Verarbeitungsprofil auswählen.

Quellen hinzufügen: Dateien hochladen, Confluence-Seite auswählen, Verarbeitungsprofil wählen

Wenn die Verarbeitung durch ist, steht das Dokument unter Prüfen und freigeben. Lesen Sie den aufbereiteten Text; reicht die Qualität nicht, verarbeiten Sie mit einem anderen Profil neu. Erst die ausdrückliche Bestätigung speichert die Freigabe. Danach läuft die Anzeige selbsttätig durch Freigegeben → Wird indiziert → Für KI verfügbar und nennt am Ende Zeitpunkt und Anzahl der durchsuchbaren Textabschnitte.

Prüfansicht: aufbereiteter Text, Freigabe eines geprüften Standes und die Anzeige der KI-Verfügbarkeit

Warten Sie diesen letzten Zustand ab, bevor Sie in den Chat wechseln. „Verarbeitet“ heißt weder „freigegeben“ noch „indiziert“, und der Zustellstatus eines Webhooks sagt nichts über den Abschluss der Indexierung. Die Details zu Zuständen, Berechtigungen und Sonderfällen wie Confluence stehen in Wissensbereiche-und-Freigaben.

7. Die erste Frage stellen

Der Chat ist eine eigene Oberfläche, die aus dem Portal heraus verlinkt ist, und er nutzt dieselbe Anmeldung. Wählen Sie einen Bot, stellen Sie die Frage, und schränken Sie das Gespräch bei Bedarf auf einzelne Ihrer Wissensbereiche ein.

Chat-Oberfläche mit Bot-Auswahl und laufendem Gespräch

Zwei Erwartungen sind hier wichtig:

  • Findet die Suche nichts, sagt der Bot das. Er formuliert keine flüssige, unbelegte Antwort. Eine leere Antwort ist bei frisch aufgesetztem Stack fast immer ein Hinweis auf eine fehlende Freigabe oder ein fehlendes Team, nicht auf einen Defekt.
  • Antworten, die mit [fake-llm] beginnen, sind korrekt und erwartbar. LLM_PROVIDER steht bis zur Umstellung auf fake, ebenso arbeiten Embeddings und Reranking zunächst mit Attrappen. Der erste Durchlauf zeigt damit den vollständigen Weg vom Dokument bis zur Antwort, ohne dass Daten oder Budget das Haus verlassen. Wie man auf echte Modelle umstellt — und warum eine Umstellung der Embeddings bei bereits gefüllter Datenbank eine Migration und ein Reindex nach sich zieht — steht in Abschnitt 7 des Betriebshandbuchs.

Bleibt eine Antwort aus, ist der Selbsttest in Abschnitt 10 der schnellste Weg: Er prüft der Reihe nach Erreichbarkeit, Bot-Liste, lesbare Collections und eine echte Antwort samt trace, und die zugehörige Symptomtabelle nennt zu jedem Fehlerbild die wahrscheinliche Ursache. Die häufigsten Fälle sind auch in Haeufige-Fragen eingeordnet.

Bildstrecke zum Ablauf

Unter docs/screenshots/user-wiki/ liegen 31 Screenshots der aktuellen Oberfläche, geordnet nach Anmeldung und Wissensablauf, persönlichen Einstellungen und Chat, Verbindungen und Fachwerkzeugen sowie Administration. Die Galerie zeigt sie zusammen mit einer Beispielanimation, die den fachlichen Teil dieser Seite in fünf Schritten durchläuft: anmelden, Quelle zu einem Wissensbereich hinzufügen, Verarbeitung verfolgen, prüfen und freigeben, im Chat fragen.

Die Animation ist ausdrücklich eine Demonstration mit simulierten Oberflächenzuständen und erfundenen Beispieldaten; die gezeigte Chat-Antwort ist als Attrappe gekennzeichnet, und die Zeitverhältnisse entsprechen weder echter OCR- noch Indexierungs- oder Modelllaufzeit. Die Einzelbilder dagegen sind echte Browser-Renderings der laufenden Anwendung mit ersetzten Daten. Herkunft und Aufnahmeverfahren stehen im README der Bildstrecke.

Bevor daraus mehr als eine Testinstallation wird

Der oben beschriebene Stand ist eine lauffähige Bewertungsumgebung, kein Betriebszustand. Drei Dinge sind vorher zu klären, und alle drei sind in der ausgelieferten Konfiguration bewusst offen gelassen:

  • Der Stack veröffentlicht zehn Host-Ports, aber nur fünf davon sind für jemanden außerhalb des Stacks gedacht. Kein Eintrag bindet an eine bestimmte Adresse.
  • Es gibt an keiner Stelle TLS — weder Reverse Proxy noch Ingress noch Zertifikatsverwaltung liegen bei.
  • Die Modelle sind Attrappen, solange sie nicht umgestellt sind.

Welche Ports das im Einzelnen sind, welcher Dienst welchen Token verlangt und wie die Umstellung auf echte Modelle abläuft: Betrieb ordnet es ein, „Network design“ in der README und die Abschnitte 6 bis 10 des Betriebshandbuchs sind die maßgeblichen Fassungen.

Weiterlesen