Типова ситуація: юрдепт отримує 50 вхідних договорів на день. Кожен договір містить десятки сторінок, а пошук релевантних судових рішень за ключовими словами дає тисячі нерелевантних результатів. AI вирішує обидві задачі за хвилини, але потребує правильного налаштування моделей — донавчання на ваших даних та грамотної архітектури RAG. Розберемо, як побудувати Contract Intelligence та семантичний пошук на практиці.
Ми інтегруємо AI-системи, які автоматизують рутинну роботу юристів: аналіз контрактів, семантичний пошук за прецедентами, генерацію документів та compliance-моніторинг. Скорочуємо час на обробку вхідної документації в 5–15 разів. Наш досвід — 5+ років, понад 50 проєктів в Україні та СНД.
Як працює Contract Intelligence?
Contract Intelligence — це набір NLP-моделей, що вирішують п'ять завдань: вилучення сутностей, детекція ризиків, порівняння з шаблоном, класифікація договору та risk scoring. Розглянемо процес по кроках.
- Завантаження та попередня обробка: контракт розбивається на фрагменти по 512 токенів з перекриттям 50 токенів.
- NER: модель LegalBERT вилучає сторони, дати, суми, штрафи, юрисдикцію (точність F1 > 94%).
- Класифікація ризиків: бінарний класифікатор визначає ризикові параграфи, пояснюючи рішення через SHAP.
- Порівняння з корпоративним шаблоном: виявляються відхилення від стандарту компанії.
- Формування звіту: структуроване резюме з risk scoring.
from transformers import AutoTokenizer, AutoModelForTokenClassification import torch class ContractEntityExtractor: """NER для вилучення юридичних сутностей з договорів""" LABELS = ['O', 'B-PARTY', 'I-PARTY', 'B-DATE', 'I-DATE', 'B-AMOUNT', 'I-AMOUNT', 'B-OBLIGATION', 'I-OBLIGATION', 'B-CONDITION', 'I-CONDITION', 'B-TERMINATION', 'I-TERMINATION'] def __init__(self, model_path='legal-bert-base-uncased'): self.tokenizer = AutoTokenizer.from_pretrained(model_path) self.model = AutoModelForTokenClassification.from_pretrained( model_path, num_labels=len(self.LABELS) ) def extract_entities(self, contract_text, chunk_size=512): """Обробка довгих контрактів по чанках""" tokens = self.tokenizer.encode(contract_text, add_special_tokens=False) chunks = [tokens[i:i+chunk_size] for i in range(0, len(tokens), chunk_size-50)] all_entities = [] for chunk in chunks: inputs = self.tokenizer.decode(chunk, skip_special_tokens=True) encoding = self.tokenizer(inputs, return_tensors='pt', truncation=True, max_length=512) with torch.no_grad(): outputs = self.model(**encoding) predictions = torch.argmax(outputs.logits, dim=-1)[0].tolist() entities = self._decode_bio( self.tokenizer.convert_ids_to_tokens(encoding['input_ids'][0]), predictions ) all_entities.extend(entities) return all_entities LegalBERT проти general‑purpose BERT: на юридичних корпусах (EDGAR, EUR‑Lex) донавчені моделі показують F1 на 8–15% вище. Ми використовуємо моделі, адаптовані під україномовну правову практику (Ліга:Закон, Єдиний державний реєстр судових рішень).
При впровадженні Contract Intelligence часто допускають три помилки: ігнорування контексту моделлю без fine‑tune, надто малий розмір чанка (контракти довші за 512 токенів) та відсутність пояснюваності для юриста. Ми вирішуємо це донавчанням на ваших даних, використанням overlap=50 та інтеграцією SHAP.
Чому RAG ефективніший за традиційний пошук прецедентів?
Традиційний пошук за ключовими словами дає тонни нерелевантних справ. AI‑пошук використовує семантичну подібність: RAG-архітектура з векторною базою Chroma та ембедингами BAAI/bge-m3. Індексація судових рішень по чанках 1000 токенів з overlap 200. Докладніше про концепцію RAG можна прочитати у Wikipedia.
from langchain.vectorstores import Chroma from langchain.embeddings import HuggingFaceEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter # Індексація бази судових рішень embeddings = HuggingFaceEmbeddings(model_name='BAAI/bge-m3') text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200, separators=['\n\n', '\n', '. ', ' '] ) def index_court_decisions(decisions): """decisions: [{'text': str, 'case_id': str, 'date': str, 'court': str}]""" docs = [] for decision in decisions: chunks = text_splitter.split_text(decision['text']) for chunk in chunks: docs.append({ 'page_content': chunk, 'metadata': { 'case_id': decision['case_id'], 'date': decision['date'], 'court': decision['court'] } }) vectorstore = Chroma.from_texts( texts=[d['page_content'] for d in docs], embedding=embeddings, metadatas=[d['metadata'] for d in docs], persist_directory='./legal_vectordb' ) return vectorstore def search_similar_cases(query, vectorstore, k=10): """Семантичний пошук подібних справ""" results = vectorstore.similarity_search_with_score(query, k=k) return [(doc, score) for doc, score in results if score < 0.5] | Характеристика | Традиційний пошук | RAG на векторних ембедингах |
|---|---|---|
| Принцип | Точний збіг слів | Семантична подібність |
| Врахування синонімів | Ні | Так (ембединг захоплює зміст) |
| Ранжування | TF-IDF | Косинусна близькість |
| Точність топ-10 | ~30% | >85% |
Бази даних, з якими ми працюємо: API Ліга:Закон, Єдиний державний реєстр судових рішень, СТС Гарант, EUR‑Lex (ЄС), Westlaw/LexisNexis. В одному з проєктів для юридичного департаменту нафтової компанії ми скоротили час пошуку з 4 годин до 15 хвилин.
Як влаштована Document Assembly і як вона прискорює створення документів?
Document Assembly — система генерації документів з шаблонів із заповненням зі структурованих даних (Jinja2 + docxtpl). Приклади:
- Позовна заява: за даними клієнта та інциденту → чернетка за 2 хвилини.
- NDA: вибір опціональних клаузул за типом угоди → збірка документа.
- Корпоративні документи: статут, рішення учасників — шаблони з варіативними секціями.
Due Diligence автоматизація при M&A — аналіз сотень документів за дні, а не тижні:
- Класифікація за категоріями (контракт, ліцензія, дозвіл, патент).
- Вилучення ключових дат (закінчення ліцензій, change‑of‑control triggers).
- Red flag detection: судові позови, застави, санкційні ризики.
- Генерація DD‑чеклиста зі статусом по кожному пункту.
Compliance та регуляторний моніторинг
Моніторинг змін законодавства: NLP парсинг офіційних джерел (rada.gov.ua, Ліга:Закон RSS). Класифікуємо релевантні для компанії нормативні акти, оцінюємо impact на внутрішні документи, генеруємо auto‑summary з датами набрання чинності.
Contract Compliance: перевірка контрактних зобов'язань на відповідність Закону про захист персональних даних, ЗУ про публічні закупівлі, GDPR. Моделі виділяють обов'язкові клаузули та сигналізують про невідповідності.
Що входить у роботу
| Компонент | Склад | Термін (міс.) |
|---|---|---|
| Contract Review | Fine‑tune NER, risk scoring, інтеграція з СЕД | 3–5 |
| Case Law Search | Індексація бази, RAG endpoint, UI пошуку | 2–3 |
| Document Assembly | Шаблони, pipeline генерації, інтеграція | 2–4 |
| Compliance Monitor | Парсинг джерел, класифікація, дашборд | 2–3 |
| Супровід | Документація, навчання юристів, підтримка 3 міс. | — |
Оцінюємо проєкт за 2 дні — надішліть приклади контрактів та опис процесів. Отримайте консультацію щодо впровадження AI в LegalTech. Замовте консультацію — ми зафіксуємо терміни та вартість під ваш обсяг даних.







