Поиск по названию в массиве названий — одна из самых частых задач, которую решают с помощью нейросетей: подобрать товар из каталога, найти нужный документ в списке, сопоставить запрос пользователя с базой наименований. Качество результата напрямую зависит от того, как составлен промт.
Ключевая идея
Нейросеть не «ищет» так, как база данных. Она сопоставляет смысл и формулировки. Поэтому промт должен чётко описывать массив, формат ответа и правила для случаев, когда точного совпадения нет.
Из чего состоит рабочий промт для поиска
Универсальный промт для поиска по названию включает пять обязательных элементов:
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
Как видно, модель справляется с опечаткой («кружкп термо»), возвращает несколько совпадений при неоднозначном запросе и корректно сообщает об отсутствии результата — именно такое поведение закладывает правильный промт.
Итог
Надёжный промт для поиска по названию в массиве — это не магическая формула, а дисциплина: чётко описанный список, явные критерии совпадения, жёсткий формат ответа и обязательное правило на случай «ничего не найдено». Соблюдая эти четыре принципа, можно использовать нейросеть как предсказуемый поисковый движок поверх любого списка названий.