Phase 8: Lokale KI
Wiki mit semantischer Suche ueber pgvector, Diktat ueber faster-whisper, Berichtsassistent und Belegerfassung — alles gegen selbst betriebene Modelle. Dazu zwei Protokollansichten: was die Maschine getan hat und was Menschen getan haben. Nichts, was ein Modell erzeugt, gelangt ungeprueft in einen Nachweis. Jede Ausgabe ist zuerst ein eigener Datensatz, gekennzeichnet, mit zwei gleich grossen Knoepfen davor. Die Datenbank haelt gegen: Eingabe, Ausgabe und Modell sind unveraenderlich, geloescht wird nicht, entschieden wird einmal. Kein Rueckfall auf einen Anbieter: fehlen die Container, fehlt die Funktion. Dafuer bleibt alles andere ohne Modell vollstaendig benutzbar — geprueft von vierzehn E2E-Tests, die ohne laufendes Modell durchlaufen. Postgres bringt jetzt PostGIS und pgvector mit (eigenes Image), Ollama und faster-whisper stehen im Compose-Profil "ki". 73 neue Unit-Tests, 14 neue E2E-Tests, Version 0.9.0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
12243f177d
commit
f7ccd9a908
@@ -2,7 +2,8 @@
|
||||
# =============================================================================
|
||||
# Läuft EINMALIG beim allerersten Start des Postgres-Containers (leeres
|
||||
# Datenverzeichnis). Richtet ein:
|
||||
# - die benötigten Erweiterungen (PostGIS, pgcrypto, citext, unaccent, pg_trgm)
|
||||
# - die benötigten Erweiterungen (PostGIS, pgvector, pgcrypto, citext,
|
||||
# unaccent, pg_trgm)
|
||||
# - den Anwendungsbenutzer "florian_app" OHNE BYPASSRLS
|
||||
# - Vorgabeprivilegien, damit künftige Tabellen automatisch nutzbar sind
|
||||
#
|
||||
@@ -28,6 +29,7 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-'
|
||||
CREATE EXTENSION IF NOT EXISTS citext; -- E-Mail ohne Gross/Klein
|
||||
CREATE EXTENSION IF NOT EXISTS unaccent; -- Suche ueber Umlaute hinweg
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm; -- unscharfe Namenssuche
|
||||
CREATE EXTENSION IF NOT EXISTS vector; -- semantische Suche im Wiki
|
||||
EOSQL
|
||||
|
||||
# Anwendungsrolle anlegen. Bewusst OHNE DO-Block: psql ersetzt seine Variablen
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# =============================================================================
|
||||
# PostgreSQL 17 mit PostGIS **und** pgvector.
|
||||
#
|
||||
# Warum ein eigenes Image: FLORIAN braucht beides. PostGIS seit Phase 6 für
|
||||
# Hydranten und Umkreissuche, pgvector seit Phase 8 für die semantische Suche
|
||||
# im Wiki. Es gibt kein offizielles Image, das beides mitbringt —
|
||||
# postgis/postgis kennt kein vector, pgvector/pgvector kein PostGIS.
|
||||
#
|
||||
# Die Alternative wäre gewesen, die Ähnlichkeitssuche in der Anwendung zu
|
||||
# rechnen: alle Abschnitte laden, Kosinusabstand in TypeScript. Das geht bei
|
||||
# zweihundert Wiki-Seiten und wird bei zweitausend zäh — und es verlegt eine
|
||||
# Aufgabe in die Anwendung, für die die Datenbank einen Index hat.
|
||||
#
|
||||
# Das Basisimage ist Debian mit eingerichtetem PGDG-Repository; die Erweiterung
|
||||
# kommt als fertiges Paket daher, nicht als Übersetzungslauf.
|
||||
# =============================================================================
|
||||
FROM postgis/postgis:17-3.5
|
||||
|
||||
# Version festhalten: ein stillschweigender Sprung auf eine neue pgvector-
|
||||
# Fassung würde beim nächsten Neubau des Images passieren, nicht dann, wenn
|
||||
# jemand darüber entscheidet.
|
||||
ARG PGVECTOR_PAKET=postgresql-17-pgvector
|
||||
|
||||
RUN set -eux; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends "${PGVECTOR_PAKET}"; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Die Erweiterung selbst wird nicht hier angelegt, sondern in der Migration
|
||||
# (CREATE EXTENSION IF NOT EXISTS vector). Grund: eine bestehende Installation
|
||||
# bekommt zwar das neue Image, aber nicht noch einmal den Init-Lauf — das
|
||||
# Datenverzeichnis ist ja nicht leer. Über die Migration greift es in beiden
|
||||
# Fällen.
|
||||
Reference in New Issue
Block a user