Це технічний супутник до огляду консультанта з правових питань. Огляд пояснює, що робить цей інструмент і чому він безкоштовний; ця стаття призначена для тих, хто створює подібні системи та хоче зрозуміти прийняті архітектурні рішення.
Коротко: для ШІ високого ризику у вузькій предметній області найскладніше — не модель, а дисципліна навколо неї. Створити загальний чат-бот, який звучить як юрист, легко. Створити такий, якому можна довірити питання відповідності нормам, — ні. Майже кожне рішення нижче працює саме на цю різницю.
Обмеження, що сформували все
Перш ніж будь-яка архітектура, саме проблема диктувала правила:
- Помилкові відповіді коштують дорого. Це стосується відповідності нормам та верховенства права. Впевнена галюцинація — це не баг, а ризик відповідальності.
- Законодавство змінюється. Гуманітарне правове поле України постійно оновлюється з лютого 2022 року. Корпус даних — рухома мішень.
- Дві мови. Вихідні тексти українською; багато користувачів працюють англійською.
- Користувачі не є експертами. Координатори, а не юристи.
- Потрібна можливість перевірки. Користувачі мають мати змогу перевірити отриману інформацію.
- Потрібна дешевизна та довговічність. Це безкоштовний публічний інструмент, тому неконтрольовані витрати або крихкість знищили б його.
Архітектура одним поглядом
INGEST SERVE
official legislation user question
→ extract & normalize → embed the query
→ chunk → retrieve across 3 corpora (law-first)
→ embed (Gemini) → reason over sources (tool agent)
→ vector store (Qdrant) → answer + cited sources
▲ │
└── incremental updates └── same-origin proxy → chat UI
Стек навмисно простий: Google Gemini для ембеддингів та генерації, Qdrant як векторне сховище, low-code шар оркестрації для графа обслуговування та тонкий веб-шар з тією ж доменною назвою (same-origin). Простота — це перевага: цінність у виборах, а не в новизні.
Рішення, що мають значення
Пошук (Retrieval), а не донавчання (Fine-tuning)
Корпус даних змінюється щотижня. Донавчання моделі на законодавчих актах означало б повторне навчання при кожній зміні закону, і все одно це розмило б межу між «модель це вивчила» та «модель вгадує». Retrieval-Augmented Generation (RAG) зберігає знання у сховищі, яке можна оновити за лічені хвилини та безпосередньо перевірити, і робить цитування природним: модель відповідає на основі щойно знайдених уривків. Для області, де походження даних є головним, RAG — це не скорочений шлях, а правильна архітектура.
Ембеддинги: якість і мова насамперед
Корпус було мігровано на модель ембеддингів від Gemini у її повній розмірності. Це зумовлено двома причинами. По-перше, багатомовна якість — одна й та сама модель має розміщувати український статут і англійське запитання близько одне до одного у векторному просторі. По-друге, асиметрія запит/документ: запитання та правові уривки обробляються з різними типами завдань, тому коротке запитання ефективно знаходить довгий щільний текст. Саме такі деталі тихо визначають, чи працюватиме пошук взагалі.
Фрагментація (Chunking), адаптована до закону, а не до стандарту
Юридичний текст має природні одиниці — статті та розділи. Якщо фрагментувати занадто дрібно (звичка, успадкована від старіших, менших моделей ембеддингів), ви розірвете статтю на фрагменти, кожен з яких втратить контекст. Розмір фрагмента тут налаштовано так, щоб більшість окремих положень залишалися цілими, водночас комфортно вписуючись у бюджет вхідних даних моделі ембеддингів. Фрагментація — непоказна річ, але одне з найефективніших рішень у будь-якій системі RAG.
Три корпуси, де закон на першому місці
Не всі джерела мають однакову авторитетність, і їх змішування було б оманливим. База знань розділена на три частини:
- Первинне законодавство — авторитетний текст статутів.
- Культивований гуманітарний набір — положення, відібрані вручну для операцій НГО, збагачені метаданими про релевантність.
- Вторинний аналіз — експертні коментарі, які рецензують закон.
Система завжди надає пріоритет первинному закону і трактує аналіз як чітко позначений коментар із зазначенням дати. Кодування ієрархії авторитетності у шар пошуку — замість надії на те, що модель виведе це сама — є тим, що заважає подавати «думку експерта» як «закон».
Агент-інструмент, а не ланцюжок з одним пошуковиком
Очевидна перша версія — це один пошуковик, що живить один промпт. Вона не може обслуговувати три корпуси з різними ролями. Тому граф обслуговування — це агент, що використовує інструменти: модель має окремий інструмент пошуку для кожного корпусу і самостійно вирішує, до якого звернутися, завжди починаючи з первинного закону. Компроміс чесний — кілька викликів моделі на одне запитання замість одного, тож кілька зайвих секунд затримки. Натомість ви отримуєте розділення джерел, поведінку «спочатку закон» та можливість сказати «джерела не охоплюють це», замість того щоб форсувати відповідь. Для цієї області такий компроміс вартий того.
Метадані, дати та ранжування
Кожен фрагмент містить структуровані метадані: галузь права, дата прийняття/внесення змін та (для культивованого набору) оцінка операційної релевантності. Дати нормалізовано до сортуваного формату, щоб сховище могло виконувати реальні запити за діапазоном — «тільки закони після Х» — замість порівняння рядків. Ранжування за операційною релевантністю означає, що корпус відображає польовий досвід, а не просто те, що скрапер знайшов першим.
Цитування як повноцінний результат
Кожна відповідь повертає конкретні джерела, на яких вона базується — назву, дату, посилання — у вигляді нумерованих карток, де аналіз візуально відрізнено від статуту. Це не прикраса. У сфері, чутливій до довіри, можливість перевірки є продуктом; цитування, яке користувач може відкрити, коштує більше за будь-яку кількість впевнених формулювань.
Захисні механізми (Guardrails), закладені за дизайном
Три сім'ї захисних механізмів, усі чітко визначені, а не сподівані:
- Обґрунтованість (Grounding). Асистент відповідає на основі знайденого тексту і інструктований повідомляти, коли матеріал не охоплює запитання — ніколи не вигадувати закон, статтю чи дату.
- Скромність. Відповіді, що мають наслідки, спрямовують користувача до кваліфікованого юриста. Це перший крок, а не заміна.
- Межі. Це залишається правовим асистентом: його не можна збити з теми, і він не розголошуватиме свої внутрішні механізми. Захисні механізми, які не можна чітко сформулювати, — це механізми, яких у вас насправді немає.
Обслуговування та доступ
Веб-шар ніколи не бачить API-ключ — запити проксуються same-origin, а облікові дані додаються на стороні сервера. Доступ потім регулюється багаторівневим контролем: перевірка походження (origin check), щоб запобігти вбудовуванню інструмента на інших сайтах, плюс обмеження частоти запитів (rate limiting) як запобіжник зловживанню та стеля витрат. Принцип, який варто озвучити: перевірка походження — це контроль у межах браузера, тому вона розглядається як один із шарів, а не як автентифікація. Глибинний захист, відповідний для безкоштовного публічного демо.
Вартість та довговічність
Безкоштовний інструмент має залишатися безкоштовним. Це означає використання ефективної за вартістю моделі генерації, потокове передавання відповідей, щоб інтерфейс здавався швидким навіть під час роботи агента, та встановлення ліміту витрат, щоб сплеск трафіку не перетворився на несподіваний рахунок. Актуалізація корпусу забезпечується інкрементальними оновленнями, а коли змінюється сама модель ембеддингів, виконується перебудова без простою у нову колекцію перед перемиканням — плюс контрольні точки якості на етапі вилучення, щоб пошкоджені документи ніколи не потрапляли до сховища.
Чесні компроміси
Жодна система не є завершеною, і вдавати протилежне — це тривожний сигнал. Кілька речей, які я хотів би відкрито зазначити: дизайн агента з багатьма викликами обмінює затримку на якість; якість перекладу назв для цитувань є хорошою, але не замінює читання статуту мовою оригіналу; а належний інструмент офлайн-оцінки — вимірювання точності пошуку та вірності відповідей на розміченому наборі запитань — є природним наступним кроком інвестування для такої системи.
Чому це варто описати
Інструменти, представлені тут, є загальнодоступними; будь-хто може їх поєднати. Те, що робить доменний продукт на основі ШІ надійним, — це професійне судження: розуміння того, що сегментування даних важливіше за вибір моделі, що ієрархія повноважень має бути закладена в рівень пошуку, що можливість перевірки важливіша за плавність мовлення, і що обмежувальні правила мають бути чітко визначені, а не припускати їх наявність. Таке судження формується завдяки безпосередньому досвіду розв'язання проблеми, а не лише теоретичному ознайомленню з нею.
Саме таку роботу я виконую для організацій: беру реальну операційну проблему та створюю продукт на основі ШІ, який є точним, перевірюваним і достатньо надійним, щоб на нього можна було покладатися.
