Citation grounding pentru drept și audit: arhitectură și capcane
Săptămâna trecută am respins într-un audit intern un răspuns RAG care cita corect articolul 22 GDPR — dar din documentul greșit. Un extras de 2019, nu textul consolidat.
Citation grounding pentru drept și audit: arhitectură și capcane
Săptămâna trecută am respins într-un audit intern un răspuns RAG care cita corect articolul 22 GDPR — dar din documentul greșit. Un extras de 2019, nu textul consolidat. Asta e capcana citation grounding-ului în drept și audit: nu ajunge ca modelul să pună o notă de subsol, notele trebuie să fie verificabile mecanic împotriva sursei canonice.
Arhitectura minimă care rezistă la un audit ANSPDCP
Pentru o pipeline care servește juriști sau echipe de audit intern, arhitectura trebuie să facă trei lucruri simultan: să indexeze cu span-uri stabile, să lege fiecare afirmație generată de un identificator de fragment și să respingă răspunsul dacă legătura se rupe. Nu opțional — obligatoriu.
Fiecare fragment din index poartă un span_id determinist (SHA-256 din text + offset). La generare, modelul primește tool-ul cite(span_id, quote). Dacă quote nu apare literal în span, apelul eșuează la validator. Asta prinde majoritatea confabulărilor înainte să iasă răspunsul din sistem.
Un exemplu direct din logurile unei instanțe pentru o firmă de avocatură din București:
2026-09-18T09:14:22+03:00 grounding.validator: rejected span=a7f2c1
reason=quote_mismatch expected="prelucrarea este necesară"
found_in_span="prelucrarea poate fi necesară" doc=OPANAF-1581-2025
2026-09-18T09:14:23+03:00 grounding.validator: accepted span=e4b8d9
quote="temeiul legitim al operatorului" doc=Regulament-2016-679 art=6
Baza legală citată — Regulamentul (UE) 2016/679, Art. 6 — e sursă canonică. Fără hash pe versiunea consolidată de pe EUR-Lex, un update tăcut rupe toate citările anterioare fără să anunțe pe nimeni. În contextul mai larg al RAG-ului aplicat pe drept, asta e diferența între probă și opinie.
Trei capcane care apar mereu
Prima: PDF-ul scanat cu OCR de calitate variabilă. Un articol de lege scanat prost dă span-uri cu diacritice inconsistente (“prelucrării” vs “prelucrarii”). Validator-ul strict respinge, cel permisiv acceptă și rescrie textul. Soluție: normalizare NFC plus validare pe forma originală. ENISA tratează integritatea sursei ca prerechizit pentru orice sistem AI folosit în context reglementat.
A doua: citarea multi-hop. Când modelul sintetizează două articole ca să dea un răspuns, tentația e să atașeze o singură notă la afirmația compusă. Fals. Fiecare atom logic se citează separat, altfel un auditor ANAF sau ANSPDCP va pune degetul exact pe legătura nedovedită. Detalii aplicate în Lexnomia pentru NIS2.
A treia: sursa se schimbă, hash-ul nu. OPANAF 1.581/2025 a fost re-publicat cu o corectură între iulie și august 2025. Un sistem care nu re-indexează și nu invalidează cache-ul va cita text care nu mai există. Politica noastră: re-hash zilnic pe sursele oficiale, alertă pe diferență, versiune anterioară păstrată conform Directivei (UE) 2022/2555.
Poziția CAI
Nu construim citation grounding ca feature — îl tratăm ca poartă. Fără span validat, răspunsul nu iese din sistem. E o alegere costisitoare (crește rata de „nu știu”), dar e singura care rezistă în fața unui auditor cu ochelari și răbdare. Dacă vrei să vezi cum arată aplicat pe legislație românească, deschide Lexnomia.