Eval na pelnym korpusie 2026-08-06 (187 025 zembedowanych chunkow mailowych
w HNSW) dal PASS: kryterium 1 (regresja paperless) bez degradacji zadnego
istniejacego hitu we flat ani w hybrid, mailowe hit@3 5/5. Koszt hybrydy to
jedno dodatkowe zapytanie SQL na wyszukiwanie. Surowe wyniki:
eval-http-2026-08-06.json / eval-direct-2026-08-06.json w ~/kb/mail/ingest-logs
na PIHA (niecommitowane, artefakt runu).
- app/main.py: Query("cascade") -> Query("hybrid"); pattern bez zmian, wiec
jawne ?mode=cascade i ?mode=flat dzialaja dokladnie jak dotad.
- app/static/app.js: przy odznaczonym "tryb flat (debug)" UI nie wysyla juz
parametru mode w ogole -- dziedziczy default API. Default zdefiniowany
w jednym miejscu (serwer), nie zduplikowany w JS.
- testy: nowa klasa TestSearchEndpointModeDefault (TestClient bez lifespan,
fake pool/router) sprawdza kontrakt HTTP -- brak mode => tor hybrid
(weryfikowany po obecnosci koperty gmail osiagalnej wylacznie galezia
hybrid, nie po samej etykiecie), jawne mode=flat / mode=cascade => stare
tory, nieznany mode => 422. Frontend: buildSearchUrl pomija mode gdy brak.
- docs: kb/services/kb-query.md (tabela trybow + endpoint + przyklad
odpowiedzi + opis przelacznika w UI), env.example/service.yaml (komentarze
SUMMARY_MODEL; default mode nie jest konfigurowalny przez env),
kb/phases/kb-m5-faza-mailowa.md (DoD (d) SPELNIONE 2026-08-06 + wzmianki
w Kroku 3, Wyniku bramki, decyzjach Etapu B i tabeli planu).
Weryfikacja: pytest services/kb-query -> 46 passed; node --test
tests/frontend/app.test.js -> 6/6; docker build OK + smoke run (uvicorn
startuje, bez KB_DSN swiadomie konczy sie RuntimeError z env.example).
Deploy NIE wykonany -- operator wdraza z mastera na PIHA po mergu.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
44 lines
2.1 KiB
Plaintext
44 lines
2.1 KiB
Plaintext
# kb-query secrets + host-local binds — copy to .env (gitignored) next to
|
|
# docker-compose.yml and fill in real values. Never commit .env.
|
|
|
|
# LAN IP of PIHA. The published port (8230) binds ONLY to this interface —
|
|
# never 0.0.0.0. Verify after host rebuilds: ip -4 addr.
|
|
LAN_BIND_IP=192.168.31.5
|
|
|
|
# asyncpg DSN for kb-postgres@PIHA. kb-query runs in its own Docker network
|
|
# (separate compose project from kb-postgres), so it reaches kb-postgres's
|
|
# published port over the host's LAN interface, not "localhost" — same
|
|
# reasoning as paperless-worker@SOLARIA reaching paperless@PIHA over LAN.
|
|
KB_DSN=postgresql://kb:CHANGE-ME@192.168.31.5:5433/kb
|
|
|
|
# Primary embed backend: Ollama @ SOLARIA (GPU, over Tailscale MagicDNS —
|
|
# same trick as llm-gateway's OLLAMA_URL). Optional: defaults to this value.
|
|
# EMBED_PRIMARY_URL=http://solaria:11434
|
|
|
|
# Fallback embed backend: ollama-piha on this host (services/ollama-piha/),
|
|
# reached over PIHA's LAN interface (same pattern as KB_DSN above). SOLARIA is
|
|
# powered off ~16 h/day — without this, /search is dead the whole time. Leave
|
|
# unset/empty to disable the fallback leg entirely.
|
|
EMBED_FALLBACK_URL=http://192.168.31.5:11434
|
|
|
|
# Backend labels used in logs and the /search "embed_backend" response field.
|
|
# Optional: defaults solaria / piha.
|
|
# EMBED_PRIMARY_NAME=solaria
|
|
# EMBED_FALLBACK_NAME=piha
|
|
|
|
# Fallback state machine tuning (plan §2 D2). Optional; defaults shown.
|
|
# EMBED_HEALTH_TTL_S=30 # how long an up/down verdict on SOLARIA is cached
|
|
# EMBED_HEALTH_TIMEOUT_S=1.5 # /api/tags probe timeout
|
|
# EMBED_PRIMARY_TIMEOUT_S=3 # hard timeout for a primary embed call
|
|
|
|
# Embedding model kb-query enforces as a startup invariant (plan §2 decision
|
|
# 2) against document_chunk.model / document_summary.embedding_model.
|
|
# Optional: defaults to bge-m3.
|
|
# EMBED_MODEL=bge-m3
|
|
|
|
# document_summary.model kb-query's cascade/hybrid stage 1 pre-filters on (the
|
|
# compilation track, plan §2 D3). Optional: defaults to claude-haiku-4-5.
|
|
# The /search `mode` default itself is NOT configurable via env — it is the
|
|
# API contract (hybrid since 2026-08-06, kb/services/kb-query.md).
|
|
# SUMMARY_MODEL=claude-haiku-4-5
|