Заказчик поставил задачу — разработать интеллектуального «нейро-юриста», который:
- ищет релевантные нормы и судебные решения среди миллионов документов.
- анализирует загруженные пользователем файлы.
- генерирует юридические документы (иски, жалобы, претензии и т.д.).
- ведёт осмысленный диалог и помнит контекст.
- и при этом не придумывает законы и номера дел.
Для юристов это критично: любая выдумка — это уже не помощник, а источник проблем.
Честно скажу: проект был очень сложный. Я играл не ведущую роль — помогал с поддержкой промптов, тестированием и финальной стабилизацией системы. Основную тяжёлую инженерную часть тянули ребята, которые заложили архитектуру, пайплайны данных и ядро RAG-логики.
Но именно поэтому этот проект запомнился — ощущение, что мы вместе строили большой и умный механизм, который должен думать аккуратно, как хороший адвокат.
Архитектура: из чего состоял наш «нейро-юрист»
Мы разложили систему на четыре слоя. Такой подход спасал от хаоса.
1️⃣ UI-слой — там, где пользователь
Это был Telegram-бот и внутренняя админ-панель на Джанго.
Бот — для диалога.
Админка — для управления коллекциями, логами, диагностикой и всем, что помогает не паниковать, когда что-то идёт не так.
2️⃣ Логика приложения — «мозг диспетчера»
Этот слой решал:
- что пользователь хочет? (поиск, анализ, генерация?)
- какие коллекции трогать?
- нужно ли сначала задать уточняющие вопросы?
- в какой фазе диалога мы сейчас?
Именно здесь система понимала, что:
иногда нужно сначала спросить, а уже потом умничать.
3️⃣ Data Layer — святая святых RAG-контура
Мы работали с миллионами документов(перед этим вытащили их из Консультанта):
- судебные решения
- нормы права
- типовые договоры
- пользовательские документы
Для поиска мы использовали векторную базу Qdrant.
Каждый документ дробился на фрагменты, векторизовался, снабжался метаданными и отправлялся в хранилище. Затем GPT 4.1 mini вытаскивал оттуда нужную инфу.
На практике:
🔴 метаданные иногда «плыли»
🔴 одни и те же акты оказались размечены по-разному
🔴 появлялись несовпадения, из-за которых модель путалась
Поэтому мы сделали единый пайплайн загрузки META_SYNC → MAIN_LOADER, выровняли поля, навели «бухгалтерский порядок» в данных и очень тонко настроили чанкинг, особенно для резолютивных частей судебных актов. Потому что юридическая правда часто живёт именно там.
4️⃣ LLM-слой
Здесь:
- собирался контекст
- формировался промпт
- запускалась модель
- результат приводился к строгому JSON-формату
И да — строго к JSON-формату.
Никакого «смотрите, я вам сейчас объясню человеческим языком». Только структура, поля, схемы, валидность.
Самая большая боль — промпты
Система должна была:
✔ отвечать строго по контексту и загруженным документам
✔ не выдумывать нормы, статьи и номера дел
✔ понимать фазу диалога
✔ соблюдать жёсткую JSON-схему
✔ разделять законодательство и судебную практику
✔ учитывать специфику арбитражных споров
Вот только один пример промпта занимал страницы — и таких направлений было много:
один — для анализа договоров, другой — для подготовки исков, третий — для судебной практики и т.д.
Особенно трудно было добиться, чтобы модель:
🔹 не «дорисовывала» законы
🔹 не склеивала чужие реквизиты
🔹 просила недостающие данные, а не фантазировала
🔹 не превращала ответ в лекцию по праву
Я гонял систему на реальных кейсах, проверял ответы, помогал адаптировать запросы под новую структуру метаданных.
Диалог: сначала уточнить, потом отвечать
Мы сделали двухфазный режим:
1️⃣ сначала — анализ
ИИ задаёт умные уточняющие вопросы, если данных мало
2️⃣ потом — answer или draft
либо выдаёт вывод, либо готовит проект документа
При этом он:
✔ помнит историю
✔ не повторяет одинаковые вопросы
✔ хранит ссылки на источники, а не тексты
То есть память — аккуратная и безопасная.
Как система ищет среди миллионов документов
Каждый запрос пользователя проходил путь:
🔍 классификация → выбор коллекции → векторный поиск → ранжирование → подмешивание контекста в промпт
Это позволяло дать не просто ответ, а юридически обоснованный ответ.
Причём без выдумок:
всегда видно, из какого источника пришёл факт.
Что мы показали заказчику
Все ключевые требования были подтверждены под запись:
✅ Нормы законодательств:
- корректные номера, даты и пункты.
✅ Судебная практика:
- корректные выдержки, правильная маршрутизация, без критических галлюцинаций.
✅ Контекст диалога:
- история учитывается, двухфазный режим стабилен
✅ Анализ и генерация документов:
- загрузка работает, документы анализируются и генерируются
В итоге у нас получилось создать систему, которая:
⭐ ищет среди миллионов фрагментов юридических документов
⭐ выдаёт структурированные ответы в строгом формате
⭐ не придумывает нормы и судебные дела
⭐ анализирует загруженные файлы
⭐ генерирует юридические документы
⭐ ведёт осмысленный диалог и умеет уточнять
Система была принята заказчиком.
Это был один из тех проектов, после которых уже сложно смотреть на LLM как на просто «чатик для болтовни».