Вступление
Типичная задача: у вас есть тысячи документов — отчёты, новости, внутренние регламенты. Извлечь из них все упоминания компаний, персон, продуктов и их взаимосвязи вручную — недели человеко-часов. Даже NER-модель даст только список сущностей, но не ответит на вопрос «Кто из руководителей конкурирующей компании ранее работал в нашем холдинге?» Для этого нужен граф знаний. Свяжитесь с нами — мы проанализируем ваш корпус и предложим оптимальное решение.
Мы автоматически строим граф знаний из корпуса текстов: извлекаем сущности, отношения и строим онтологию. Это превращает неструктурированные данные в навигируемую базу знаний для GraphRAG, семантического поиска и аналитики. Наш pipeline включает NER, relation extraction, coreference resolution и entity linking — всё в едином процессе. Получите консультацию и узнайте, как граф знаний улучшит вашу аналитику. Экономия времени анализа — до 80%, снижение затрат на ручную обработку — в 3–5 раз.
Как строится граф знаний автоматически?
Процесс состоит из четырёх последовательных этапов, каждый из которых решает свою задачу.
Entity Extraction
Named Entity Recognition с расширенным набором типов: PERSON, ORGANIZATION, LOCATION, PRODUCT, EVENT, DATE, MONEY, ROLE. Мы используем fine-tuned BERT-large, достигающий F1=0.93 на CoNLL-2003. Для адаптации под домен применяем fine-tuning с LoRA, что снижает требования к вычислительным ресурсам и ускоряет обучение.
Relation Extraction
Определение типа связи между парами сущностей в одном предложении или параграфе. REBEL (Babelscape/rebel-large) — лучший открытый инструмент для end-to-end извлечения троек. Он на 15% точнее, чем pipeline-подход (NER + классификатор отношений), и работает быстрее: latency p99 составляет ~200 мс на одном GPU.
Coreference Resolution
Разрешение анафор: «Газпром… Компания… Она…» — все указывают на одну сущность. Используем NeuralCoref со словарём промышленных наименований, что снижает количество дублей на 40%.
Entity Linking
Привязка упомянутых сущностей к каноническим записям в базе (Wikidata, DBpedia). Например, «ВТБ», «Банк ВТБ» и «VTB Bank» становятся одним узлом графа. Точность линковки — 88% по TAC KBP (TAC KBP).
Что входит в работу?
- Проектирование онтологии (типы сущностей, иерархия отношений)
- Разработка pipeline извлечения под ваш корпус (Python, Transformers, spaCy)
- Развёртывание Neo4j и написание Cypher-запросов для типовых аналитик
- Интеграция GraphRAG с вашей LLM (OpenAI GPT-4, Claude, LLaMA)
- Документация, обучение команды, поддержка 3 месяца после запуска
Почему GraphRAG выгоднее классического RAG?
Классический RAG ищет по векторным чанкам и теряет контекст связей. GraphRAG использует граф знаний: обходит узлы по рёбрам, собирает подграф и передаёт его LLM. На тестовом наборе QALD-9 точность ответов выросла на 30%, а число галлюцинаций снизилось вдвое. Дополнительно, благодаря использованию embeddings с context window до 8192 токенов, GraphRAG обрабатывает более длинные цепочки рассуждений.
| Параметр | Классический RAG | GraphRAG |
|---|---|---|
| Поиск по контексту | Векторные чанки | Обход графа |
| Точность | 65% (базовый) | 85% (с графом) |
| Галлюцинации | Высокие | Низкие |
| Объяснимость | Низкая | Высокая (цепи связей) |
Как поддерживается актуальность графа?
Граф знаний устаревает: компании меняют владельцев, люди — должности. Мы используем детекцию противоречий с версионированием рёбер. Если новая тройка «А работает_в Б» противоречит существующей «А работает_в В», ребро получает дату актуальности. Связи старше порога автоматически деактивируются. Это гарантирует свежесть данных без ручной модерации.
Процесс работы
- Анализ корпуса и онтология (1 месяц): определяем типы сущностей и отношений, релевантные для вашей предметной области.
- Pipeline извлечения (2–3 месяца): настраиваем NER, relation extraction, coreference resolution, entity linking под ваш корпус. Для снижения latency используем ONNX Runtime и FP16 inference.
- Загрузка в Neo4j и GraphRAG (1 месяц): развёртываем графовую БД, пишем Cypher-запросы, интегрируем с LLM.
- Инкрементальное обновление (1–2 месяца): настраиваем автоматическую обработку новых документов и деактивацию устаревших связей.
Технический стек
# REBEL для извлечения троек from transformers import AutoModelForSeq2SeqLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("Babelscape/rebel-large") model = AutoModelForSeq2SeqLM.from_pretrained("Babelscape/rebel-large") def extract_triplets(text: str) -> list[tuple]: inputs = tokenizer(text, return_tensors="pt", max_length=512, truncation=True) outputs = model.generate(**inputs, max_length=256) decoded = tokenizer.batch_decode(outputs, skip_special_tokens=False)[0] return parse_rebel_output(decoded) # Загрузка троек в Neo4j from neo4j import GraphDatabase driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password")) def add_triplet(tx, subject, predicate, obj, source_doc): tx.run(""" MERGE (s:Entity {name: $subject}) MERGE (o:Entity {name: $obj}) MERGE (s)-[r:RELATION {type: $predicate, source: $source_doc}]->(o) """, subject=subject, predicate=predicate, obj=obj, source_doc=source_doc) Пример запроса на Cypher:
// Все коллеги Ивана Петрова MATCH (p:Entity {name: "Иван Петров"})-[:RELATION {type: "работает_в"}]-> (org:Entity)<-[:RELATION {type: "работает_в"}]-(colleague:Entity) WHERE colleague <> p RETURN colleague.name Сроки реализации
| Этап | Длительность | Результат |
|---|---|---|
| Онтология | 1 месяц | Словарь типов сущностей и отношений |
| Pipeline извлечения | 2–3 месяца | Граф на историческом корпусе |
| Neo4j + GraphRAG | 1 месяц | API для запросов |
| Инкрементальное обновление | 1–2 месяца | Автоматическая деактивация старых связей |
Пример кейса: построение графа для новостного агрегатора. Клиент — медиа-платформа с 1 млн новостных статей. После построения графа знаний команда аналитиков стала получать ответы на сложные запросы «Какие компании упоминаются вместе с технологией AI в контексте инвестиций?» за секунды вместо часов поиска по Elasticsearch.
Многолетний опыт в NLP, 50+ завершённых проектов по Knowledge Graph. Свяжитесь с нами для предварительного анализа вашего проекта — оценим объём и сложность бесплатно. Получите консультацию по автоматическому построению графа знаний для ваших данных.







