Системы знанийГрафы знаний · Векторные базы · Архитектура данных

Граф знаний или векторный поиск: что выбрать под свою задачу

Граф знаний и векторный поиск отвечают на один запрос «найди релевантное», но понимают релевантность по-разному. Векторный поиск ищет похожее по смыслу, граф ищет связанное по структуре. Если их перепутать, проект долго чинит не то место.

Что такое граф знаний

Граф знаний хранит данные как сущности и связи между ними: «деталь входит в узел», «сотрудник отвечает за процесс», «тема опирается на другую тему». Смысл записан в самих связях. Поэтому граф справляется с вопросами в несколько шагов. Например: что случится с производством, если выйдет из строя вот этот станок.

Что такое векторный поиск

Векторная база данных хранит фрагменты текста в виде чисел, которые отражают смысл. Запрос превращается в такой же набор чисел, и база возвращает ближайшие фрагменты. Такой поиск не боится переформулировок: «как оформить отпуск» найдёт пункт регламента про «предоставление ежегодного оплачиваемого отпуска», хотя ни одно слово не совпало.

В чём разница

На какие вопросы отвечает каждый подход

Векторный поиск сильнее, когда

Граф знаний сильнее, когда

Как их сочетают

В работающих системах выбирать между ними обычно не приходится. Обязанности делят примерно так:

  1. Вектор принимает вопрос пользователя в свободной формулировке и находит точку входа: фрагменты и упомянутые сущности.
  2. Граф от этой точки достраивает контекст: связанные объекты, зависимости, ограничения, актуальную версию.
  3. Модель получает и текстовые фрагменты, и структурированный контекст и отвечает со ссылками на источники.

Такая связка заметно устойчивее чистого поиска по смыслу там, где важна полнота. И заметно дешевле в наполнении, чем попытка загнать в граф вообще всё.

Где граф ломается

Онтология «на все случаи жизни»

Желание описать предметную область целиком приводит к схеме, которую невозможно наполнить и никто не понимает. Работает минимальная онтология под конкретные вопросы, которую расширяют, когда появляются новые.

Извлечение сущностей из текста

Граф, который языковая модель построила автоматически, получается черновиком: одна сущность приходит в трёх написаниях, связи дублируются, часть отношений выдумана. Нужны нормализация, удаление дублей и выборочная проверка человеком. Это полноценная работа, пропустить её нельзя.

Поддержка актуальности

Граф, который не обновляется вместе с источниками, ошибается увереннее поиска, потому что выглядит структурным и авторитетным. Правило обновления проектируют вместе с графом.

Как выбрать за четыре вопроса

  1. Ответ на типовой вопрос лежит во фрагменте текста или получается обходом связей? В первом случае нужен вектор, во втором граф.
  2. Дорого ли обходится неполный ответ? Если пропуск одного элемента списка стоит денег, нужен граф.
  3. Кто будет поддерживать структуру? Если никто, граф не заработает. Начинайте с вектора.
  4. Как часто меняются документы? Чем чаще, тем важнее дешёвое обновление, то есть вектор или гибрид.

Наш опыт

Графовая база лежит в основе StudyNinja, образовательной платформы, на которой работают наши методы. В её графе знаний лежат темы, навыки, методы решения и типичные ошибки, а связи между ними задают, что на что опирается. Задачи платформы (найти пробел в знаниях и подобрать следующий шаг) решаются обходом этих связей. Векторного слоя в этой системе сейчас нет.

Частые вопросы

Можно ли обойтись только векторной базой?

Да, если вопросы пользователей сводятся к «найди и объясни» по тексту. Как только появляются вопросы вроде «перечисли всё, что зависит от X» или «в каком порядке это делается», чистый векторный поиск начинает терять части ответа. Это хорошо видно на наборе проверочных вопросов.

Граф знаний обязательно строить вручную?

Вручную необязательно, но и полностью автоматически не получится. Рабочая схема такая: модель извлекает кандидатов, правила нормализуют их и убирают дубли, человек проверяет выборку и спорные случаи. Когда онтология устоится, ручной работы становится меньше.

Какие базы вы используете?

Для связей берём графовую базу, для поиска по смыслу векторный индекс, а конкретный продукт выбираем под задачу. Он важен меньше, чем модель данных и порядок обновления: заменить движок дешевле, чем переделать плохо спроектированную онтологию.

Чем мы помогаем по этой теме

Читать дальше

Разберём вашу задачу

Если у вас похожая задача, опишите её своими словами в форме на главной. Если она решается проще, чем кажется, скажем об этом.

Новые разборы в TelegramНаписать на hello@xteam.pro