Что такое граф знаний
Граф знаний хранит данные как сущности и связи между ними: «деталь входит в узел», «сотрудник отвечает за процесс», «тема опирается на другую тему». Смысл записан в самих связях. Поэтому граф справляется с вопросами в несколько шагов. Например: что случится с производством, если выйдет из строя вот этот станок.
Что такое векторный поиск
Векторная база данных хранит фрагменты текста в виде чисел, которые отражают смысл. Запрос превращается в такой же набор чисел, и база возвращает ближайшие фрагменты. Такой поиск не боится переформулировок: «как оформить отпуск» найдёт пункт регламента про «предоставление ежегодного оплачиваемого отпуска», хотя ни одно слово не совпало.
В чём разница
- Векторный поиск отвечает на вопрос «что похоже на это». Граф отвечает на вопрос «что с этим связано и через что».
- Вектор ничего не знает о структуре. Два фрагмента с одинаковыми словами для него близки, даже если они из разных договоров.
- Граф не прощает пропусков: если сущность не извлечена и связь не проложена, вопрос останется без ответа.
- Вектор наполняется дёшево, достаточно нарезать документы. Графу нужна онтология: заранее решить, какие бывают типы сущностей и связей.
На какие вопросы отвечает каждый подход
Векторный поиск сильнее, когда
- знание живёт в тексте: регламенты, инструкции, переписка, база поддержки;
- пользователь спрашивает своими словами, без терминов системы;
- корпус большой и разнородный, а размечать его некому;
- нужно быстро стартовать и обновлять документы на ходу.
Граф знаний сильнее, когда
- ответ требует пути: причина → следствие, деталь → узел → изделие, тема → предшествующая тема;
- важна полнота обхода: перечислить всё, что зависит от объекта, и ничего не пропустить;
- нужны ограничения и правила: что с чем несовместимо, какой порядок обязателен;
- одни и те же сущности встречаются в разных документах, и их надо свести воедино.
Как их сочетают
В работающих системах выбирать между ними обычно не приходится. Обязанности делят примерно так:
- Вектор принимает вопрос пользователя в свободной формулировке и находит точку входа: фрагменты и упомянутые сущности.
- Граф от этой точки достраивает контекст: связанные объекты, зависимости, ограничения, актуальную версию.
- Модель получает и текстовые фрагменты, и структурированный контекст и отвечает со ссылками на источники.
Такая связка заметно устойчивее чистого поиска по смыслу там, где важна полнота. И заметно дешевле в наполнении, чем попытка загнать в граф вообще всё.
Где граф ломается
Онтология «на все случаи жизни»
Желание описать предметную область целиком приводит к схеме, которую невозможно наполнить и никто не понимает. Работает минимальная онтология под конкретные вопросы, которую расширяют, когда появляются новые.
Извлечение сущностей из текста
Граф, который языковая модель построила автоматически, получается черновиком: одна сущность приходит в трёх написаниях, связи дублируются, часть отношений выдумана. Нужны нормализация, удаление дублей и выборочная проверка человеком. Это полноценная работа, пропустить её нельзя.
Поддержка актуальности
Граф, который не обновляется вместе с источниками, ошибается увереннее поиска, потому что выглядит структурным и авторитетным. Правило обновления проектируют вместе с графом.
Как выбрать за четыре вопроса
- Ответ на типовой вопрос лежит во фрагменте текста или получается обходом связей? В первом случае нужен вектор, во втором граф.
- Дорого ли обходится неполный ответ? Если пропуск одного элемента списка стоит денег, нужен граф.
- Кто будет поддерживать структуру? Если никто, граф не заработает. Начинайте с вектора.
- Как часто меняются документы? Чем чаще, тем важнее дешёвое обновление, то есть вектор или гибрид.
Наш опыт
Графовая база лежит в основе StudyNinja, образовательной платформы, на которой работают наши методы. В её графе знаний лежат темы, навыки, методы решения и типичные ошибки, а связи между ними задают, что на что опирается. Задачи платформы (найти пробел в знаниях и подобрать следующий шаг) решаются обходом этих связей. Векторного слоя в этой системе сейчас нет.