Гайд · TNWS AI

Как настроить semanticRatio в Meilisearch для артикулов и смысловых запросов

4 мин—

Сравнение keyword, hybrid и semantic режимов на SKU и перефразированиях с точными JSON-параметрами и критериями качества.

Задача, применимость и подтверждённые факты

Русскоязычный запрос: «как настроить semanticRatio Meilisearch». Документация производителя проверена 19 сентября 2026 года. Поиск по каталогу должен находить и точный SKU-42, и товар по фразе «чем перемешать тесто», даже если такого слова в названии нет. Настроенный embedder нужен для векторной ветви; один semanticRatio не создаст embeddings. Цель — выбрать долю двух стратегий для вашего набора запросов, а не объявить значение 0.5 магическим.

hybrid.semanticRatio — число от 0 до 1. Ноль оставляет keyword retrieval, единица — semantic retrieval, промежуточные значения смешивают результаты; официальная документация называет 0.5 исходным вариантом гибридного поиска. Параметр задаётся на уровне запроса, поэтому разные сценарии могут использовать разные значения без переиндексации. Настройка опирается на gold set и конкретный embedder.

Прежде чем менять рабочий индекс, сохраните его настройки и небольшой набор контрольных документов с ожидаемыми ID. Важно отделять принятие конфигурации сервером от готовности асинхронной обработки: поисковая выдача до завершения задачи не служит честным тестом качества. Для примеров с токенами ${OPENAI_API_KEY} нужен реальный секрет в защищённом окружении; строки-заглушки не являются рабочими ключами.

Порядок действий

  1. Соберите минимум три класса вопросов: точный код, описание синонимами и смешанная фраза.
  2. Назначьте каждому вопросу ожидаемые document IDs и допустимые позиции в top-5.
  3. Выполните три одинаковых запроса с semanticRatio 0, 0.5 и 1; меняйте только значение ratio.
  4. Подберите промежуточную настройку по качеству и p95; для важного SKU задайте отдельный серверный маршрут, если необходимо.
  5. После выбора проверьте отложенную выборку, на которой параметры не подбирались, и оставьте возможность отката.

После каждого шага сохраняйте ID операции или задачи, связанные с тестом версии модели, а не только HTTP-статус. Если задача окончилась ошибкой, не скрывайте её повторным запросом к поиску: сначала устраняйте причину. Применение к Meilisearch Cloud и самостоятельной установке зависит от доступности endpoint и полномочий ключа; здесь используются точные имена HTTP API из официальной документации, но не выдуманные пункты интерфейса.

Готовый запрос или шаблон

POST /indexes/products/search
{"q":"SKU-42 устройство для взбивания теста",
 "hybrid":{"embedder":"products-v1","semanticRatio":0.5},
 "limit":5,"showRankingScore":true}

Никогда не копируйте заглушки URL, API key, model ID или тестовые vectors в рабочую систему без замены и проверки. Векторы длины три демонстрируют контракт данных; они не представляют реальную языковую модель и не позволяют обещать заданный порядок поисковых результатов.

Пример входа и ожидаемого результата

Вход: A с точным артикулом SKU-42, B с описанием «венчик для густого теста», C — аксессуар другого артикула. Для запроса SKU-42 ожидайте A в первых позициях; для «чем взбить густое тесто» заранее отметьте B как релевантный. Для смешанного запроса проверьте A и B без обещания фиксированного порядка: он зависит от данных и модели.

Что важно при внедрении

Доля семантики не равна линейной вероятности правильного ответа и не гарантирует, что каждый поиск даст равное число результатов двух типов. Ведите таблицу per-query: есть ли нужный ID в top-5, сколько времени заняла генерация query vector и не был ли вытеснен точный код. Если ratio 1 улучшает синонимы, но губит буквальные SKU, сегментируйте интерфейс либо снимайте намерение на backend, не прячьте ошибку в средней метрике. Если ratio 0 быстро отрабатывает, но не видит перефразирования, проверьте успешность индексирования vectors до изменения веса. Для финансовых/медицинских ответов одного поискового score недостаточно: генерация должна опираться на проверяемый текст, а не на близость чисел.

Сравнение решений

РежимsemanticRatioВывод по сценарию
keyword0.0точный SKU и термин
hybridмежду 0 и 1смешанный запрос после проверки
semantic1.0перефразирование без точного совпадения

Сравнивайте режимы на фиксированном наборе вопросов и ID: табличные свойства указывают механизм, а не гарантируют результат на вашем корпусе.

Критерии проверки

  • Три режима сравниваются на одних IDs и неизменном индексе.
  • Точные артикула не теряются на контрольных кейсах.
  • Синонимы находятся без буквального слова.
  • Зафиксированы top-k и p95, не только выбранный ratio.

Сделайте повторный запуск тех же запросов после изменения модели, схемы, API поставщика или состава корпуса. Фиксируйте source IDs, текст-основание ответа, долю верных top-k и задержку на одинаковых данных. Для RAG найденный hit — свидетельство релевантности, не разрешение придумывать содержание: генератору передавайте только допустимые фрагменты, а утверждения проверяйте по первоисточнику.

Ошибки и чего не делать

  • Принимать 0.5 за обязательный оптимум.
  • Путать ratio с оценкой релевантности конкретного hit.
  • Менять model и ratio одновременно.
  • Судить по одному удачному запросу.

Не используйте высокий _rankingScore как вероятность истинности текста. При незнакомом вопросе возвращайте недостаточность данных вместо уверенной генерации на случайном соседнем документе. Если у вас есть tenant или права доступа, отфильтровывайте документы до передачи LLM и проверяйте отрицательным тестом отсутствие чужого источника.

FAQ

Что означает 0?

Только полнотекстовая ветвь.

Что означает 1?

Только семантическая ветвь.

Нужен ли embedder при гибридном поиске?

Да, для семантической части.

Можно ли менять ratio для каждого запроса?

Да, это параметр search body.

Официальные источники

Частые вопросы

Что означает 0?

Только полнотекстовая ветвь.

Что означает 1?

Только семантическая ветвь.

Нужен ли embedder при гибридном поиске?

Да, для семантической части.

Можно ли менять ratio для каждого запроса?

Да, это параметр search body.

Читайте также

Комментарии

Пока тихо. Скажите первое слово