RAG juridic RO: pipeline PDF-la-citare pentru enterprise
Un consilier juridic din energie a întrebat săptămâna trecută de ce chatbot-ul intern îi returnează articole din Codul fiscal care nu mai există.
RAG juridic RO: pipeline PDF-la-citare pentru enterprise
Un consilier juridic din energie a întrebat săptămâna trecută de ce chatbot-ul intern îi returnează articole din Codul fiscal care nu mai există. Răspunsul e mereu același: pipeline-ul nu are evidență de citare la nivel de paragraf, iar retrieval-ul se face pe un dump de PDF-uri fără versionare. Un RAG juridic care nu poate arăta paragraful exact din care a scos afirmația nu e un asistent — e un generator de risc.
Ingest: de la PDF scanat la chunk-uri cu metadate legale
Corpul juridic RO e brutal cu pipeline-urile naive. Legile publicate în Monitorul Oficial apar ca PDF-uri scanate, cu diacritice pierdute și tabele care traversează pagini. OCR-ul cu Tesseract pe fișiere sub 300 DPI ratează sistematic „ă” și „â”. Soluția pe care o rulăm la clienți: preprocesare cu OCRmyPDF la 400 DPI, apoi extracție structurată cu un parser care recunoaște ierarhia Titlu → Capitol → Secțiune → Articol → Alineat → Litera.
Fiecare chunk primește metadate: mo_numar, data_publicare, data_intrare_in_vigoare, articol, alineat, plus versiune_consolidata — pentru că Legea 227/2015 privind Codul fiscal are zeci de modificări cumulate. Fără versionare, modelul citează un alineat abrogat în 2023 ca fiind în vigoare.
chunk_id: L227-2015_art296^1_alin4_v2025-01-01
source_uri: https://legislatie.just.ro/Public/DetaliiDocument/171282
articol: "296^1"
alineat: 4
in_vigoare_de_la: 2025-01-01
in_vigoare_pana_la: null
tokens: 187
embedding_model: bge-m3
Retrieval + generare cu evidență la nivel de propoziție
Un pipeline RAG pentru domeniul juridic nu poate livra un răspuns sintetic fără span-uri de citare. Arhitectura pe care o folosim separă retrieval-ul (hybrid: BM25 + dense pe bge-m3) de o etapă de reranking cu un cross-encoder antrenat pe perechi întrebare-articol RO. Generatorul primește top-k chunk-uri și e forțat printr-un prompt constrângător să emită afirmații însoțite de [chunk_id] — care în UI devin linkuri click-abile către paragraful original.
Verificatorul final distinge un demo de producție. Orice propoziție care citează un chunk care NU se află în contextul retrieved e blocată — nu returnată cu disclaimer. Este principiul pe care Lexnomia îl aplică pentru conformitate cu GDPR Art. 5(1)(a) și cu obligațiile de trasabilitate din Directiva (UE) 2022/2555 NIS2, unde răspunderea rămâne la operator conform ghidului ANSPDCP.
Poziția noastră
RAG juridic fără citare la nivel de propoziție e teatru. La CAI construim pipeline-uri unde fiecare afirmație e ancorată în chunk-ul original cu articol, alineat și versiune consolidată — dacă avocatul nu poate face click pe sursă în sub o secundă, sistemul nu pleacă la producție. Dacă vrei să vezi arhitectura completă pe un caz concret, treci pe pagina Lexnomia.