Сравнение с Векторные и графовые СУБД (pgvector, Neo4j, Pinecone)

Память по смыслу без отдельной базы: рекурсия и графы в Интеграме

Векторные и графовые СУБД (pgvector, Neo4j, Pinecone)

Обложка статьи: Память по смыслу без векторной БД

Поиск по смыслу и обход связей обычно требуют отдельной векторной или графовой базы данных. Интеграм решает обе задачи внутри рабочей таблицы: вектор хранится как текст, близость считает штатный отчёт, а обход графа соседей выполняется одним рекурсивным запросом WITH RECURSIVE. Для миллионов векторов и миллисекундных задержек выделенная векторная СУБД быстрее, но требует отдельной инфраструктуры и бюджета.

Когда приложению нужна «память по смыслу» (найти похожее, даже если слова не совпали дословно) или обход сетевых связей («похоже на этот заказ», «такой вопрос уже задавали»), стандартный ответ — поднять отдельную систему: векторную базу (Pinecone, Qdrant, FAISS) или графовую (Neo4j). Это отдельный сервис рядом с бизнес-данными: его нужно разворачивать, оплачивать, синхронизировать с основной базой и обслуживать. Для небольших и средних объёмов такая инфраструктура часто избыточна.

Контекст

Команда хочет добавить в рабочее приложение поиск по смыслу и подсказки «похожие записи». Типичные сложности при заведении отдельной векторной или графовой базы:

  • появляется второй сервис, который нужно разворачивать, обновлять и оплачивать;
  • данные приходится дублировать и синхронизировать между основной базой и векторной;
  • чистые векторные СУБД находят похожее, но не умеют обходить связи вглубь (граф);
  • обход графа из кода приложения — это десятки сетевых обращений на один запрос, то есть секунды задержки.