---
okf: "0.1"
type: phase
visibility: private
status: active
updated: 2026-07-16
links: []
---

# Eval-set: pilot retrieval (faza 2, krok 7) — 2026-07-16

Stan bazy: document_chunk = 2683 chunki (bge-m3, dim 1024), 160 dokumentów z 186 kopert paperless.
Metoda: embed zapytania (bge-m3, Ollama SOLARIA) → `ORDER BY embedding <=> query_vector` → top-5.
Helper: /tmp/kbq.sh (curl /api/embeddings + psql przez ssh piha).

## Skalibrowane progi (cosine distance)
- **< 0.45** — trafienie
- **0.45–0.55** — szara strefa (na temat, nieprecyzyjne)
- **> 0.55** — brak odpowiedzi w korpusie

## Zapytania i wyniki (baseline dla bramki kaskady, faza 3 §6)

| # | Zapytanie | top-1 dist | top-1 envelope | Werdykt |
|---|-----------|-----------|----------------|---------|
| 1 | polisa ubezpieczeniowa PZU warunki odpowiedzialności | 0.3418 | paperless:14 (OWU PZU Auto) | trafienie; ujawnił dup 14≡74 |
| 2 | faktura za usługi telekomunikacyjne kwota do zapłaty | 0.3447 | paperless:192 (faktura P4) | trafienie; poz. 3/5 = chunki z OCR-śmieciem (kody kreskowe) |
| 3 | zasady punktacji FLL Challenge robot game (PL) | 0.4154 | paperless:5 | szara strefa — rodzina dokumentów OK, sedno nie |
| 4 | FLL robot game mission scoring points table (EN) | 0.4114 | paperless:5; poz.2+ = paperless:119 (scoresheet, mojibake) | trafienie; cross-lingual > PL; mojibake ≠ śmieć — trafia mimo zniszczonego OCR |
| 5 | innovation project scoring | 0.3869 | paperless:3 (arkusz ocen IP) | najlepszy wynik: top-5 spójnie z jednego właściwego dokumentu |
| N | przepis na sernik z rodzynkami (negatywna kontrola) | 0.6210 | — | poprawny brak; separacja od trafień wyraźna |
| N2 | piaskownica plastikowa (kontrola graniczna) | 0.5533 | — | poprawnie na granicy "brak" — semantycznie sąsiednie dokumenty wspólnoty, nie odpowiedź |

## Kryterium bramki kaskady (faza 3 §6)
Kaskada summary→chunk na tych samych zapytaniach: żaden płaski hit nie degraduje, hit@3 ≥ baseline, negatywne kontrole > 0.55.

## Findings (adresowane w fazie 3 §3)
- Chunki z binarnym OCR-szumem (zmielone kody kreskowe) rankują się przez doklejony realny tekst → filtr `ocr_junk`
- paperless:14 ≡ paperless:74 (duplikat dokumentu) → dedup
- Mojibake (paperless:119) NIE wykluczać — niesie sygnał (patrz zapytanie 4)
