Skip to content

v0.22.0 - jakosc odpowiedzi bota RAG (Krok 19)

Choose a tag to compare

@mtsle mtsle released this 20 Jul 16:53
· 111 commits to main since this release

v0.22.0 — jakość odpowiedzi bota RAG (Krok 19)

Bot przestał odpowiadać jednym słowem i fałszywie odmawiać. Naprawa jest zmierzona
na żywej stronie, nie zadeklarowana.

Wynik

przed (v0.21.1) po (v0.22.0)
pytania on-topic z sensowną odpowiedzią 1/7 7/7
pytania spoza tematu odmówione 5/5
próba podszycia się pod instrukcję odmówiona
odpowiedzi typu „Tak." 2 0
błędy 502 0 0

Pomiar: plany/krok19/BENCH.md, dane surowe zasoby/bench/bench-070-final.tsv,
żywa kopia witryny klienta, 2026-07-20.

Przyczyna główna — udowodniona liczbowo

gemini-2.5-flash to model myślący, a tokeny rozumowania liczą się do
maxOutputTokens. Przy sufcie 500 model potrafił zużyć 476 na samo myślenie
na odpowiedź zostawało mu pięć tokenów, więc oddawał sentinel odmowy mimo
pełnego pokrycia tematu. Jedna przyczyna tłumaczyła naraz trzy objawy: jednozdaniowe
odpowiedzi, fałszywe odmowy i błędy 502.

Po zmianie thoughts = 0 w każdym wierszu pomiaru, a długość odpowiedzi rośnie
z 5–6 do 45–160 tokenów.

Co weszło

  • thinkingConfig z mapą modeli nieprzyjmujących budżetu zerowego, kaskadą na 400
    i transientem uczącym się;
  • MAX_TOKENS przestaje być traktowane jako sukces; podłoga ASK_MIN_TOKENS;
  • filtr top-K progiem twardym per fragment — koniec zatruwania kontekstu
    fragmentami o niskiej trafności (dług D2);
  • zachowana kolejność trafności; nowy prompt; dwa progi + podłoga ASK_MIN_THRESHOLD;
  • taskType asymetryczny (pytanie ≠ dokument) + podpis indeksu + migracyjny
    reindeks (dług P3);
  • komunikat migracji w kokpicie, gdy baza wektorów jest policzona starszą metodą;
  • jednorazowy flush cache'u per wersja;
  • retry 429/503 z odczytem opóźnienia z ciała odpowiedzi — Gemini nie wysyła
    nagłówka Retry-After (dług F3);
  • F1-lite: budżet czasowy i tempo reindeksu.

Progi skalibrowane pomiarem, nie zgadnięte

rag_threshold_hard  0.55 → 0.65   = max( 0,55 ; max_off 0,6184 + 0,03 )
                                    źródło: zasoby/bench/bench-058-mcal2.tsv
rag_threshold       0.70          (bez zmiany — min_on 0,7119 tuż nad podłogą)

Efekt taskType: margines rozdzielenia pytań w temacie od pytań spoza tematu
urósł 0,0784 → 0,0935 (+19 %).

Nowe ustawienia

rag_threshold_hard, rag_thinking_budget, rag_contact_hint.

rag_contact_hint jest domyślnie puste. Wypełnij je zaraz po instalacji —
to dane, którymi bot odsyła użytkownika, gdy strona pokrywa pytanie tylko częściowo.
To krok konfiguracyjny, nie opcja.

Uwaga o cofnięciu wersji (downgrade)

Po cofnięciu wtyczki do wersji wcześniejszej niż 0.22.0 — i po każdym uruchomieniu
„Zaindeksuj treść" na tamtej wersji — uruchom „Zaindeksuj treść" raz jeszcze po
powrocie na 0.22.0. Baza wektorów jest liczona inną metodą i wtyczka nie ma jak
wykryć, że przeliczyła ją starsza wersja.

Ścieżka wycofania nie została przetestowana end-to-end — zapisane wprost,
żeby nie wyglądało na przeoczenie. Zaplanowane na Krok 20.

Dostępność

Naprawiony kontrast tekstu odpowiedzi na ciemnym motywie systemowym: 1,98:1 → 14,05:1.
Wada pochodziła z v0.21.0 i ujawniała się dopiero na motywie klienta — element odpowiedzi
jako jedyny w panelu polegał na dziedziczeniu koloru, a motyw nadpisywał go na potomkach.

Weryfikacja

Runner 27 segmentów / 33 pliki, 0 niezaliczonych · 334 asercje dla tego Kroku ·
28/28 mutacji wykrytych, zero dziur w pokryciu · bench dwuwarstwowy na żywej witrynie ·
Playwright jako gość 7/7, w tym kontrola, że pole diagnostyczne debug nie wycieka
do niezalogowanych (inaczej witryna wystawiałaby publicznie mapę własnej bazy wiedzy).

AIFAQ_DB_VERSION zostaje '4' — zmienia się zawartość kolumny embedding, nie schemat.
Liczba tras REST bez zmian (13).

Znane ograniczenia

  • wewnętrzny limiter zapytań (30/godzinę na gościa) jest niedostrojony do darmowej kwoty
    dostawcy (rzędu 20/dobę) — kalibracja w Kroku 20;
  • gemini-2.5-pro i gemini-2.0-flash mogą mieć na darmowym kluczu przydział zero, a kokpit
    oferuje je jako równorzędne — oznaczenie w Kroku 20;
  • reindeks jest synchroniczny (duża witryna = kilka kliknięć); tryb w tle w Kroku 20;
  • domyślny próg twardy 0.65 skalibrowano na jednym korpusie (69 fragmentów) — na witrynie
    o innym profilu treści może wymagać korekty w ustawieniach.