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:
- Installation — ob der native Vektor-Stack in
node_modulesvorhanden 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äßigemake depsihn nicht (ein lokalesnode_modulesist so ~660 MB schlanker) — für lokale Vektorarbeit brauchst dumake deps-vector. - Laufzeit — die Variable
VECTOR_SEARCH. Im veröffentlichten Image steht sie standardmäßig aufoff.
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:
| Stufe | Variablen | RAM | Wann |
|---|---|---|---|
| off | VECTOR_SEARCH=off | 0 | Eine schwache Maschine, oder die Stichwortsuche reicht aus. Der Standard des Images. |
| compact | VECTOR_SEARCH=on, EMBED_MODEL=Xenova/multilingual-e5-small, EMBED_DIMENSIONS=384 | ~120 MB | Homelab, ein kleiner VPS. |
| full | VECTOR_SEARCH=on (Standard: bge-m3, 1024) | ~600 MB | Eine leistungsstarke Maschine; 100+ Sprachen, langer Kontext. |
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.