Гайд · TNWS AI
Как проверить documentTemplate Meilisearch до запуска переиндексации
Точная проверка Liquid-шаблона через POST /render-template на реальных и новых документах, без лишних полей и расходов.
Задача, применимость и подтверждённые факты
Русскоязычный запрос: «как проверить documentTemplate Meilisearch render-template». Документация производителя проверена 19 сентября 2026 года. У вас уже есть embedding-конфигурация, но в неё попадают служебные поля, а короткие документы индексируются некорректно. Цель — проверить именно входной текст модели, прежде чем изменять настройки embedder и запускать обновление vectors всего корпуса. render-template не заменяет оценку качества модели; он обнаруживает ошибки подстановки и избыточный контекст.
Без явного documentTemplate стандартный вариант может включить все доступные ненулевые searchable поля и ненужные данные. POST /render-template принимает объект template с kind:inlineDocumentTemplate и inline, а input может быть indexDocument с indexUid и ID. Ответ содержит rendered — итоговую строку. Другой режим использует сохранённый template конкретного embedder и поданный inlineDocument, удобный для нового документа.
Прежде чем менять рабочий индекс, сохраните его настройки и небольшой набор контрольных документов с ожидаемыми ID. Важно отделять принятие конфигурации сервером от готовности асинхронной обработки: поисковая выдача до завершения задачи не служит честным тестом качества. Для примеров с токенами ${OPENAI_API_KEY} нужен реальный секрет в защищённом окружении; строки-заглушки не являются рабочими ключами.
Порядок действий
- Выберите три записи: полную, с пропущенным описанием и с длинным/чувствительным полем.
- Сформулируйте шаблон только из тех полей, которые помогают находить документ; уберите токены, внутренние ID и персональные комментарии.
- Отправьте
/render-templateдля существующего ID и проверьте полученныйrenderedбуквально. - Проверьте новый объект через
documentTemplateплюсinlineDocument, чтобы выявить отсутствующие ключи до индексации. - Сравните результаты для двух вариантов на контрольных вопросах, только затем меняйте embedders setting.
После каждого шага сохраняйте ID операции или задачи, связанные с тестом версии модели, а не только HTTP-статус. Если задача окончилась ошибкой, не скрывайте её повторным запросом к поиску: сначала устраняйте причину. Применение к Meilisearch Cloud и самостоятельной установке зависит от доступности endpoint и полномочий ключа; здесь используются точные имена HTTP API из официальной документации, но не выдуманные пункты интерфейса.
Готовый запрос или шаблон
POST /render-template
{"template":{"kind":"inlineDocumentTemplate",
"inline":"Тема: {{doc.title}}. Суть: {{doc.body|truncatewords:40}}"},
"input":{"kind":"indexDocument","indexUid":"kb","id":"refund:1"}}
Никогда не копируйте заглушки URL, API key, model ID или тестовые vectors в рабочую систему без замены и проверки. Векторы длины три демонстрируют контракт данных; они не представляют реальную языковую модель и не позволяют обещать заданный порядок поисковых результатов.
Пример входа и ожидаемого результата
Вход: refund:1 с заголовком «Возврат оплаты», телом с условиями и служебным полем private_note. Ожидаемое rendered начинается с «Тема: Возврат оплаты. Суть: ...», не содержит private_note и не остаётся пустым. Отрицательный вход — документ без body: проверка должна показать, что векторный текст потерял существенное содержание.
Что важно при внедрении
Разные ошибки имеют разные последствия. Утечка приватного поля отправляет лишние данные embedding-провайдеру; слишком длинный текст увеличивает нагрузку или обрезается провайдером; отсутствие оговорки превращает похожий документ в неверный ответ. Тестируйте не только синтаксис, но и смысл полученного текста: если важна фраза «кроме цифровых товаров», она должна пережить сокращение. Не удаляйте source_id из самого документа: он нужен генератору для проверки цитат, даже если не нужен для embedding. Изменение шаблона может переобработать документы, поэтому планируйте миграцию и следите за task status и ограничениями провайдера. Снимайте снимок прежнего template и выборку rendered-строк, чтобы объяснить изменение качества после релиза. У userProvided этот параметр запрещён: если vectors вычисляются вручную, формируйте текст на своей стороне.
Критерии проверки
- Ответ
renderedпроверен для заполненного и неполного документа. - Чувствительные поля и технический мусор исключены.
- Условия и отрицания сохраняются после обрезки.
- После применения настроек task дошла до успешного состояния.
Сделайте повторный запуск тех же запросов после изменения модели, схемы, API поставщика или состава корпуса. Фиксируйте source IDs, текст-основание ответа, долю верных top-k и задержку на одинаковых данных. Для RAG найденный hit — свидетельство релевантности, не разрешение придумывать содержание: генератору передавайте только допустимые фрагменты, а утверждения проверяйте по первоисточнику.
Ошибки и чего не делать
- Менять documentTemplate сразу на рабочем большом индексе без рендера.
- Включать конфиденциальные поля по умолчанию.
- Использовать шаблон с userProvided.
- Обрезать текст до потери оговорок.
Не используйте высокий _rankingScore как вероятность истинности текста. При незнакомом вопросе возвращайте недостаточность данных вместо уверенной генерации на случайном соседнем документе. Если у вас есть tenant или права доступа, отфильтровывайте документы до передачи LLM и проверяйте отрицательным тестом отсутствие чужого источника.
FAQ
Что возвращает /render-template?
Итоговую строку в rendered вместе с template.
Создаёт ли маршрут embeddings?
Нет, он проверяет рендер текста.
Можно ли проверить новый документ?
Да через inlineDocument и сохранённый шаблон.
Нужно ли включать source_id в template?
Только если ID несёт семантику; для цитат храните его отдельно.
Официальные источники
Частые вопросы
Что возвращает /render-template?
Итоговую строку в `rendered` вместе с template.
Создаёт ли маршрут embeddings?
Нет, он проверяет рендер текста.
Можно ли проверить новый документ?
Да через inlineDocument и сохранённый шаблон.
Нужно ли включать source_id в template?
Только если ID несёт семантику; для цитат храните его отдельно.
Читайте также
Как сохранить несколько embeddings одного документа в Meilisearch
Массив векторов одного документа в _vectors.embeddings для нескольких абзацев, их обновление и проверка релевантности.
Как настроить composite embedders Meilisearch для индексации и поиска
Экспериментальный compositeEmbedders: разные среды одной модели, равная размерность, совместимость vectors и план отката.
Как настроить distribution в Meilisearch для слишком высоких semantic scores
Проверка showRankingScore, подбор mean/sigma и контроль порога релевантности без переиндексации vectors.
Комментарии
Пока тихо. Скажите первое слово