MongoDB против Neo4j: выбор правильной базы данных для приложений GenAI
По мере развития приложений на базе ИИ важность возможностей векторного поиска в поддержке этих достижений невозможно переоценить. В этой публикации в блоге будут рассмотрены две известные базы данных с возможностями векторного поиска: MongoDB и Neo4j. Каждая из них предоставляет надежные возможности для работы с векторным поиском — важной функцией для таких приложений, как рекомендательные системы, поиск изображений и семантический поиск. Наша цель — предоставить разработчикам и инженерам понятное сравнение, помогающее решить, какая база данных лучше всего соответствует их конкретным требованиям.
Что такое векторная база данных?
Прежде чем сравнивать MongoDB и Neo4j, давайте сначала рассмотрим концепцию векторных баз данных.
Векторная база данных специально предназначена для хранения и запроса многомерных векторов, которые являются числовыми представлениями неструктурированных данных. Эти векторы кодируют сложную информацию, такую как семантическое значение текста, визуальные характеристики изображений или атрибуты продуктов. Обеспечивая эффективный поиск по сходству, векторные базы данных играют ключевую роль в приложениях ИИ, позволяя выполнять более продвинутый анализ и извлечение данных.
Распространенные варианты использования векторных баз данных включают рекомендации товаров в электронной коммерции, платформы обнаружения контента, обнаружение аномалий в кибербезопасности, анализ медицинских изображений и задачи обработки естественного языка (NLP). Они также играют важнейшую роль в Retrieval Augmented Generation (RAG) — методике, которая повышает производительность больших языковых моделей (LLMs), предоставляя внешние знания для снижения таких проблем, как галлюцинации ИИ.
На рынке доступно множество типов векторных баз данных, включая:
- Специализированные векторные базы данных, такие как Milvus, Zilliz Cloud (полностью управляемый Milvus)
- Библиотеки векторного поиска, такие как Faiss и Annoy.
- Легковесные векторные базы данных, такие как Chroma и Milvus Lite.
- Традиционные базы данных с надстройками векторного поиска, способные выполнять векторный поиск в небольшом масштабе.
MongoDB — это база данных NoSQL, а Neo4j — графовая база данных. Обе имеют векторный поиск в качестве надстройки. В этой публикации сравниваются их возможности векторного поиска.
MongoDB: основы
MongoDB Atlas Vector Search — это функция, которая позволяет выполнять поиск по векторному сходству по данным, хранящимся в MongoDB Atlas. Вы можете индексировать и запрашивать многомерные векторные эмбеддинги вместе с данными документов и выполнять задачи ИИ и машинного обучения прямо в базе данных.
В своей основе Atlas Vector Search использует алгоритм Hierarchical Navigable Small World (HNSW) для индексирования и поиска векторных данных. Он создает многоуровневый граф векторного пространства, чтобы можно было выполнять поиск Approximate Nearest Neighbor (ANN). Это баланс скорости и точности для векторного поиска в большом масштабе. Atlas Vector Search также поддерживает поиск Exact Nearest Neighbors (ENN), который отдает приоритет точности, а не производительности, для запросов до 10 000 документов.
Одним из больших преимуществ Atlas Vector Search является его интеграция с гибкой документной моделью MongoDB. Вы можете хранить векторные представления вместе с другими данными документа, чтобы выполнять поиск более контекстно и точно. Вы можете запрашивать любые данные, которые можно представить в виде векторов размерностью до 4096. Atlas Vector Search позволяет сочетать поиск по векторному сходству с традиционной фильтрацией документов. Например, семантический поиск товаров можно отфильтровать по категории, ценовому диапазону или наличию.
Atlas Vector Search также поддерживает гибридный поиск, объединяя векторный поиск с полнотекстовым поиском для получения более детальных результатов. Это отличается от Atlas Search, который ориентирован на поиск по ключевым словам. Платформа интегрируется с популярными AI-сервисами и инструментами, поэтому вы можете использовать ее с embedding-моделями от таких провайдеров, как OpenAI, VoyageAI, и многими другими, перечисленными на Hugging Face. Она также поддерживает open-source фреймворки, такие как LangChain и LlamaIndex, для создания приложений, использующих Large Language Models (LLMs).
Для обеспечения масштабируемости и производительности MongoDB Atlas предоставляет Search Nodes, которые обеспечивают выделенную инфраструктуру для рабочих нагрузок Atlas Search и Vector Search. Это позволяет вам иметь оптимизированные вычислительные ресурсы и независимое масштабирование потребностей поиска, чтобы получать более высокую производительность в масштабе.
Благодаря наличию этих возможностей в экосистеме MongoDB, Atlas Vector Search является полноценным решением для разработчиков, создающих AI-приложения, рекомендательные системы или расширенные поисковые функции. Нет необходимости в отдельной векторной базе данных, вы можете использовать масштабируемость и богатые возможности MongoDB вместе с векторным поиском.
Neo4J: Основы
Векторный поиск Neo4j позволяет разработчикам создавать векторные индексы для поиска похожих данных по всему графу. Эти индексы работают со свойствами узлов, содержащими векторные представления — числовые представления данных, таких как текст, изображения или аудио, которые отражают смысл данных. Система поддерживает векторы размерностью до 4096, а также функции косинусного и евклидова сходства.
Реализация использует графы Hierarchical Navigable Small World (HNSW) для быстрого приближенного поиска k ближайших соседей. При запросе к векторному индексу вы указываете, сколько соседей хотите получить, и система возвращает соответствующие узлы, упорядоченные по оценке сходства. Эти оценки находятся в диапазоне 0-1, где более высокое значение означает большее сходство. Подход HNSW хорошо работает за счет сохранения связей между похожими векторами и позволяет системе быстро переходить к различным частям векторного пространства.
Создание и использование векторных индексов выполняется через язык запросов. Вы можете создавать индексы с помощью команды CREATE VECTOR INDEX и указывать параметры, такие как размерность вектора и функция сходства. Система проверит, что индексируются только векторы настроенной размерности. Запрос к этим индексам выполняется с помощью процедуры db.index.vector.queryNodes, которая принимает имя индекса, количество результатов и вектор запроса в качестве входных данных.
Векторная индексация Neo4j имеет оптимизации производительности, такие как квантизация, которая снижает использование памяти за счет сжатия векторных представлений. Вы можете настраивать поведение индекса с помощью таких параметров, как максимальное количество соединений на узел (M) и количество ближайших соседей, отслеживаемых при вставке (ef_construction). Хотя эти параметры позволяют балансировать между точностью и производительностью, значения по умолчанию хорошо подходят для большинства сценариев использования. Система также поддерживает векторные индексы отношений начиная с версии 5.18, поэтому вы можете искать похожие данные в свойствах отношений.
Это позволяет разработчикам создавать AI-приложения. Комбинируя графовые запросы с поиском по векторному сходству, приложения могут находить связанные данные на основе семантического смысла, а не точных совпадений. Например, система рекомендаций фильмов могла бы использовать векторы представления сюжетов, чтобы находить похожие фильмы, одновременно используя структуру графа, чтобы гарантировать, что рекомендации относятся к тому же жанру или эпохе, которые предпочитает пользователь.
Ключевые различия
Архитектура и подход к поиску
MongoDB Atlas Vector Search имеет векторный поиск, встроенный в его документно-ориентированную архитектуру, поэтому вы можете хранить векторы вместе с другими данными документов. Neo4j имеет векторный поиск, встроенный в его графовую структуру, поэтому вы можете искать векторы в свойствах узлов и связей. Оба используют алгоритм HNSW для приблизительного поиска ближайших соседей и поддерживают до 4096 измерений.
Модель данных и гибкость запросов
Подход MongoDB отлично подходит, когда вам нужно объединять векторный поиск с документно-ориентированной фильтрацией. Например, вы можете искать похожие продукты, одновременно фильтруя по ценовому диапазону или доступности. Сильная сторона Neo4j — в его способности обходить связи: вы можете использовать векторное сходство для поиска связанного контента, одновременно используя графовые связи для добавления контекста и ограничений к вашим поисковым запросам. Оба поддерживают функции косинусного и евклидова сходства.
Интеграция и экосистема
MongoDB Atlas Vector Search имеет встроенную интеграцию с популярными AI-сервисами, такими как OpenAI и VoyageAI, а также с фреймворками, такими как LangChain и LlamaIndex. Он также поддерживает гибридный поиск, объединяя векторный и полнотекстовый поиск. Neo4j больше фокусируется на интеграциях, специфичных для графов, и позволяет использовать любую модель эмбеддингов по вашему выбору.
Масштабируемость и производительность
MongoDB Atlas имеет выделенные Search Nodes для нагрузок векторного поиска, поэтому вы можете масштабировать поиск независимо. Neo4j имеет оптимизации производительности, такие как векторная квантизация и настраиваемые параметры для баланса точности и скорости. Оба могут обрабатывать крупномасштабные векторные операции, но выделенная инфраструктура MongoDB может дать ему преимущество для чисто поисковых нагрузок.
Когда использовать MongoDB Atlas Vector Search
Используйте MongoDB Atlas Vector Search, когда вашему приложению нужно обрабатывать большие объемы документно-ориентированных данных с векторным поиском. Он отлично подходит, когда нужно объединять традиционные запросы к документам с семантическим поиском, например для платформ электронной коммерции, которым нужен поиск похожих продуктов с фильтрацией по категории, цене или доступности. Он особенно хорош, когда у вас активно используются AI-сервисы и интеграции с LLM, поскольку у него есть встроенные подключения к OpenAI, VoyageAI, LangChain и LlamaIndex. Инфраструктура Search Nodes хорошо подходит для приложений, которым нужно независимо масштабировать поисковые нагрузки.
Когда использовать Neo4j Vector Search
Векторный поиск Neo4j отлично подходит, когда вам нужно понимать связи между точками данных. Это лучший выбор для рекомендательных систем, которым нужно учитывать как сходство контента, так и сложные связи между элементами, пользователями и категориями. Вы можете применять векторный поиск как к узлам, так и к связям, поэтому он хорошо подходит для приложений вроде графов знаний, систем обнаружения мошенничества или социальных сетей, где связи между сущностями так же важны, как и сами сущности. Подход Neo4j особенно хорош, когда нужно объединять графовые алгоритмы с поиском по векторному сходству.
Заключение
Ваш выбор между MongoDB Atlas и Neo4j для векторного поиска зависит от вашей модели данных и требований приложения. MongoDB Atlas — более интегрированное решение с сильной документно-ориентированной фильтрацией и встроенными подключениями к AI-сервисам, поэтому он отлично подходит для приложений, которым нужно гибкое хранение документов с семантическим поиском. Neo4j имеет уникальные сильные стороны в векторном поиске на основе связей и графовой аналитике, поэтому это лучший выбор, когда связи в ваших данных являются ключевыми для функциональности вашего приложения. Учитывайте ваши конкретные потребности в отношении структуры данных, масштабирования и интеграции при принятии решения, поскольку оба предлагают надежный векторный поиск, но преуспевают в разных областях.
Прочитайте это, чтобы получить обзор MongoDB и Neo4J, но для их оценки вам нужно оценивать их исходя из вашего сценария использования. Один из инструментов, который может в этом помочь, — VectorDBBench, open-source инструмент бенчмаркинга для сравнения векторных баз данных. В конечном счете тщательное бенчмаркинговое тестирование на ваших собственных наборах данных и шаблонах запросов будет ключом к принятию решения между этими двумя мощными, но разными подходами к векторному поиску в распределенных системах баз данных.
Использование open-source VectorDBBench для оценки и сравнения векторных баз данных самостоятельно
VectorDBBench — это open-source инструмент бенчмаркинга для пользователей, которым нужны высокопроизводительные системы хранения и извлечения данных, особенно векторные базы данных. Этот инструмент позволяет пользователям тестировать и сравнивать различные системы векторных баз данных, такие как Milvus и Zilliz Cloud (управляемый Milvus), используя собственные наборы данных, и находить ту, которая соответствует их сценариям использования. С VectorDBBench пользователи могут принимать решения на основе реальной производительности векторных баз данных, а не маркетинговых заявлений или слухов.
VectorDBBench написан на Python и распространяется по open-source лицензии MIT, что означает, что любой может свободно использовать, изменять и распространять его. Инструмент активно поддерживается сообществом разработчиков, стремящихся улучшать его функции и производительность.
Загрузите VectorDBBench из его репозитория GitHub, чтобы воспроизвести наши результаты бенчмаркинга или получить результаты производительности на ваших собственных наборах данных.
Быстро ознакомьтесь с производительностью популярных векторных баз данных в рейтинге VectorDBBench.
Прочитайте следующие блоги, чтобы узнать больше об оценке векторных баз данных.
Дополнительные ресурсы о VectorDB, GenAI и ML
Читать далее

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.


