From 887afb07286d2b6658bd17280a9b1b13fc752332 Mon Sep 17 00:00:00 2001 From: Sebastian Frank Date: Mon, 19 Oct 2026 23:12:33 +0000 Subject: [PATCH] Suche: Vektor-Index (Sparse-Layout, Legacy-Dense, Speicher) dokumentieren Kurzer Abschnitt zu Load/Speicher (91k Docs, 1024 dims: ~59 s, ~690 MB), Sparse-Suche ~4 ms statt ~190 ms, beide Dense-Speicherformen inkl. Migrationswerkzeug und der fehlende MongoDB-Fallback. Stempel auf tibi-server 8331a42. --- plans/audit-report.json | 2 +- src/content/docs/projekt/suche.mdx | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plans/audit-report.json b/plans/audit-report.json index 9744d32..76d6602 100644 --- a/plans/audit-report.json +++ b/plans/audit-report.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-10-19T22:36:08.080Z", + "generatedAt": "2026-10-19T23:12:33.282Z", "stats": { "files": 70, "byDir": { diff --git a/src/content/docs/projekt/suche.mdx b/src/content/docs/projekt/suche.mdx index b5ea102..471713a 100644 --- a/src/content/docs/projekt/suche.mdx +++ b/src/content/docs/projekt/suche.mdx @@ -207,6 +207,12 @@ search: - Gemessen (91k Dokumente): Die ngram-Subsearch von „blauer pullover" fällt von ~1,3 s auf wenige Millisekunden; Einzelwort-Suchen von ~1,4–4,9 s auf 85–158 ms. Das kompakte Index-Layout kostet ≈155 MB statt ≈1,15 GB und lädt in ≈2,7 s. - Der 20000er-Kandidaten-Cap gilt nur für `combined` (dort auf Roh-Kandidaten). Einzel-ngram-Suchen prüfen nur so viele Kandidaten in Rangfolge, wie die Seite braucht (Blöcke à 500 `_id`s). +## Vektor-Index: Laden, Speicher, Altformate + +Der Vektor-Index wird beim Projekt-Start im Hintergrund aufgebaut; bis dahin liefern Suchen Teilergebnisse. Für 91k Dokumente mit 1024 Dimensionen liegt der Load bei ~59 s und der Speicher bei ~690 MB pro Config und Sprache. Die Sparse-Suche ist mit dem kompakten Layout von ~190 ms auf ~4 ms gefallen, Dense bleibt bei ~5 ms (parallel über die Kerne). + +Zwei Dense-Speicherformen sind im Umlauf: BSON-Binary (aktuell) und ein Legacy-Byte-Array (4× größer, ~5× langsamer beim Laden). Der Server liest beide; für Altbestände gibt es im Server-Repo `tools/vectormigrate` (erst `-dry-run`, danach Projekt neu laden). Ein MongoDB-Fallback existiert nicht: fehlt der Index, bricht die Vektor-Suche mit einem klaren Fehler ab. + ## Was der Vektor-Pfad zusätzlich braucht - **Provider-Name:** `vector.provider` (z. B. `bge_m3`) muss mit einem Servernamen aus der Embedding-Registry übereinstimmen (`collection.go:377`) — sonst löst die Config nicht auf. Unbekannte Provider-Typen brechen ab, defekte einzelne Provider werden übersprungen (`registry.go:58-70`). @@ -238,4 +244,4 @@ search: Weiter: [Lesen und suchen](/projekt/abfragen-lesen/), [Sammlungen anlegen](/projekt/sammlungen-anlegen/), [Felder und Widgets](/projekt/felder-widgets/). -Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter), am 68b4278 2026-10-15 (tibi-server, rankfusion), am 2b091d8 2026-10-13 (tibi-admin-nova, Test-Plan 41-search-index-status), am 63a2848 2026-10-19 (tibi-server: combinedCache, ngram.inMemory, _count-Fast-Path, Restore-Rebuild), am 76f1336 2026-10-19 (tibi-server: ngram.stopwords, Regenerate-Endpunkt, mongo(no-terms)); am ba3f01d 2026-10-19 (tibi-server: kompakter ngramindex, collection_ngram_search.go, X-Search-Memory), am 9e12a8e 2026-10-19 (tibi-types: ngram.stopwords/queryFilter/inMemory im Schema), am 21472bd 2026-10-19 (tibi-types: ngram.sizes 2–10, combinedCache im Schema), am cf44cd7 2026-10-19 (tibi-svelte-starter: tibi-types-Submodul auf 21472bd) +Verifiziert am e3f92eb 2026-10-14 (tibi-svelte-starter), am 68b4278 2026-10-15 (tibi-server, rankfusion), am 2b091d8 2026-10-13 (tibi-admin-nova, Test-Plan 41-search-index-status), am 63a2848 2026-10-19 (tibi-server: combinedCache, ngram.inMemory, _count-Fast-Path, Restore-Rebuild), am 76f1336 2026-10-19 (tibi-server: ngram.stopwords, Regenerate-Endpunkt, mongo(no-terms)); am ba3f01d 2026-10-19 (tibi-server: kompakter ngramindex, collection_ngram_search.go, X-Search-Memory), am 8331a42 2026-10-19 (tibi-server: kompakter Sparse-Vektorindex, Legacy-Dense-Format, MemoryEstimate, vectormigrate), am 9e12a8e 2026-10-19 (tibi-types: ngram.stopwords/queryFilter/inMemory im Schema), am 21472bd 2026-10-19 (tibi-types: ngram.sizes 2–10, combinedCache im Schema), am cf44cd7 2026-10-19 (tibi-svelte-starter: tibi-types-Submodul auf 21472bd)