Pelny korpus gmail zchunkowany i zembedowany: 389 012 chunkow,
0 nie-excluded bez wektora. Weryfikacja plastrami 0-4 (wszystkie EXIT 0)
plus fix bajtu NUL (4ec0b78). Krok 6 -> WYKONANE, Krok 7 (przyrostowka
IMAP/JMAP) oznaczony jako next.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
---
|
|
okf: "0.1"
|
|
type: session-log
|
|
visibility: private
|
|
status: active
|
|
updated: 2026-08-06
|
|
links: []
|
|
---
|
|
|
|
# Sesja 2026-08-06 — Etap B: weryfikacja korpusu + fix NUL (ZAMKNIĘTY)
|
|
|
|
## Przebieg plastrów
|
|
|
|
Plastry 0-4 (`--offset 0/50000/100000/150000/200000 --limit 50000 --batch-size 64`)
|
|
— **wszystkie EXIT 0** po fixie. Cały korpus 225k kopert przeskanowany
|
|
idempotentnie, zero strat.
|
|
|
|
## Bug znaleziony i naprawiony: NUL byte (0x00) w treści maila
|
|
|
|
Plaster offset 50k wywalił się na mailach z 2007 (Sony Ericsson, 3 chunki):
|
|
bajt NUL w tekście → `asyncpg.CharacterNotInRepertoireError` przy insercie
|
|
(PostgreSQL nie przyjmuje `0x00` w `text`).
|
|
|
|
Fix `4ec0b78`: strip `\x00` przed chunkowaniem i embedem + liczniki
|
|
`nul_bytes_stripped` / `mails_nul_sanitized`. Re-run plastra 1: **EXIT 0**,
|
|
3 chunki dobrane.
|
|
|
|
## Weryfikacja w DB (kb-postgres@PIHA, `document_chunk`)
|
|
|
|
| Miara | Wartość |
|
|
|---|---|
|
|
| `document_chunk` total | **389 012** |
|
|
| nie-excluded **bez** embeddingu | **0** |
|
|
| nie-excluded z wektorem | 187 025 |
|
|
| newsletter-flagged bez wektora | 201 849 (odwracalne) |
|
|
| excluded **z** wektorem | 138 (artefakt kolejności flagowania, nieszkodliwy) |
|
|
|
|
## Wniosek
|
|
|
|
**Korpus był w pełni zembedowany jeszcze przed dzisiejszymi plastrami.**
|
|
Zapamiętany stan „6,4k embedded z Etapu A, ~225k kopert do backfillu" był
|
|
nieaktualny — wcześniejsze przebiegi pokryły całość. Dzisiejsze runy to
|
|
w praktyce pełna, idempotentna weryfikacja korpusu (plus wykrycie i naprawa
|
|
buga NUL).
|
|
|
|
Źródło mylącego odczytu: licznik `chunks_already_embedded` liczy **istnienie
|
|
wiersza w DB** (w tym chunków newsletter-flagged bez wektora), a nie obecność
|
|
wektora — stąd niespójne wrażenie z liczników plastrów.
|
|
|
|
## Środowisko
|
|
|
|
- venv w głównym repo (`pip install -e` dla `kb-mail` / `kb-retrieval` /
|
|
`mail-body-ingest`).
|
|
- tmux `backfill`, logi w `~/kb/mail/ingest-logs/` (poza repo).
|
|
|
|
## Follow-upy
|
|
|
|
- `jobs/gmail-header-backfill` i `jobs/gmail-bulk-import` używają
|
|
`sanitize_surrogates` na nagłówkach zapisywanych do `jsonb` — **ta sama
|
|
latentna podatność na NUL**. Nieruszone w tej sesji, osobny task.
|
|
- **Rotacja hasła `kb-postgres`** — nadal otwarta (z sesji 2026-08-05).
|
|
|
|
## Następny krok fazy mailowej
|
|
|
|
**IMAP przyrostówka gmail + fastmail** (`source='fastmail'`) — teraz odblokowana.
|