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

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

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

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

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

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

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

Принципиальная разница

Какие вопросы тянет каждый подход

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

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

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

В работающих системах это не выбор «или — или». Типичное разделение обязанностей выглядит так:

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

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

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

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

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

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

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

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

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

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

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

Наш опыт

Мы эксплуатируем обе технологии в своих продуктах: графовую базу — для модели предметной области и связей между темами, векторную — для поиска по формулировкам пользователя. Разделение обязанностей между ними мы получили не из статей, а из отладки собственных систем, где чистый поиск по смыслу переставал справляться ровно там, где от ответа требовалась полнота.

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

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

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

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

Нет, но и полностью автоматически — тоже нет. Рабочая схема: модель извлекает кандидатов, правила нормализуют и дедуплицируют, человек проверяет выборку и спорные случаи. Доля ручной работы падает по мере стабилизации онтологии.

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

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

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

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

Обсудим вашу задачу

Если у вас похожая задача — расскажите, что нужно решить. Скажем прямо, если она решается проще, чем кажется.

Написать нам