Zum Inhalt springen

Wann Inhalte durchsuchbar werden — Indexierung (Desktop vs. Web)

Alle

Damit ein Inhalt im Chat (RAG) und in der Suche auftaucht, muss er indiziert sein. Welches Such-Backend dabei greift, erklärt RAG & Suche. Dieser Artikel beantwortet die andere Frage: wann indiziert wird — und warum sich das zwischen Desktop und Web sowie je nach Schreibweg unterscheidet.

SchreibwegDesktopWeb
KB-Editor (Speichern / Umbenennen / Verschieben / Löschen)inkrementell, sofortinkrementell, sofort
Chat- & Agent-Tool (create_knowledge_article / update_knowledge_article)inkrementell nach Speicherninkrementell nach Speichern
Import-Übernahme (Promote)kein inkrementeller Trigger — wird vom periodischen Lauf nachgezogenkein inkrementeller Trigger — wird vom periodischen Lauf nachgezogen
„Neu indizieren” (Force Re-Index)voller Lauf über den Bestandvoller Lauf über den Bestand

„Inkrementell” heißt: nur der betroffene Pfad wird neu erfasst — der Inhalt ist praktisch sofort durchsuchbar. Der Editor und die Chat-/Agent-Werkzeuge lösen das direkt nach dem Speichern aus.

Hinweis: Bis cw-app#348 wurden im Desktop per Chat-/Agent-Tool erstellte Artikel nicht automatisch indiziert. Das ist behoben — diese Schreibwege verhalten sich jetzt wie der Editor.

Beim Anwendungsstart greift ein „nur-wenn-leer”-Gate: Ein voller Index läuft nur, wenn der Vektorspeicher leer oder nicht vorhanden ist (z. B. erste Inbetriebnahme). Ein bereits gefüllter Speicher wird beim Start bewusst nicht erneut durchlaufen — sonst würde bei jedem Boot neu eingebettet, was teuer und unnötig wäre.

Praktische Folge: Nach dem ersten erfolgreichen Index sorgen die inkrementellen Auslöser und der periodische Lauf für Aktualität, nicht der Neustart.

Zusätzlich läuft ein periodischer Abgleich, der den Bestand mit dem Index synchronisiert (und so z. B. Import-Übernahmen nachzieht):

  • Web: geplant über das Intervall Knowledge:IndexIntervalMinutes (Standard: 60 Minuten). → Umgebungsvariablen & appsettings
  • Desktop: läuft seit cw-app#348 ebenfalls — tickt aber nur, solange die App geöffnet ist. Geschlossene App = kein Cron. (Gilt allgemein für geplante Aufgaben im Desktop. → Web vs. Desktop)

Jeder lokale Vault (intern „Local-typed”), der als indiziert markiert ist, wird automatisch erfasst — sowohl der eingebaute persönliche Vault als auch jeder nutzererstellte lokale Vault. Konkret:

  • Sofort bei Schreibvorgängen über Editor oder Chat-/Agent-Tool (inkrementell).
  • Andernfalls spätestens innerhalb von IndexIntervalMinutes über den periodischen Lauf.

Api-typed Vaults (Inhalte eines Peer-/Servers) werden dort indiziert, wo sie liegen, und lokal übersprungen — eine doppelte Indexierung entfällt.

Die schlanke In-Memory-BM25-Dateisuche ist immer-warm und erfüllt zwei Aufgaben (siehe RAG & Suche): Bei aktivem Vektor-Backend läuft sie als zweite Trefferliste der Hybrid-Suche parallel mit; ist kein Vektor-Backend erreichbar, trägt sie die Suche allein. In beiden Fällen gibt es kein inkrementelles IndexPathAsync — die BM25-Dateisuche pflegt sich separat vom Vektor-Index. Den aktuellen Backend-Status und ob ein Vektorspeicher aktiv ist, zeigt der Admin-Tab Vektor-Speicher (sichtbar, wenn sqlite-vec das aktive Backend ist).

Troubleshooting: „Mein Artikel taucht nicht in der Suche auf”

Section titled “Troubleshooting: „Mein Artikel taucht nicht in der Suche auf””
  1. Kurz warten / Schreibweg prüfen. Editor- und Chat-/Agent-Schreibvorgänge indizieren sofort; eine Import-Übernahme wird erst vom periodischen Lauf nachgezogen (bis zu IndexIntervalMinutes).
  2. Desktop: Ist die App zwischenzeitlich geschlossen gewesen? Dann hat der periodische Lauf nicht getickt — App öffnen und kurz warten.
  3. Vault indiziert? Im Admin-Tab Tresore muss der Vault als indiziert markiert sein. → Wissensbereiche (Vaults) & Indexierung
  4. Backend prüfen. Status im Admin-Tab Vektor-Speicher; bei nicht erreichbarem Vektordienst greift BM25 (geringere Trefferqualität). → Qdrant einrichten
  5. Erzwingen. Bleibt der Inhalt aus, im Admin-Bereich „Neu indizieren” (Force Re-Index) auslösen — ein voller Lauf über den Bestand. Auch nach einem Embedding-Wechsel ist eine Neuindexierung nötig.