Промт для поиска по названию в массиве названий: как научить нейросеть находить нужное

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

Ключевая идея

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

Из чего состоит рабочий промт для поиска

Универсальный промт для поиска по названию включает пять обязательных элементов:

1. Роль

Кто выполняет поиск: «Ты — помощник по поиску в каталоге».

2. Данные

Сам массив названий, переданный в промт целиком или по частям.

3. Запрос

Что именно ищет пользователь, подставляется в шаблон.

4. Критерии поиска

Точное совпадение, частичное, учёт синонимов и опечаток.

5. Формат ответа

Что вернуть: название, индекс в массиве, список совпадений или «не найдено».

Готовый шаблон промта

Ты — система поиска по списку названий.

Вот массив названий:
["Кружка керамическая 350 мл", "Кружка стеклянная 300 мл",
 "Термокружка 500 мл", "Кружка с ложкой, керамика",
 "Тарелка обеденная 25 см", "Тарелка десертная 20 см"]

Запрос пользователя: «{запрос}»

Правила:
1. Найди название, максимально соответствующее запросу.
2. Учитывай синонимы, опечатки и другой порядок слов.
3. Если подходящих вариантов несколько, верни до трёх,
   отсортировав по релевантности.
4. Если совпадений нет, ответь строго: NOT_FOUND.

Формат ответа — только массив совпавших названий,
без пояснений.

Такой шаблон работает предсказуемо: модель не выдумывает названия, которых нет в списке, и возвращает результат в машиночитаемом виде.

Типы поиска и как их задать в промте

Тип поиска Суть Фраза в промте
Точный Совпадение слово в слово «Верни только название, совпадающее с запросом точно»
Частичный Запрос входит в название как подстрока «Верни все названия, содержащие запрос целиком или по словам»
Нечёткий Учёт опечаток и перестановок «Учитывай опечатки, склонения и порядок слов»
Семантический Поиск по смыслу, синонимам «Подбери название, ближайшее по смыслу, даже без совпадения слов»

Типичные ошибки при составлении промта

Нет правила для «не найдено»

Без явной инструкции модель склонна выдумывать ближайшее название. Всегда добавляйте: «Если совпадений нет — ответь NOT_FOUND».

Слишком большой массив

На списках из тысяч названий модель теряет точность и выходит за лимит контекста. Разбивайте список на части или предварительно отфильтруйте кандидатов обычным кодом.

Свободный формат ответа

Если не зафиксировать формат, модель добавит пояснения и отладку. Требуйте: «Ответ — только массив, без пояснений».

Дубли и пустые строки в списке

Модель может вернуть дубликат как два разных результата. Очищайте и нумеруйте массив перед отправкой.

Как повысить точность поиска

  • Нумеруйте элементы массива. Просите вернуть индекс результата — так проще сверить ответ и обработать его в коде.
  • Нормализуйте регистр. Укажите: «Сравнение без учёта регистра букв» — особенно важно для смешанных русско-английских списков.
  • Просите оценку уверенности. Например: «Добавь к каждому результату score от 0 до 1» — и потом отсекайте неуверенные совпадения.
  • Давайте примеры. Один-два примера пары «запрос → правильный ответ» (few-shot) заметно стабилизируют поведение модели.
  • Фильтруйте до нейросети. Сначала отберите кандидатов простым поиском подстроки, а модель пусть выбирает лучший вариант из десятка, а не из десяти тысяч.

Пример диалога с моделью

Запрос пользователя: «кружкп термо»

Ответ модели:
["Термокружка 500 мл"]

---

Запрос пользователя: «кружка»

Ответ модели:
["Кружка керамическая 350 мл",
 "Кружка стеклянная 300 мл",
 "Кружка с ложкой, керамика"]

---

Запрос пользователя: «вилка столовая»

Ответ модели:
NOT_FOUND

Как видно, модель справляется с опечаткой («кружкп термо»), возвращает несколько совпадений при неоднозначном запросе и корректно сообщает об отсутствии результата — именно такое поведение закладывает правильный промт.

Итог

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