Baue den Index als SQLite mit FTS5 und sqlite-vec, dazu die Suche
Entscheidung Andreas 2026-09-04 (spine/core#8): kein Datenbankdienst. Der Index ist eine abgeleitete Sicht auf die Markdown-Ablage in einer Datei im Volume, jederzeit neu baubar. image/km/index.py zerlegt die Dateien in Chunks (Chunking aus info/ai/scripts/index_docs.py übernommen), hält Volltext in FTS5 und Vektoren aus bge-m3 in sqlite-vec, inkrementell über SHA-256 je Datei. image/km/search.py sucht Volltext führend, Vektor ergänzend, mit Filtern vor dem Ranking (0 Treffer statt gesperrt). Ingest: Kommentare bei der Erstbefüllung repo-weit statt je Vorgang — die erste Fassung hing bei live/live nach 371 Vorgängen; jetzt 2175 in zwei Minuten. Gemessen: Volltext über 61.000 Chunks in 3 s, Vektoren 0,31 s je Chunk auf der CPU-Box. Kein Bytecode mehr im Repo. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+10
-8
@@ -67,11 +67,15 @@ KM_GITEA_URL=https://git.home KM_NAMESPACE=familie KM_CLASSIFICATION=home \
|
||||
|---|---|---|---|
|
||||
| spine/core | 20 | 6 s | Erstbefüllung |
|
||||
| spine/core | 0 gesehen | 0,3 s | inkrementell, nichts geändert |
|
||||
| 42i/intern | 1165 | ~3 min | Erstbefüllung, ein API-Aufruf je Vorgang für die Kommentare |
|
||||
| 42i/intern | 1165 | ~3 min | Erstbefüllung, noch ein API-Aufruf je Vorgang für die Kommentare |
|
||||
| live/live | 2175 | ~2 min | Erstbefüllung mit repo-weitem Kommentar-Endpunkt (ein Aufruf je 50 Kommentare) |
|
||||
| elf Repos (live, intern, spine/*, hive/*) | 2241 | 94 s | ein Lauf |
|
||||
|
||||
Die Erstbefüllung kostet einen Aufruf je Vorgang mit Kommentaren; das ist
|
||||
die Last auf der Forge, von der #13 spricht. Sie fällt einmal an. Danach
|
||||
kostet ein Lauf einen Aufruf je Repo plus einen je geändertem Vorgang.
|
||||
Die erste Fassung holte die Kommentare je Vorgang und blieb bei live/live
|
||||
nach 371 Vorgängen an einer offenen Verbindung hängen. Seitdem gilt: bei der
|
||||
Erstbefüllung kommen die Kommentare **repo-weit** (`/issues/comments`, älteste
|
||||
zuerst), inkrementell je geändertem Vorgang. Dazu ein Verbindungs-Timeout und
|
||||
Fortschritt je 100 Vorgänge auf stderr.
|
||||
|
||||
## Was noch fehlt (Reihenfolge)
|
||||
|
||||
@@ -79,10 +83,8 @@ kostet ein Lauf einen Aufruf je Repo plus einen je geändertem Vorgang.
|
||||
`wake.km` geweckt werden (spine/core#12: Gitea-Webhook → HTTP→Bus-Adapter
|
||||
→ Bus → km) und dann den inkrementellen Lauf machen. Der periodische
|
||||
Abgleich bleibt daneben Pflicht.
|
||||
2. **Suche über die Ablage.** Volltext führend, Vektor ergänzend (spine/core#1).
|
||||
Der bestehende Indexer `info/ai/scripts/index_docs.py` chunkt Markdown mit
|
||||
Frontmatter — die Vorgangsdateien sind dafür gebaut. Welche Datenbank(en)
|
||||
dahinter stehen, ist noch nicht entschieden (Stand 04.09.).
|
||||
2. ~~Suche über die Ablage.~~ Gebaut: SQLite mit FTS5 und sqlite-vec, siehe
|
||||
[index-suche.md](index-suche.md).
|
||||
3. **Verknüpfung mit Doku und Memory.** Die `verweise:` sind erst Kanten
|
||||
zwischen Vorgängen. Kanten zu Doku-Seiten (ein Ticket, das eine Seite
|
||||
betrifft) und die Konsistenzprüfung gegen abgelegte Festlegungen kommen
|
||||
|
||||
Reference in New Issue
Block a user