fix(maria): acoperirea se judeca pe ce a intrebat omul acum, si pe radacina cuvantului
Doua reparatii pe poarta de acoperire, amandoua masurate pe setul de calibrare extins (31 de cazuri, de la 26). **Termenii distinctivi se comparau pe cuvantul intreg.** Documentatia si clientul nu folosesc aceleasi forme: documentul scrie „token" si „tokenuri", omul scrie „tokenul"; documentul „Generare", omul „generez". Trei continuari legitime din cinci escaladau desi chunk-ul cu raspunsul era chiar in context. Comparatia se face acum pe primele 5 litere; codurile raman intregi (ORA-01722 si ORA-01720 au aceleasi cinci). **Interogarea avea doua roluri amestecate.** Pe un fir, regasirea are nevoie de ancora („da, ma blocheaza" singur nu gaseste nimic), dar acoperirea nu: judecata pe ancora, ea cere sa apara in documente si salutul, si numele firmei, si luna, deci raportul scade la fiecare replica si firul lung escaladeaza degeaba. `rank.assess` primeste `dovada` — mesajul nou, plus OCR-ul capturii lui; cand acesta n-are termeni proprii, se cade inapoi pe interogarea intreaga. Setul de calibrare: 31/31 cu reparatia, 30/31 fara. Ce NU s-a facut, desi era propus in handover: lista de formule de politete in `rare_terms`. Masuratoarea nu o justifica — cu potrivirea pe radacina, cazurile cu ancora politicoasa trec si fara ea, iar intr-una din configuratii facea rau. Cauza reala nu era politetea din ancora, ci morfologia. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
This commit is contained in:
@@ -358,6 +358,22 @@ Fuziunea da mereu un clasament, si la o intrebare complet straina. De aceea deci
|
||||
distinctivi ai intrebarii (coduri, cuvinte rare in corpus) apar chiar in
|
||||
chunk-urile gasite.
|
||||
|
||||
Termenii se compara **pe primele 5 litere**, nu pe cuvantul intreg (codurile fac
|
||||
exceptie: `ORA-01722` si `ORA-01720` incep la fel). Documentatia si clientul nu
|
||||
folosesc aceleasi forme — documentul scrie „token" si „tokenuri", omul scrie
|
||||
„tokenul"; documentul „Generare", omul „generez". Comparate intregi, exact
|
||||
cuvintele care conteaza nu se gaseau: pe setul de calibrare, trei continuari
|
||||
legitime escaladau desi chunk-ul cu raspunsul era chiar in context.
|
||||
|
||||
**Pe un fir de discutie, interogarea are doua roluri diferite.** Regasirea se face
|
||||
pe ancora plus mesajul nou — ancora chiar ajuta, „da, ma blocheaza" singur nu
|
||||
gaseste nimic. Acoperirea se judeca insa pe **mesajul nou** (`dovada`, in
|
||||
`rank.assess`): altfel raspunde la ce a intrebat omul acum SI la formulele si
|
||||
numele proprii din primul mesaj („buna", „august", „AUTO SULEA" nu apar in niciun
|
||||
document), iar raportul scade la fiecare replica — firul lung escaladeaza degeaba.
|
||||
Cand mesajul nou n-are termeni distinctivi proprii, se cade inapoi pe interogarea
|
||||
intreaga, ca inainte.
|
||||
|
||||
Fractiunea din pasul 2 nu e cosmetica: cu un singur termen gasit, „cum imi resetez
|
||||
parola de la Windows" trecea drept acoperita fiindca „parola" apare in documente.
|
||||
|
||||
@@ -373,7 +389,7 @@ L-am scos, nu urcat, fiindca **cosinusul creste cu lungimea interogarii**: pe un
|
||||
de discutie se cauta dupa ancora plus mesajul nou, deci scorul urca la fiecare
|
||||
replica fara sa apara vreo dovada in plus. Aceeasi captura: 0,778 singura, 0,836
|
||||
impreuna cu mesajul de dinainte. Orice prag fix de sus e trecut de o discutie destul
|
||||
de lunga. `ops/calibrate-rank.py`: 26/26, si niciunul dintre cazurile cu raspuns in
|
||||
de lunga. `ops/calibrate-rank.py`: 31/31, si niciunul dintre cazurile cu raspuns in
|
||||
documente nu avea nevoie de scurtatura — toate trec pe dovada lexicala.
|
||||
|
||||
Modelul primeste `temperature=0` (`LLM_TEMPERATURE`). Fara ea, llama.cpp raspunde
|
||||
|
||||
Reference in New Issue
Block a user