Pull to refresh
16K+
60
Sergey Nikolaev@ManticoreSearch

CEO

12,8
Rating
57
Subscribers
Send message

Пересчёт расстояний в KNN-поиске: сокращаем разрыв между колоночным и построчным хранением

Reading time9 min
Reach and readers6.2K

Почему при стандартных настройках KNN-поиска пересчёт расстояний при колоночном хранении векторов работал медленнее, чем при построчном, и как Manticore почти убрал эту разницу, сохранив скорость поиска по данным, которые не помещаются в память.

Читать далее

Как работает поиск в SaaS Kiva, где у каждого клиента своя база данных

Reading time5 min
Reach and readers4.4K

Как работает поиск в SaaS Kiva, где у каждого клиента своя база данных

Как Kiva использует Manticore Search в SaaS, где у каждого клиента своя база данных и своя схема: сочетает периодически перестраиваемую и RT-таблицы, обрабатывает изменения в реальном времени и обходится без отдельных серверов для поиска.

Читать далее

Как на wine.co.za упростили поиск по архиву из примерно 145 тысяч записей с помощью Manticore Search

Reading time4 min
Reach and readers5.2K

На wine.co.za данные хранятся в MariaDB, раз в день копируются в Manticore, а сайт обращается к поиску через библиотеку для .NET. Разбираем, как устроен поиск по архиву из примерно 145 тысяч записей и что изменилось для посетителей и небольшой ИТ-команды.

Читать далее

Как Bookbot использует Manticore Search для 3.5 млн сохранённых запросов и канала с 10% выручки

Reading time9 min
Reach and readers7K

Как Bookbot использует Manticore Search для поиска по 1.29 млн подержанных книг, сопоставляет новые поступления с 3.5 млн сохранённых запросов и развивает канал, на который приходится около 10% выручки.

Читать далее

Улучшенный векторный поиск по длинным документам: чанкинг внутри Manticore Search

Reading time28 min
Reach and readers6.9K

Модель эмбеддингов читает только первые несколько сотен токенов документа, а остальное молча отбрасывает. Теперь Manticore Search сам разбивает длинные документы при INSERT: добавьте chunk_strategy к векторному столбцу и выберите одну из пяти стратегий. Без конвейера загрузки и библиотек для разбиения текста. На нашей документации recall@5 для текста за пределами окна модели вырос с 55% до 83%.

Читать далее

Исследуйте данные Manticore с помощью OpenSearch Dashboards

Reading time7 min
Reach and readers4.5K

Подключите OpenSearch Dashboards к Manticore Search, исследуйте данные в Discover и создавайте визуализации и дашборды в знакомом интерфейсе.

Читать далее

Как вернуть top-N из каждой группы с GROUP_CONCAT()

Reading time6 min
Reach and readers6.3K

Разбираем на практическом примере, как в Manticore Search выбрать несколько последних элементов из каждой группы и собрать их в одну строку.

Читать далее

Как искать длинные хеши и ID с dict='keywords_32k'

Reading time7 min
Reach and readers5.9K

Практическое руководство по поиску длинных хешей, event ID, message ID и email в Manticore Search: лимиты, точное сравнение, wildcard-поиск, токенизация, миграция и ограничения.

Читать далее

Как KupujemProdajem ищет по 5,6 миллиона объявлений примерно за 10 мс с помощью Manticore Search

Reading time6 min
Reach and readers6.5K

Как крупнейшая площадка объявлений Сербии использует Manticore Search, чтобы искать по 5,6 миллиона активных объявлений примерно за 10 мс, обновлять индекс в реальном времени и готовиться к гибридному поиску.

Читать далее

UUID в Manticore: практическое руководство

Reading time9 min
Reach and readers8K

В обзорной статье мы разобрали, зачем использовать в поиске тот же UUID, что и в основной базе (если таковая имеется). Здесь сразу перейдём к практике: создадим таблицу, выполним основные операции через SQL и JSON API, а затем загрузим несколько документов через /bulk.

Все примеры рассчитаны на Manticore Search 28.5.0 или новее. Значение <generated UUID> в ответах обозначает UUID, который Manticore создаст при обработке запроса. Копировать эту строку в следующий запрос не нужно: подставьте фактический id из своего ответа.

Читать далее

UUID в Manticore: единый ID для основной БД и Manticore

Reading time5 min
Reach and readers9K

Допустим, у вашего товара в основной базе уже есть ID 550e8400-e29b-41d4-a716-446655440000. Он попадает в события, логи и ответы API. Но при загрузке того же товара в Manticore приложению приходится выдавать ему ещё один, числовой ID.

До Manticore Search 28.5.0 ID документа был беззнаковым 64-битным числом. UUID можно было сохранить в отдельном строковом атрибуте, однако идентификатором документа он от этого не становился. Для UPDATE, REPLACE и DELETE всё равно требовался числовой id.

В результате приходилось хранить соответствие между UUID из основной БД и числовым ID в таблице Manticore. Теперь без него можно обойтись: RT-таблица Manticore умеет использовать UUID как ID документа.

Читать далее

Фасетный поиск с активными фильтрами

Reading time10 min
Reach and readers6.1K

Фасеты в интернет-магазине кажутся простыми до первого выбранного фильтра.

В каталоге это часть навигации. Выбранный цвет не должен исчезать из списка. Соседние цвета лучше оставить доступными: пользователь может переключиться на них или расширить выбор. А варианты без товаров полезнее сразу показать как недоступные. Внутри одного фасета обычно работает OR: красный или синий. Между разными фасетами - AND: бренд, цвет и размер одновременно.

Неприятная часть начинается после первого выбора. Представьте каталог товаров: пользователь выбрал бренд, цвет и размер. Основная выдача должна остаться узкой и показать только товары, которые подходят под все три условия. Но панель фильтров живёт по другим правилам. В ней нужно сохранить выбранный цвет и одновременно показать цвета, на которые можно переключиться при том же бренде и размере.

Если каждый фасет наследует все фильтры из основного запроса, он быстро схлопывается до уже выбранных значений. Если для каждого фасета фильтры приходится пересобирать вручную, появляются отдельные ветки запросов для цвета, размера, бренда, наличия, продавца и остальных атрибутов.

В Manticore Search 25.12.0 появился facet_filter_mode, который переносит это поведение в API фасетов. Теперь в запросе можно описать, как ведёт себя панель фильтров магазина, а приложению не нужно вручную собирать почти одинаковые запросы для каждого фасета.

Читать далее

Meilisearch и Manticore Search: проверяем сравнение на практике

Reading time12 min
Reach and readers7K

Несколько дней назад Meilisearch опубликовал сравнение с Manticore Search . Мы тоже любим сравнения: в 2023 году опубликовали своё с воспроизводимыми бенчмарками. Сразу оговоримся: мы спорим не со всей статьёй. Часть выводов Meilisearch справедлива, а кое-где сравнение говорит в пользу Manticore Search.

Однако часть сведений о Manticore Search уже устарела. Спорить в теории мы не стали: запустили актуальные версии обоих движков (Manticore Search 28.4.4 и Meilisearch 1.41/1.48) и повторили описанные сценарии. Ниже мы приводим команды и ответы обоих движков, чтобы проверку можно было повторить самостоятельно.

Читать далее

Чек‑лист внедрения аутентификации Manticore в продакшн

Reading time16 min
Reach and readers11K

В проде подход «включил и готово» почти никогда не работает. Для автономного узла техническая последовательность короткая: включить auth, перезапустить Manticore, создать администратора и обновить клиентов. В топологии с распределёнными таблицами или репликационными кластерами нужна дополнительная подготовка, потому что узлам тоже приходится аутентифицироваться друг у друга.

Относитесь к внедрению как к небольшому релизу. Сначала инвентаризируйте клиентов и узлы, подготовьте данные аутентификации и отрепетируйте процедуру для своей топологии. Затем переключайтесь. Репетиция выявит сбои до технологического окна.

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

Выберите процедуру по топологии:

Читать далее

Как защитить Manticore Search с помощью встроенной аутентификации и авторизации

Reading time8 min
Reach and readers6.6K

Поиск нередко считают просто инфраструктурой. Но в продакшене он фактически работает как API приложения: принимает пользовательский трафик, отдаёт бизнес‑данные, обслуживает дашборды и нередко стоит рядом с записями, которые не должны быть доступны каждому клиенту в сети.

В Manticore Search теперь (с релиза 27.1.5 ) есть встроенная аутентификация и авторизация — для SQL по протоколу MySQL, для HTTP/HTTPS‑эндпоинтов и для операций, связанных с репликацией.

Аутентификация отвечает на вопрос «кто делает запрос?». Авторизация — «что этому пользователю разрешено делать?».

Пользователи, которые уже используют Manticore могут подключить новую функциональность, сохранив привычные способы работы с Manticore. Существующие SQL и HTTP‑клиенты сохраняют свои обычные паттерны подключения. В приложениях требуются минимальные изменения.

Читать далее

Встроенная аутентификация и авторизация в Manticore Search

Reading time4 min
Reach and readers6.6K

Поиск — уже не просто поле на веб‑сайте. Во многих случаях Manticore Search работает как внутренняя служба обработки данных: приложения направляют к нему запросы, процессы загрузки данных обновляют таблицы в нём, панели мониторинга получают из него данные, а операторы изменяют схемы таблиц. Когда всё это опирается лишь на сетевое доверие, контроль доступа быстро становится уязвимым.

Именно поэтому в Manticore Search теперь встроены аутентификация и авторизация. Функциональность добавлена в версиях 27.x и описана в посте о релизе 27.1.5 : она позволяет Manticore проверять, кто подключается и что этому пользователю разрешено делать.

Новая функциональность работает через SQL, HTTP/HTTPS-клиентов, распределённых и удалённых агентов и поддерживает репликацию.

Читать далее

Manticore Search 28.4.4: быстрый рескоринг KNN, более гибкий диалоговый поиск, упрощённая установка и улучшенные фасеты

Reading time5 min
Reach and readers8.4K

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

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

Читать далее

Turbopuffer vs Manticore Search: бенчмарк на недорогих VPS

Reading time17 min
Reach and readers7.5K

Векторные базы данных в serverless-модели обычно обещают простую вещь: не требуется развёртывание и настройка, а провайдер берёт на себя управление хранилищем, масштабирование и обеспечение доступности. turbopuffer - один из лучших примеров этого класса: быстрый движок векторного поиска, использующий object storage в качестве хранилища, которым пользуются Cursor, Notion, Linear и другие.

Такой подход действительно снижает операционную нагрузку на команду, но он не бесплатен. Поэтому возникает закономерный вопрос: какая часть этих преимуществ нужна небольшому, четко определенному сценарию, и во что обойдется та же нагрузка на двух недорогих VPS с Manticore Search - по цене и по производительности?

В этой статье мы подтверждаем это цифрами: сравниваем две системы в одинаковых условиях на одном и том же наборе данных.

Читать далее

Шардинг в Manticore Search: автоматическое распределение и репликация

Reading time20 min
Reach and readers9.2K

На старте поисковая система часто устроена просто: одна таблица на одном сервере. Это работает, пока не случится одно из двух. Либо отдельный запрос перестаёт задействовать весь CPU, за который вы заплатили, либо одного сервера перестаёт хватать — по объёму, по пропускной способности или просто потому, что сервер может выйти из строя, и данные на нём будут потеряны.

Автоматический шардинг, встроенный в Manticore Search и доступный начиная с релиза 27.1.5 , решает обе проблемы, разбивая таблицу на несколько физических фрагментов меньшего размера (шардов), по которым можно выполнять поиск параллельно и которые можно размещать на разных узлах:

Читать далее

Ускоренное построение KNN-индексов в Manticore

Reading time7 min
Reach and readers10K

Раньше построение KNN-индекса было самым медленным этапом при сохранении и слиянии чанков в таблицах с векторными атрибутами. Начиная с v27.1.5 , Manticore может задействовать несколько ядер CPU при сохранении чанков, слияниях через OPTIMIZE, авто-оптимизации и ALTER TABLE ... REBUILD KNN. На 16-ядерном Ryzen 9 5950X построение KNN-индекса для 1 миллиона 1536-мерных векторов сократилось с 8 минут до 39 секунд.

Читать далее

Information

Rating
589-th
Registered
Activity