Мы выпустили Manticore Search 28.4.4 . В этом релизе ресоринг KNN стал быстрее, диалоговый поиск — гибче, установка и обновление — проще, фасеты получили дополнительные параметры, появились настройки релевантности по умолчанию на уровне таблицы, а также исправления в аутентификации, репликации, совместимости SQL, распределённых запросах и внутренних механизмах columnar/KNN.

В этом посте собраны изменения, вышедшие с 27.2.0 по 28.4.4.


Примечания к обновлению

Перед обновлением обратите внимание на следующее:

  • В 28.0.0 версия ABI плагинов SPH_UDF_VERSION повышена до 12. Внешние бинарные файлы плагинов UDF, ranker и token-filter нужно пересобрать перед загрузкой в эту версию. Благодаря изменению плагины token-filter получают возможмность работать с длинными токенами dict=keywords_32k вместо того чтобы молча пропускать значения выше прежнего лимита плагина в 126 байт. Данные и текущая конфигурация таблиц сохраняют совместимость, пересоздания таблицы не требуется. Для возврата к предыдущей версии также нужны бинарные файлы плагинов, собранные под старый ABI. (Issue #4667 , PR #4668 )

  • Если аутентификация включена, обновитесь! В 28.4.2 исправлен обход проверки прав в MySQL-запросах с несколькими SQL-операторами при включённой аутентификации и авторизации. В 28.3.4 улучшена совместимость Connector/J и PyMySQL с аутентифицированными MySQL-сессиями, а в 28.4.1 исправлено восстановление кластера репликации с аутентификацией после перезапуска: учётная запись пользователя репликации теперь хранится в метаданных кластера. (PR #4713 , Issue #4691 , Issue #4705 )

  • Если вы устанавливаете MCL отдельно от демона, обновите MCL тоже. Этот релиз требует MCL 13.7.0, в котором добавляется новая настройка embeddings_threads и несколько исправлений сборки, упаковки и очистки в columnar/KNN. Не рекомендуется использовать старую библиотеку вместе с новой версией демона. (PR #169 , PR #186 , PR #4676 )


Главное

Рескоринг KNN стал быстрее

Векторный поиск теперь вычисляет расстояния пакетно (группой) на этапе повторной оценки (rescore). После того как HNSW возвращает набор кандидатов, Manticore пересчитывает итоговые расстояния с полной точностью и заново сортирует результаты. Пакетная обработка снижает накладные расходы на каждого кандидата на финальном этапе векторного поиска.

При большом объёме данных это сокращает часть вычислений, которые выполняются после отбора кандидатов. Результаты не меняются; на финальном этапе ранжирования просто случается меньше накладных расходов.

Диалоговый поиск через SQL и HTTP

Диалоговый поиск теперь доступен через JSON API /search наряду с SQL CALL CHAT. Это упрощает интеграцию чата в приложениях, которые уже работают с HTTP API.

CREATE CHAT MODEL теперь поддерживает custom_prompt: ответы можно адаптировать под требования приложения — правила цитирования, тон, длину ответа или форматирование. Механизм по-прежнему использует ту же идею: извлекает релевантные документы из векторизованной таблицы, собирает контекст, сохраняет историю диалога и возвращает ответ с указанием использованных источников, если нужно.

Установка в одну команду

Быстрая установка стала проще:

curl https://manticoresearch.com | sh

Используя этот установщик можно также обновить версию, показать доступные версии, переключаться между stable и development-репозиториями и установить выбранную версию. Пакетные менеджеры по-прежнему остаются основным источником сведений об установленных файлах, репозиториях, службах и зависимостях; новый установщик облегчает первоначальную настройку.

Информация о всех вариантах использования доступна в справке:

curl https://manticoresearch.com | sh -s help

Фасеты теперь могут показывать группы с нулевыми значениями

Фасетный поиск теперь поддерживает фасетные группы с нулевыми значениями через SQL ZEROES и JSON "zeroes": true.

Это небольшая, но важная функция: в e-commerce часто нужно оставлять фасет видимым, даже если текущая комбинация фильтров даёт для него значение 0. В режиме max группы с нулевыми значениями помогают отображать выбранные, доступные и временно недоступные варианты, сохраняя для пользователя полный список значений фильтра.

Настройки ранжирования по умолчанию на уровне таблицы

Теперь в Manticore можно задать профиль релевантности при создании таблицы: CREATE TABLE ... profile='relevance' , а также сохранять на уровне таблицы значения ранжирования по умолчанию: ranker и boolean_mode .

По результатам наших тестов качества поиска profile='relevance' и настройки ранжирования, которые он включает позволяют улучшить релевантность во многих случаях. А в приложении теперь не нужно повторять одни и те же параметры ранжирования в каждом запросе.

Контроль использования CPU для эмбеддингов

embeddings_threads позволяет ограничить количество потоков CPU, используемых для автоматической генерации эмбеддингов при INSERT, ALTER TABLE ... REBUILD KNN и KNN-запросах.

Генерация эмбеддингов и перестройка KNN могут сильно нагружать CPU; настройка лимита помогает планировать нагрузку на сервер и не даёт этим задачам занять весь процессор.


Исправления ошибок

Релиз включает в себя 17 исправлений. Самые важные из них:

  • В 28.4.3 исправлена некорректная обработка мультизапросов при использовании COUNT(DISTINCT ...) .

  • В 28.4.2 исправлен обход проверки прав при аутентификации и авторизации при выполнении нескольких SQL-запросов за раз через MySQL. Теперь каждый оператор в таком запросе корректно проверяется при включённой аутентификации.

  • В 28.4.1 и 28.3.1 исправлено восстановление кластера репликации: возобновление работы кластера с аутентификацией после перезапуска и запуск, когда в кластере оставалась только одна нода.

  • Распределённые запросы со stored fields теперь завершаются ошибкой при ошибках удалённого чтения GETFIELD или при некорректных ответах, а не возвращают строки, которые выглядят как нормальные, но содержат пустые или недостоверные значения stored fields.

  • Очистка после прерванного слияния чанков columnar/KNN теперь удаляет временные файлы компонентов. Файлы .tmp.spc.* больше не остаются после прерывания и не мешают операциям renameattach и drop для таблиц.

  • Улучшена совместимость с DBeaver благодаря поддержке простых алиасов для одной таблицы в запросах SELECT.

  • Клиенты Connector/J и PyMySQL теперь могут совершать native-password-аутентификацию, а безвредные сессионные SET-команды больше не завершаются ошибкой при включённой аутентификации.

  • Встроенный украинский лемматизатор теперь правильно обрабатывает слова с апострофом, так что формы вроде здоров'ям совпадают с здоров'я при lemmatize_uk_all.

  • Обработка blended keywords теперь учитывает настроенный blend_mode и корректно восстанавливает варианты слов без разделителей для индексации и извлечения ключевых слов.

  • Автооптимизация RT-таблиц больше не сжимает таблицу ниже двух дисковых чанков, если такой более низкий порог явно не запрошен.

  • Исправлен сбой при одновременном использовании агрегаций percentiles и terms-агрегаций в одном запросе /search на RT-таблицах с несколькими чанками.

  • При длинных ошибках парсинга SQL теперь сохраняются границы UTF-8-символов, поэтому некорректные запросы с кириллицей и другими многобайтовыми символами больше не дают обрезанных или повреждённых сообщений об ошибке.

Полный список — в changelog .


Нужна помощь или хотите связаться с нами?

  • Присоединяйтесь к нашему Slack

  • Заглядывайте на форум

  • Сообщайте о проблемах или предлагайте идеи на GitHub

  • Пишите нам: contact@manticoresearch.com

Комментарии (0)