OpenSearch 3.0: покращення продуктивності векторної бази даних

OpenSearch 3.0: покращення продуктивності векторної бази даних та інші оновлення

Некомерційна організація OpenSearch Software Foundation під контролем Linux Foundation опублікувала реліз проекту OpenSearch 3.0, що розвиває форк платформи пошуку, аналізу та зберігання даних Elasticsearch та веб-інтерфейсу Kibana. У розробці форку беруть участь такі компанії, як Amazon, SAP, Uber, Aryn, Atlassian, Canonical, DigitalOcean і NetAp. Код поширюється під ліцензією Apache 2.0.

Форк було створено у 2021 році у відповідь на перехід проекту Elasticsearch на невільну ліцензію SSPL (Server Side Public License) та припинення публікації змін під старою ліцензією Apache 2.0. Незважаючи на повернення Elasticsearch до використання вільної ліцензії, проект OpenSearch не втратив актуальність, оскільки в ньому продовжується використання пермісивної ліцензії Apache 2.0 замість ліцензії AGPLv3, на яку перейшов Elasticsearch.

Що таке OpenSearch та його ключові компоненти

OpenSearch включає рушій зберігання та пошуку OpenSearch, веб-інтерфейс та середовище візуалізації даних OpenSearch Dashboards, а також набір додатків для машинного навчання, підтримки SQL, генерації сповіщень, діагностики продуктивності кластера та інших функцій.

Основні вдосконалення у OpenSearch 3.0 для векторної бази даних

Відповідно до офіційного анонсу, у новій версії OpenSearch 3.0 з’явилося багато покращень:

  • Додано векторний рушій (OpenSearch Vector Engine) для зберігання та роботи з даними, що використовуються в системах машинного навчання. Для прискорення векторного пошуку задіяні обчислення на стороні GPU, що дозволило підвищити швидкість індексації в 9.3 рази та знизити операційні витрати в 3.75 разів порівняно з рішеннями, що використовують лише CPU.
  • Реалізовано підтримку протоколу MCP (Model Context Protocol) для організації взаємодії з джерелами даних, LLM-застосунками та AI-платформами. Підтримується інтеграція з AI-агентами компаній Anthropic, LangChain та OpenAI.

Оптимізації для k-NN та інші покращення продуктивності

  • Додано оптимізацію, що дозволяє на третину скоротити розмір сховища векторів k-NN (k-найближчих сусідів), а також до 30 разів скоротити затримки при виконанні запитів зразу після запуску (холодний старт).
  • Додано експериментальну можливість використання протоколу gRPC (protobuf поверх gRPC) для передачі даних між клієнтами, серверами та вузлами зберігання, що дозволяє знизити витрати на серіалізацію.
  • Впроваджено pull-режим отримання даних, при якому OpenSearch напряму запитує дані з потокових джерел, таких як Apache Kafka та Amazon Kinesis.

Архітектурні вдосконалення для гнучкості та ефективності

У кластері надано можливість розділення трафіку, пов’язаного з індексацією та пошуком. Додано API, що дозволяє відключити операції запису та залишити індекс доступним лише для пошуку з метою оптимізації роботи з даними, які не будуть змінюватися.

Окрім того, розширено інтеграцію з Apache Calcite та реалізовано можливість використання мови запитів PPL (Piped Processing Language) для операцій пошуку, фільтрації та злиття.

Технічні оновлення та підтримка Java

  • Рушій повнотекстового пошуку Lucene оновлено до гілки 10, в якій покращено роботу з індексами та підвищено продуктивність паралельної обробки завдань.
  • Додано підтримку Java-модулів (Java Platform Module System) для розділення компонентів на окремі бібліотеки. Як мінімальну версію заявлено випуск Java 21.
  • Прискорено роботу з діапазонами значень і полями, що містять дати та числа. Швидкість проходження тестового набору Big5 зросла на 25%.

Для векторів k-NN за замовчуванням увімкнено режим розпаралелювання пошуку сегментів, що дозволив у 2.5 рази підняти продуктивність запитів. Завдяки цим змінам, OpenSearch 3.0 стає потужнішим інструментом для роботи з векторними базами даних та пошуковими системами.