TECH 8 хв

RAG підсвічує, тренінг орієнтує: що робити з неоднорідністю судової практики

Під попередньою статтею прийшов коментар: "задача змістилася від доступу до практики до управління її неоднорідністю". Точне формулювання. Розбираємо, чому ваги авторитетності у RAG — полмера, що саме додає тренінг власної моделі, і чому в проді потрібні обидва шари.

RAG підсвічує, тренінг орієнтує: що робити з неоднорідністю судової практики

Під статтею про векторизацію ЄДРСР прийшов гострий коментар: "задача змістилася від простого доступу до практики до управління її неоднорідністю". Це точне формулювання. Розбираємо, чому ваги авторитетності у RAG — полмера, і що саме додає тренінг власної моделі на цьому корпусі.


Проблема: корпус чесно показує хаос

96 мільйонів судових рішень у відкритому доступі — це не просто велика база. Це дзеркало реального стану правозастосування. І в цьому дзеркалі видно:

Плоский retrieval — будь то FTS, kNN по ембедингах, чи гібрид — нічого з цього не розрізняє. Він повертає топ-K за схожістю, і юрист сам розбирає, що вага, а що шум.

Перший рівень: RAG із вагами авторитетності

Наша поточна відповідь — додати кожному чанку у Qdrant payload-вагу, обчислену оффлайн за кількома сигналами.

Інстанція. Велика палата ВС > колегія ВС > апеляційний > перший. Базова ієрархія.

Щільність мотивації. Це не довжина тексту. Це частка абзаців, що містять посилання на статтю/пункт, трасування прецеденту, цитату законодавства, застосування тесту. Рахується регулярками + ML-класифікатором, натренованим на експертно розмічених зразках "сильна мотивація" / "шаблонна".

Індекс цитованості. Скільки інших рішень посилаються на це. Ми будуємо citation graph по корпусу, вага вузла — PageRank з авторитетним seed-ом (ВП ВС).

Відміняємість. Якщо рішення було скасовано касаційно — вага падає. Якщо позиція була явно відкинута пізнішим ВС — відхиляється ще сильніше.

Узгодженість із ВС. Наскільки правова позиція чанку збігається з пануючою позицією ВС у цій темі на дату ухвалення.

Ці ваги кладуться у payload, і retrieval стає не "ось 10 найсхожіших", а "ось 10 найсхожіших з вагами авторитетності і належністю до кластера доктрини". Юрист бачить: у моїй темі є позиції А і Б. Позиція А має вагу 0.82 (ВП ВС, густа мотивація, 340 цитувань), позиція Б — 0.41 (одинокий апеляційний, три цитування, шаблон). Юрист сам вирішує, як будувати аргументацію.

Це крок уперед. Але це все ще інструмент — юрист має знати, як читати ваги.

Межа цього підходу

Проблема зовнішніх ваг — вони скалярні і контекстно-сліпі.

У вузькій темі, де ВП ВС не висловлювалась, свіже мотивоване рішення першої інстанції може бути найкращим доступним ресурсом — але його вага за формулою буде низькою.

Дві позиції можуть мати близькі ваги, але одна з них — "консервація минулого", інша — "лінія, що набирає сили". Вага цього не показує.

Суперечність між двома рішеннями з вагою 0.7 не підсвічується явно — юрист має сам побачити у пейлоаді, що вони конфліктують.

Ваги — гарний фільтр, але вони не навігують неоднорідність. Вони її лише ранжують.

Другий рівень: тренінг доменної моделі

У попередній статті ми розбирали, як виглядає тренінг MoE-моделі розміру DeepSeek V3 на 2 ТБ корпусу. Тут — про те, що саме цей тренінг додає порівняно з RAG+вагами.

Sampling із зваженням на pretrain. Під час pre-training ми не годуємо модель весь корпус поспіль. Ми семплимо частіше рішення з високою authority-вагою — у 3-5 разів. Модель бачить сильну аргументацію як статистично-домінуючий патерн і засвоює її не як фільтр, а як свій default стиль. Це міняє розподіл внутрішніх активацій — модель пише мотивовано за замовчуванням, а не тому що ми її так попросили.

DPO на парах від senior юристів. Після pre-train йде supervised fine-tuning, потім — Direct Preference Optimization на парах (відповідь А, відповідь Б) на одне і те ж питання, з розміткою "краща відповідь" від практикуючих юристів високого рівня. Це буквально вшиває редакторське судження у ваги моделі. RAG так не вміє — він повертає top-K і передає вибір LLM, яка доменних критеріїв якості не знає.

Конфлікт як output, а не побічний шум. Модель, натренована на корпусі з явною розміткою "позиція А vs позиція Б по темі X", на forward pass сама виводить: "у цій темі є розкол. КЦС тримає А (приклади: рішення 1, 2, 3). КГС тримає Б (приклади 4, 5). Пленум ВП ВС 2023 схилився до Б. Нижні інстанції інерційно застосовують А, особливо в регіонах X, Y. Для вашого фактичного складу опора на Б, бо Z". Це reasoning над доктриною, а не пошук схожих чанків.

Темпоральна компетентність. Retrieval із датою як фільтром — це явно задавати "шукай до 2022". Модель із 280B токенів українського права, де дата — частина контексту кожного рішення, засвоює: "до редакції статті 611 ЦК 2020 року позиція була Y, після — Z". Це потужно на питаннях типу "як зараз застосовується стаття N" — де вся суть у тому, що у "зараз" є своя історія.

Cross-doctrinal coherence. Модель бачить зв'язки між доктринами в одному forward pass: "позиція по вашому питанню конфліктує з позицією ВС по суміжному питанню X — зверніть увагу, у вашому фактичному складі це може спрацювати". Це не "знайди схоже" — це знаходження логічних дисонансів у практиці.

Важливий caveat: тренінг без фільтрації = впевнені галюцинації

Не можна просто натренувати модель на всьому корпусі і чекати, що з цього магічно виникне правове мислення. Якщо ми не фільтруємо шум і слабко мотивовані рішення на вході, модель засвоює їх як "нормальну" аргументацію — і починає впевнено відтворювати слабке правозастосування. Це гірше за чесний RAG, який хоча б лишає вибір юристу.

Тому pipeline має бути хірургічним.

Authority-weighted sampling на pre-train — сильне бачиться частіше. SFT-датасет — тільки від senior юристів, не від rank-and-file анотаторів. Eval set включає "multi-valid" кейси, де правильна відповідь — "ось позиції з вагами, ось тренд, опирайтесь на Б через контекст". Модель навчається маркувати протиріччя, а не обирати одну сторону мовчки.

Це важливо сказати вголос, бо зазвичай розмова про домен-моделі звучить як "натренуємо — і все буде добре". Не буде. Буде інший набір граблів, якщо не вбудувати епістемологічну обережність у саму процедуру тренінгу.

Delivery у проді: обидва шари

У виробничій системі це не взаємозаперечно.

RAG із вагами — залишається для питань, де потрібна повна прозорість джерел: юрист хоче бачити кожне конкретне рішення з цифрами і метаданими. Це коли готується позиція до суду.

Доменна модель — для початкової навігації, reasoning над доктриною, пояснення "що важливо у цій темі і на що опиратися". Це коли юрист заходить у нову для себе область, або потрібен швидкий синтез.

Оркестрація у проді вирішує, який шар активувати залежно від типу запиту. Простий пошук прецедентів — RAG. Питання "як у цій темі сформувалася практика і куди вона рухається" — модель. Комбінація — перемикання між ними в рамках одного сеансу.

Чому коментатор правий

Задача дійсно змістилася. Років п'ять тому ринок просив: "дайте мені шукати по ЄДРСР швидше і точніше". Це було про доступ.

Зараз, коли доступ є, корпус вичерпно проіндексований, і векторний пошук працює — питання стає інше: "як не просто знайти релевантне, а зрозуміти, на що реально можна опертися і чому". Це вже не retrieval problem. Це epistemic problem.

RAG з вагами авторитетності — перший інструмент відповіді. Він дає юристу прозору картину з ранжуванням.

Тренінг доменної моделі — другий інструмент. Він перетворює модель із пошуковика на ко-юриста, який сам орієнтується в доктринальному ландшафті і пояснює вибір.

Кінцева мета — не замінити юриста моделлю. Мета — дати юристу інструмент, який сам розбирається в неоднорідності практики і підсвічує, на що можна впевнено опиратися, а де треба йти у первинні джерела і перевіряти вручну.

Від доступу — до опори. Це правильне формулювання наступної ітерації.


Автор: Володимир Овчаров. legal.org.ua