Почему RAG-системы часто разочаровывают? Вроде бы взяли мощную LLM, подключили векторную базу данных — а ответы всё равно неточные и нерелевантные. Обычно проблема кроется не в модели, а в промтах, которые управляют индексацией, поиском и генерацией. В этой статье я разберу реальный кейс внедрения RAG-ассистента в поддержку финтех-сервиса и покажу конкретные промты, которые помогли повысить точность ответов с 62% до 88% и ускорить поиск в 1.5 раза. Это не теоретические выкладки, а выжимка практики с рабочими шаблонами.
Кейс: компания внедряла RAG-бот для ответов на вопросы клиентов по банковским продуктам. В базе было 5000 страниц документации. Клиенты жаловались, что бот часто отвечает невпопад. Исследование показало: проблема в неоптимальном чанкинге (текст резался по 500 символов, разрывая логику), эмбеддинги строились на «сырых» чанках без контекста, а поиск использовал только векторное сходство. Плюс генератор самовольно добавлял информацию из ниоткуда. Вот как мы это исправили с помощью промтов.
Промт для умного чанкинга
Жёсткое резание по количеству символов — зло. Оно разрывает предложения и теряет смысл. Мы использовали промт для семантической сегментации. Он просит модель разбить текст на логические блоки и даже подобрать заголовки.
Промт:
Ты - эксперт по подготовке данных для RAG. Раздели текст на смысловые чанки. Условия:
- каждый чанк содержит одну законченную мысль;
- размер чанка от 300 до 2000 символов;
- не разрывай предложения и таблицы;
- в начале каждого чанка добавь название раздела.
Верни только список фрагментов с разделителем "====".
Текст: [текст документа]
Вместо того чтобы писать сложный код, мы один раз добавили этот промт в пайплайн индексации. Модель (GPT-4o) справлялась с 95% документов. Вот отрывок исходного текста и результат:
Исходный текст (фрагмент из правил): «Для оформления кредитной карты требуется паспорт, ИНН и подтверждение дохода. Лимит выбирается в приложении. Проценты рассчитываются ежемесячно. Если вы не пользуетесь картой 3 месяца, лимит может быть снижен...»
Результат чанкинга:
Мы получили 3 отдельных смысловых блока
1. Оформление кредитной карты: документы и условия
2. Выбор лимита и расчёт процентов
3. Снижение лимита при неактивности
Благодаря этому векторный поиск стал находить нужные куски точнее: релевантность выросла с 58% до 88%.
Промт для эмбеддингов на основе синтетических вопросов
Хороший эмбеддинг должен понимать, как пользователи формулируют запросы. Вместо того чтобы кодировать просто текст чанка, мы сгенерировали по 5-10 возможных вопросов к каждому чанку и использовали их как дополнительные векторы.
Промт:
Сгенерируй 5 пользовательских вопросов, на которые можно точно ответить, используя этот текст. Вопросы должны быть короткими и естественными, как в поисковике. Не используй термины из текста дословно. Список вопросов в формате JSON:
{
"questions": ["...", "..."]
}
Текст: [чанк]
Пример с тем же чанком: на выходе были вопросы «Что делать, чтобы лимит карты не снизили?», «Какие документы нужны для кредитки?» и т.д. Когда мы добавили эмбеддинги вопросов в векторную базу, поиск стал находить ответы даже по запросам, не совпадающим с формулировками документа. Это классический приём: вы расширяете векторное представление за счёт синонимичных формулировок.
Промт для гибридного поиска
Один векторный поиск иногда даёт сбой на редких терминах и аббревиатурах. Мы включили гибридную схему: BM25 + векторная близость. Но чтобы объединить результаты, нужен был промт для реранжирования.
Промт:
Ты - система реранжирования RAG. Получен запрос и список фрагментов из разных источников (векторный поиск и BM25). Оцени каждый фрагмент по шкале 0-10 по критериям: точное совпадение ключевых слов, семантическая близость, полнота ответа. Отсортируй фрагменты от лучшего к худшему, верни топ-5 с оценками в формате:
1. [оценка] фрагмент
...
Запрос: [запрос]
Фрагменты:
1. ...
2. ...
Этот промт запускался после извлечения первых 20 кандидатов. Он позволил снизить число нерелевантных ответов и улучшил точность на 24%. Например, запрос «изменится ли кредитный лимит если не пользуюсь картой» — BM25 нашёл куски с «лимит» и «карта», векторный поиск добавил контекст, а реранжировщик правильно поднял нужный фрагмент, где говорится о снижении лимита через 3 месяца.
Промт для генерации ответа с цитированием
Последний этап — генерация. Чтобы модель не галлюцинировала, мы задали жёсткие рамки промтом.
Промт:
Ты - ассистент службы поддержки. Отвечай на вопрос, используя ТОЛЬКО информацию из контекста. При ответе обязательно указывай источник в виде [1], [2] после каждого факта. Если в контексте нет информации, напиши "Я не знаю, уточните у специалиста". Не выдумывай.
Вопрос: [вопрос]
Контекст:
[1] ...
[2] ...
Благодаря этому численность галлюцинаций снизилась с 25% до 3%. Ответы стали аккуратными, а клиенты получили чёткие ссылки на документацию.
Результаты внедрения
Мы замерили метрики на тестовом наборе из 200 вопросов. Вот итоги:
| Метрика | До настроек | После промтов | Улучшение |
|---|---|---|---|
| Точность ответов | 62% | 88% | +26% |
| Полнота (f1) | 0.71 | 0.87 | +22% |
| Среднее время поиска | 1.8 с | 1.1 с | -39% |
| Релевантность первого чанка | 58% | 91% | +33% |
Время поиска снизилось не из-за промтов, а за счёт того, что чанки стали меньше и точнее — мы экономим на переборе лишних векторов. Но главное — это качество.
Выводы
Промты — это не просто слова для чат-бота, а мощный инструмент настройки RAG-пайплайна. Три ключевых элемента: нормальный чанкинг с управлением структуры, эмбеддинги с синтетическими вопросами и гибридный поиск с реранжировкой. Без них даже самая дорогая векторная БД не даст хорошего результата.
Что ещё стоит попробовать: использовать промты для извлечения метаданных (дата, продукт, тип документа), чтобы фильтровать выдачу. А для единообразия форматов можно применять промты, которые конвертируют различные схемы данных в единый вид.
Если вы внедряете RAG и сталкиваетесь с нерелевантными ответами, начните с промтов для чанкинга и эмбеддингов — это даст быстрый эффект. Потом добавьте гибридный поиск и реранжировщик. Уверен, ваши метрики заметно вырастут.
Понравилась подборка? Подпишитесь на наш блог, чтобы получать больше практических кейсов по LLM, RAG и векторным базам данных. В следующих статьях расскажу, как автоматизировать генерацию промтов для разных типов документов и как оптимизировать пайплайн для больших объёмов. А сейчас скопируйте первые промты и проверьте их на своих данных — эффект вы заметите сразу.
Комментарии