NotariumDokumentation
Dokumentationsversion: latest
DE

Semantische Suche aktivieren

Die Volltextsuche (FTS) in Notarium funktioniert immer und ohne Einrichtung. Die semantische Suche (Vektorsuche) ist eine optionale Fähigkeit: Sie ergänzt eine hybride Rangfolge nach Bedeutung, zieht dafür aber einen schwergewichtigen nativen Stack nach sich (onnxruntime + sqlite-vec, ~660 MB auf der Festplatte) sowie ein lokales Embedding-Modell, das beim ersten Aktivieren heruntergeladen wird (~600 MB auf der Festplatte und einige Hundert MB RAM). Deshalb ist sie standardmäßig aus und wird bewusst eingeschaltet. Wie die Suche im Inneren funktioniert, steht unter Konzepte: Suche.

Zwei unabhängige Schalter

Es hilft, zwei Ebenen auseinanderzuhalten — Installation und Laufzeit:

  1. Installation — ob der native Vektor-Stack in node_modules vorhanden ist. Das Docker-Image bringt ihn immer mit, deshalb erfordert das Aktivieren im Container kein erneutes Bauen des Images. Beim Betrieb aus dem Quellcode installiert das standardmäßige make deps ihn nicht (ein lokales node_modules ist so ~660 MB schlanker) — für lokale Vektorarbeit brauchst du make deps-vector.
  2. Laufzeit — die Variable VECTOR_SEARCH. Im veröffentlichten Image steht sie standardmäßig auf off.

Für die semantische Suche in Docker genügt es, den Laufzeit-Schalter umzulegen — der Stack ist bereits vorhanden.

Aktivieren

docker run -d --name notarium \
  -p 3000:3000 \
  -v notarium-data:/data \
  -e VECTOR_SEARCH=on \
  docouno/notarium:latest

(Ein einziges /data-Volume hält den gesamten Zustand — die Metadaten-Datenbank, die Indizes, deine Notizen, die Export-Artefakte; dasselbe wie bei einem einfachen Start, siehe Installation. Hier kommt lediglich VECTOR_SEARCH=on hinzu.)

Beim ersten Aktivieren wird das Standardmodell (bge-m3) heruntergeladen (~600 MB auf der Festplatte) und belegt einige Hundert MB RAM. Die Indexierung läuft im Hintergrund: Die Volltextsuche ist sofort verfügbar, während die Vektoren aufholen.

Modellstufen

Das Modell wird über das Paar EMBED_MODEL + EMBED_DIMENSIONS gewählt (die Dimensionalität muss zum Modell passen) — es ist eine Laufzeit-Einstellung auf ein und demselben Image, kein separater Build:

StufeVariablenRAMWann
offVECTOR_SEARCH=off0Eine schwache Maschine, oder die Stichwortsuche reicht aus. Der Standard des Images.
compactVECTOR_SEARCH=on, EMBED_MODEL=Xenova/multilingual-e5-small, EMBED_DIMENSIONS=384~120 MBHomelab, ein kleiner VPS.
fullVECTOR_SEARCH=on (Standard: bge-m3, 1024)~600 MBEine leistungsstarke Maschine; 100+ Sprachen, langer Kontext.
Asymmetrische e5-Modelle

Die Stufe compact (e5) benötigt die Präfixe EMBED_QUERY_PREFIX="query: " und EMBED_PASSAGE_PREFIX="passage: " — vergisst du sie, verschlechtert sich die Suchqualität stillschweigend. Beim symmetrischen bge-m3 gilt das Gegenteil: Die Präfixe solltest du gar nicht setzen.

Ressourcen auf einer knappen Maschine

Auf einem Host ohne Swap und mit ~6 GB RAM kann die erste bge-m3-Indexierung an die Speichergrenze stoßen. Zwei Hebel: Nimm die Stufe compact (e5-small) oder setze EMBED_CPU_MEM_ARENA=off — das hält den Verbrauch bei ~1,9 GB, um den Preis einer leichten Verlangsamung. Die vollständige Liste der Embedding-Parameter findest du in der Referenz.

Rückfall auf die Volltextsuche

Wenn VECTOR_SEARCH=off ist oder der native Stack aus irgendeinem Grund nicht lädt, arbeitet die Suche weiterhin über den Volltext — ohne Fehler, und die Ergebnisse sehen gleich aus. Die semantische Suche ist ein zusätzlicher Rangfolge-Kanal über der stets aktiven FTS, keine harte Abhängigkeit. Eine Instanz ohne Vektoren ist eine voll funktionsfähige Instanz.