Elasticsearch против MyScale: выбор правильной базы данных для приложений GenAI
По мере развития приложений на основе ИИ важность возможностей векторного поиска для поддержки этих достижений трудно переоценить. В этой публикации блога мы рассмотрим две известные базы данных с возможностями векторного поиска: Elasticsearch и MyScale. Каждая из них предоставляет надежные возможности для обработки векторного поиска — важной функции для таких приложений, как рекомендательные системы, поиск изображений и семантический поиск. Наша цель — предоставить разработчикам и инженерам понятное сравнение, помогающее решить, какая база данных лучше всего соответствует их конкретным требованиям.
Что такое векторная база данных?
Прежде чем сравнить Elasticsearch и MyScale, давайте сначала рассмотрим концепцию векторных баз данных.
Векторная база данных специально предназначена для хранения и запросов высокоразмерных векторов, которые являются числовыми представлениями неструктурированных данных. Эти векторы кодируют сложную информацию, такую как семантическое значение текста, визуальные признаки изображений или атрибуты продукта. Обеспечивая эффективный поиск по сходству, векторные базы данных играют ключевую роль в приложениях ИИ, позволяя выполнять более продвинутый анализ и извлечение данных.
Распространенные сценарии использования векторных баз данных включают рекомендации товаров в электронной коммерции, платформы обнаружения контента, обнаружение аномалий в кибербезопасности, анализ медицинских изображений и задачи обработки естественного языка (NLP). Они также играют важную роль в Retrieval Augmented Generation (RAG) — методе, который повышает производительность больших языковых моделей (LLMs), предоставляя внешние знания для снижения таких проблем, как галлюцинации ИИ.
На рынке доступно множество типов векторных баз данных, включая:
- Специализированные векторные базы данных, такие как Milvus, Zilliz Cloud (полностью управляемый Milvus)
- Библиотеки векторного поиска, такие как Faiss и Annoy.
- Легковесные векторные базы данных, такие как Chroma и Milvus Lite.
- Традиционные базы данных с дополнениями для векторного поиска, способные выполнять векторный поиск в небольшом масштабе.
Elasticsearch — это поисковая система на основе Apache Lucene, а MyScale — база данных, построенная на ClickHouse, которая сочетает векторный поиск и SQL-аналитику. Обе имеют возможности векторного поиска в виде дополнения. В этой публикации сравниваются их возможности векторного поиска.
Elasticsearch: обзор и базовая технология
Elasticsearch — это поисковая система с открытым исходным кодом, построенная поверх библиотеки Apache Lucene. Она известна индексированием в реальном времени и полнотекстовым поиском, поэтому является популярным выбором для приложений с высокой нагрузкой и аналитики журналов. Elasticsearch позволяет быстро и эффективно искать и анализировать большие объемы данных.
Elasticsearch был создан для поиска и аналитики, с такими функциями, как нечеткий поиск, сопоставление фраз и ранжирование релевантности. Он отлично подходит для сценариев, где требуются сложные поисковые запросы и извлечение данных в реальном времени. С ростом приложений ИИ Elasticsearch добавил возможности векторного поиска, поэтому он может выполнять поиск по сходству и семантический поиск, что необходимо для таких сценариев использования ИИ, как распознавание изображений, поиск документов и Generative AI.
Векторный поиск
Векторный поиск интегрирован в Elasticsearch через Apache Lucene. Lucene организует данные в неизменяемые сегменты, которые периодически объединяются, векторы добавляются в сегменты так же, как и другие структуры данных. Процесс включает буферизацию векторов в памяти во время индексации, затем сериализацию этих буферов как части сегментов при необходимости. Сегменты периодически объединяются для оптимизации, а поисковые запросы объединяют векторные совпадения по всем сегментам.
Для векторной индексации Elasticsearch использует алгоритм HNSW (Hierarchical Navigable Small World), который создает граф, где похожие векторы связаны друг с другом. Он выбран за простоту, высокие результаты в бенчмарках и способность обрабатывать инкрементальные обновления без необходимости полного переобучения индекса. Система обычно выполняет векторные поисковые запросы за десятки или сотни миллисекунд, что намного быстрее, чем подходы полного перебора.
Техническая архитектура Elasticsearch — одно из его главных преимуществ. Система поддерживает поиск без блокировок даже при одновременной индексации и сохраняет строгую согласованность между разными полями при обновлении документов. Поэтому, если вы обновляете и векторные, и ключевые поля, поисковые запросы увидят либо все старые значения, либо все новые значения, согласованность данных гарантирована. Хотя система может масштабироваться за пределы доступной RAM, производительность оптимизируется, когда векторные данные помещаются в память.
Помимо базовых возможностей векторного поиска, Elasticsearch предоставляет практичные интеграционные функции, которые делают его чрезвычайно ценным. Векторные поисковые запросы можно сочетать с традиционными фильтрами Elasticsearch, поэтому вы можете выполнять гибридный поиск, который объединяет векторное сходство с результатами полнотекстового поиска. Векторный поиск полностью совместим с функциями безопасности Elasticsearch, агрегациями и сортировкой индекса, поэтому это комплексное решение для современных сценариев поиска.
Что такое MyScale? Обзор и базовая технология
MyScale — это облачная база данных, построенная поверх open source базы данных ClickHouse и предназначенная для рабочих нагрузок AI и машинного обучения. Она может обрабатывать структурированные и векторные данные, а также аналитику в реальном времени и машинное обучение. MyScale ориентирована на временные ряды, векторный поиск и полнотекстовый поиск, поэтому она хорошо подходит для обработки в реальном времени и инсайтов на основе AI. Благодаря использованию архитектуры ClickHouse MyScale обеспечивает высокую производительность и масштабируемость для AI.
Одна из ключевых функций MyScale — нативная поддержка SQL, которая упрощает запросы на основе AI, интегрируя векторный поиск, полнотекстовый поиск и традиционные SQL-запросы в одной системе. Это снижает потребность в нескольких инструментах и делает систему масштабируемой для AI. MyScale поддерживает и управляет аналитической обработкой как структурированных, так и векторизованных данных на одной платформе, используя архитектуру базы данных OLAP для работы с векторизованными данными. Разработчики могут взаимодействовать с MyScale с помощью SQL, поэтому она доступна всем программистам, знакомым с реляционными базами данных.
MyScale имеет несколько типов векторных индексов и метрик сходства для поддержки разных сценариев использования. Она поддерживает распространенные метрики расстояния, такие как евклидово расстояние (L2), скалярное произведение (IP) и косинусное сходство. В базе данных есть несколько алгоритмов индексации: MSTG (Multi-Scale Tree Graph), ScaNN, IVFFLAT, IVFPQ, IVFSQ и HNSW, каждый со своим набором параметров для настройки. Собственный векторный движок MSTG от MyScale использует NVMe SSD для увеличения плотности данных, поэтому превосходит специализированные векторные базы данных как по производительности, так и по стоимости.
Объединяя функциональность SQL-базы данных, векторной базы данных и движка полнотекстового поиска в одной системе, MyScale снижает затраты на инфраструктуру и обслуживание. Такая унификация позволяет выполнять совместные запросы к данным и аналитику, а также создает единую основу данных для AI-приложений. MyScale также имеет MyScale Telemetry для полной наблюдаемости LLM-систем, чтобы вы могли эффективно выполнять мониторинг и отладку. По мере усложнения данных MyScale представляет собой перспективное решение, которое может обрабатывать новые модальности данных и размеры баз данных, сохраняя вычислительную производительность и интеграцию между разными типами данных.
Ключевые различия
При выборе решения для векторного поиска знание основных различий между Elasticsearch и MyScale поможет вам принять решение. Давайте разберём их:
Архитектура и основа
Elasticsearch построен поверх библиотеки Apache Lucene и ориентирован на поиск и аналитику. Он хранит векторы как неизменяемые сегменты, которые периодически объединяются с использованием алгоритма HNSW для векторной индексации. Это создаёт граф, где схожие векторы соединяются, поэтому поиск обычно занимает менее миллисекунды.
MyScale использует другой подход и построен поверх ClickHouse. Он использует OLAP-архитектуру, разработанную для рабочих нагрузок AI и machine learning. MyScale предлагает несколько вариантов индексации, включая MSTG, ScaNN, IVFFLAT, IVFPQ, IVFSQ и HNSW, поэтому у вас больше гибкости для выбора подходящего алгоритма под ваш сценарий использования.
Поиск и управление данными
Elasticsearch хорошо справляется с объединением векторного поиска с традиционным поиском. Вы можете сочетать поиск по векторному сходству с полнотекстовыми запросами, поэтому он силён в сценариях гибридного поиска. Система строго обеспечивает согласованность при обновлениях — когда вы изменяете как векторные, так и ключевые поля, поиск увидит либо все старые, либо все новые значения.
MyScale выделяется встроенной поддержкой SQL, поэтому вы можете объединять векторный поиск, полнотекстовый поиск и SQL-запросы в одной системе. Он обрабатывает как структурированные, так и векторные данные с помощью своей OLAP-архитектуры, что может быть привычно, если вы уже работаете с SQL-базами данных.
Производительность и хранение
Elasticsearch показывает наилучшую производительность, когда векторные данные помещаются в памяти, но может масштабироваться за пределы доступной RAM. Его архитектура поиска без блокировок позволяет выполнять параллельную индексацию без блокирования поиска.
MyScale использует уникальный подход со своим векторным движком MSTG, который использует NVMe SSD для повышения плотности данных. Согласно документации, это обеспечивает лучшую производительность и экономическую эффективность, чем специализированные векторные базы данных.
Интеграция и мониторинг
Elasticsearch имеет хорошие возможности интеграции, хорошо работает со своими функциями безопасности, агрегациями и сортировкой индексов. Поэтому он подходит для большинства современных сценариев поиска.
MyScale имеет MyScale Telemetry для мониторинга LLM-систем, поэтому вы можете отслеживать и отлаживать свои приложения. Он стремится снизить сложность инфраструктуры, объединяя SQL-базу данных, векторную базу данных и полнотекстовый поиск в одной системе.
Когда использовать каждое решение
Elasticsearch отлично подходит для сценариев гибридного поиска, где нужно объединять полнотекстовый поиск с поиском по векторному сходству. Его архитектура, построенная поверх Apache Lucene, делает его идеальным для приложений, которым требуются индексация в реальном времени, строгая согласованность данных и параллельный поиск при сохранении производительности. Поэтому, если вы уже в экосистеме Elastic или создаёте поисковое приложение, которому нужно балансировать семантический и ключевой поиск.
MyScale лучше подходит для организаций, у которых есть рабочие процессы на основе SQL и которым нужно больше вариантов векторной индексации. Его ClickHouse и OLAP-архитектура делают его идеальным для рабочих нагрузок AI и machine learning, которые объединяют анализ структурированных данных с векторными операциями. Его способность использовать NVMe SSD через векторный движок MSTG и встроенный мониторинг LLM-систем делает его отличным выбором для команд, создающих AI-приложения, которым нужны экономичное хранение и наблюдаемость.
Заключение
В конечном итоге выбор между Elasticsearch и MyScale зависит от ваших технических требований и существующей инфраструктуры. Elasticsearch обладает зрелыми возможностями гибридного поиска и доказанной масштабируемостью со строгими гарантиями согласованности, поэтому он отлично подходит для приложений с интенсивным поиском. MyScale предлагает SQL-native векторные операции с несколькими вариантами индексации и эффективным использованием хранилища, поэтому он хорош для приложений, ориентированных на AI, которым нужен анализ структурированных данных. Ваше решение должно основываться на экспертизе вашей команды (SQL против специфических знаний в области поиска), существующем технологическом стеке, требованиях к хранению и на том, нужны ли вам возможности гибридного поиска или оптимизация рабочих нагрузок AI.
Прочитайте это, чтобы получить общее представление об Elasticsearch и MyScale, но для их оценки необходимо исходить из вашего конкретного сценария использования. Один из инструментов, который может в этом помочь, — 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
Читать далее

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.
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.


