Гайд · TNWS AI
Как включить binary quantization в Meilisearch и не потерять исходные vectors
Необратимая настройка binaryQuantized: план отдельного embedder, сравнение памяти, качества и стратегии восстановления.
Задача, применимость и подтверждённые факты
Русскоязычный запрос: «как включить binaryQuantized Meilisearch». Документация производителя проверена 19 сентября 2026 года. Память и дисковое пространство для высокоразмерных embeddings стали ограничением. Meilisearch предлагает однобитное представление компонентов вектора через binaryQuantized. Это изменение подходит только после измерения качества на вашем датасете; особенно осторожно проверяйте короткие vectors. Не применяйте настройку сразу к единственной рабочей копии.
Параметр binaryQuantized:true задаётся на embedder в settings. Официальная документация описывает снижение точности сходства в обмен на меньший размер и предупреждает: после активации исходные полноточные vectors отбрасываются, отмена для этого же embedder невозможна; для восстановления создают новый embedder и индексируют документы заново. Документация приводит ориентиры, что выгода заметнее для размерности порядка 1400+ и крупных корпусов, но это не обещание экономии конкретной системы.
Прежде чем менять рабочий индекс, сохраните его настройки и небольшой набор контрольных документов с ожидаемыми ID. Важно отделять принятие конфигурации сервером от готовности асинхронной обработки: поисковая выдача до завершения задачи не служит честным тестом качества. Для примеров с токенами ${OPENAI_API_KEY} нужен реальный секрет в защищённом окружении; строки-заглушки не являются рабочими ключами.
Порядок действий
- Заморозьте корпус и выборку запросов с размеченными source IDs; измерьте качество и размер хранилища до изменения.
- Создайте отдельный тестовый embedder/индекс с той же моделью и включённым
binaryQuantized, сохранив неизменную базовую конфигурацию. - Дождитесь выполнения tasks, затем сравните top-10 IDs, nDCG/Recall, p95 и размер фактических данных.
- Проверьте редкие и отрицательные случаи, где потеря точности меняет первый ответ или приводит к чужому source ID.
- Если выигрыш стоит потерь, выполните управляемое переключение; исходную конфигурацию держите до завершения контрольного периода.
После каждого шага сохраняйте ID операции или задачи, связанные с тестом версии модели, а не только HTTP-статус. Если задача окончилась ошибкой, не скрывайте её повторным запросом к поиску: сначала устраняйте причину. Применение к Meilisearch Cloud и самостоятельной установке зависит от доступности endpoint и полномочий ключа; здесь используются точные имена HTTP API из официальной документации, но не выдуманные пункты интерфейса.
Готовый запрос или шаблон
PATCH /indexes/kb/settings/embedders
{"large-bq-v2":{"source":"openAi","model":"text-embedding-3-large",
"apiKey":"${OPENAI_API_KEY}",
"documentTemplate":"{{doc.title}}: {{doc.body}}",
"binaryQuantized":true}}
Никогда не копируйте заглушки URL, API key, model ID или тестовые vectors в рабочую систему без замены и проверки. Векторы длины три демонстрируют контракт данных; они не представляют реальную языковую модель и не позволяют обещать заданный порядок поисковых результатов.
Пример входа и ожидаемого результата
Вход: 1000 frozen документов, 50 размеченных вопросов, два индекса с одним и тем же model ID; в B включён BQ. Ожидается отчёт: размер индекса, top-10 IDs, Recall@10, p95 по обоим вариантам. Нельзя заранее обещать, что качество B останется неизменным; публикуйте именно измеренные значения, а не теоретическое соотношение битов.
Что важно при внедрении
Теоретическое 32-битное число против одного бита полезно для понимания механизма, но общий размер Meilisearch включает документы, служебные структуры и другие данные. Поэтому проверяйте disk_usage реальной установки и стоимость полного refeed. BQ может быть особенно вредна при низкой dimension, где каждый утраченный компонент несёт большую долю информации. Сначала определите допустимую потерю качества, а не объясняйте ухудшение после выпуска. Если модель меняется одновременно с BQ, эксперимент перестаёт изолировать причину. Рассматривайте два переключателя как разные A/B сравнения. Для RAG дополнительный отрицательный тест должен показывать, что на вопрос без ответа в корпусе система не получает обманчивый высокий score от близкого, но неверного документа. Надёжный rollback — исходные полноточные vectors либо возможность заново их получить, а не попытка binaryQuantized:false на том же embedder.
Сравнение решений
| Вариант | Сохранение vector | Риск и сценарий |
|---|---|---|
| Полная точность | числа с плавающей точкой | baseline качества |
| binaryQuantized | по одному биту на компонент | экономия хранения ценой приближённого сходства |
Сравнивайте режимы на фиксированном наборе вопросов и ID: табличные свойства указывают механизм, а не гарантируют результат на вашем корпусе.
Критерии проверки
- Исходная полноточная копия доступна для отката.
- BQ проверена на одинаковом корпусе и модели.
- Размер и p95 измерены, а не вычислены из теории.
- Порог потери Recall@10 согласован до переключения.
Сделайте повторный запуск тех же запросов после изменения модели, схемы, API поставщика или состава корпуса. Фиксируйте source IDs, текст-основание ответа, долю верных top-k и задержку на одинаковых данных. Для RAG найденный hit — свидетельство релевантности, не разрешение придумывать содержание: генератору передавайте только допустимые фрагменты, а утверждения проверяйте по первоисточнику.
Ошибки и чего не делать
- Включать BQ на единственном рабочем embedder без исходных vectors.
- Считать изменение обратимым.
- Сравнивать разные модели и приписывать эффект квантизации.
- Игнорировать редкие запросы с пограничной релевантностью.
Не используйте высокий _rankingScore как вероятность истинности текста. При незнакомом вопросе возвращайте недостаточность данных вместо уверенной генерации на случайном соседнем документе. Если у вас есть tenant или права доступа, отфильтровывайте документы до передачи LLM и проверяйте отрицательным тестом отсутствие чужого источника.
FAQ
Можно ли выключить BQ назад?
Не для уже преобразованных vectors; нужен новый embedder и reindex.
На каких размерностях полезнее?
Обычно на высоких; проверяйте на своей модели.
Меняются ли документы?
Сравнивайте сами документы и task status при повторном индексировании.
Как оценить качество?
По IDs и экспертной разметке на одинаковом корпусе.
Официальные источники
Частые вопросы
Можно ли выключить BQ назад?
Не для уже преобразованных vectors; нужен новый embedder и reindex.
На каких размерностях полезнее?
Обычно на высоких; проверяйте на своей модели.
Меняются ли документы?
Сравнивайте сами документы и task status при повторном индексировании.
Как оценить качество?
По IDs и экспертной разметке на одинаковом корпусе.
Читайте также
Как сохранить несколько embeddings одного документа в Meilisearch
Массив векторов одного документа в _vectors.embeddings для нескольких абзацев, их обновление и проверка релевантности.
Как настроить composite embedders Meilisearch для индексации и поиска
Экспериментальный compositeEmbedders: разные среды одной модели, равная размерность, совместимость vectors и план отката.
Как настроить distribution в Meilisearch для слишком высоких semantic scores
Проверка showRankingScore, подбор mean/sigma и контроль порога релевантности без переиндексации vectors.
Комментарии
Пока тихо. Скажите первое слово