Введение
Retrieval-Augmented Generation (RAG) — один из самых мощных паттернов для создания систем, которые отвечают на вопросы, опираясь на внешние источники знаний. Однако на практике качество RAG-системы зависит не только от модели, но и от того, как вы индексируете документы, ищете релевантные фрагменты и генерируете финальный ответ. Промты здесь играют ключевую роль: правильно сформулированные инструкции могут улучшить качество чанкинга, повысить точность поиска и сделать ответы более связными.
Эта подборка — практическая шпаргалка из 10 проверенных промтов, которые я использую в своих проектах. Вы найдёте готовые шаблоны для трёх этапов RAG: индексации (чанкинг, эмбеддинги), поиска (гибридный, реранкинг) и генерации (ответы, суммаризация, оценка). Каждый промт снабжён примером и пояснением, как его адаптировать под вашу задачу.
1. Промт для интеллектуального чанкинга
Задача: разбить длинный документ на осмысленные фрагменты (чанки), сохраняя контекст и границы разделов.
Промт:
Ты — эксперт по обработке текстов. Разбей следующий документ на логические чанки длиной 200-300 слов. Каждый чанк должен быть самостоятельным смысловым блоком, не разрезай предложения и старайся сохранять границы абзацев. Для каждого чанка укажи его номер и краткое название (тему). Документ: {text}
Пример использования:
- Вход: длинная статья о квантовых вычислениях (5000 слов).
- Выход: 20 чанков с заголовками, например, «Чанк 1: Введение в кубиты», «Чанк 2: Квантовая запутанность» и т.д.
Этот промт можно подавать в LLM на этапе индексации, а затем использовать полученные чанки для создания эмбеддингов. В отличие от наивного разрезания по символам, такой подход сохраняет целостность смысла и улучшает поиск.
2. Промт для генерации контекстных эмбеддингов
Задача: получить эмбеддинг, который учитывает доменную специфику (например, медицину, юриспруденцию) и не теряет ключевые сущности.
Промт:
Ты — специалист по NLP. Проанализируй следующий текст и выдели в нём ключевые сущности, термины и связи. Создай обогащённое представление текста, добавив к нему доменные синонимы и релевантные понятия. Выведи результат в формате: оригинальный текст + список дополнительных ключевых слов. Текст: {text}
Пример использования:
- Вход: «Пациент принимает аспирин для профилактики тромбоза».
- Выход: «Пациент принимает аспирин для профилактики тромбоза» + [ацетилсалициловая кислота, антиагрегант, сердечно-сосудистый риск].
Полученные ключевые слова можно добавить к исходному тексту перед отправкой в эмбеддинг-модель. Это улучшает recall для редких терминов, что особенно важно в специализированных областях.
3. Промт для гибридного поиска (BM25 + векторный)
Задача: объединить результаты лексического поиска и векторного поиска, чтобы получить лучшие релевантные документы.
Промт:
Ты — поисковая система. У тебя есть два списка результатов: один от лексического поиска (BM25), другой от векторного (эмбеддинги). Объедини их в единый рейтинг, используя метод Reciprocal Rank Fusion (RRF). Присвой каждому документу итоговый ранг = сумма 1/(k + rank_lex) + 1/(k + rank_vec), где k=60. Выведи топ-10 документов с их рангами и источником. Лексический список: {lex_results} Векторный список: {vec_results}
Пример использования:
- Вход: два списка из 20 документов с рангами.
- Выход: объединённый список, где документы, найденные обоими способами, поднимаются выше.
Этот промт полезен, когда вы строите гибридный поиск вручную, без использования готовых библиотек. Он позволяет быстро экспериментировать с параметрами RRF.
4. Промт для реранкинга результатов по релевантности
Задача: пересортировать результаты поиска, отсеяв ложные срабатывания и подняв наверх действительно релевантные документы.
Промт:
Ты — реранкер. Оцени релевантность каждого документа относительно запроса по шкале от 0 до 10. Учитывай точное совпадение ключевых слов, семантическую близость и наличие ответа на запрос. Затем отсортируй документы по убыванию оценки и выведи новый список с указанием оценок. Запрос: {query} Документы: {documents}
Пример использования:
- Вход: запрос «симптомы диабета 2 типа» и 5 документов.
- Выход: отсортированный список с оценками, например, документ 3 — 9, документ 1 — 7 и т.д.
Используйте этот промт как второй этап после гибридного поиска. LLM-реранкинг часто лучше, чем простые скоринговые функции, но требует дополнительных вычислительных ресурсов.
5. Промт для составления векторного запроса с фильтрами
Задача: сформулировать запрос к векторной БД (например, Pinecone, Qdrant) с учётом метаданных и операторов фильтрации.
Промт:
Ты — помощник по работе с векторной базой данных. Пользователь хочет найти документы, которые удовлетворяют следующим условиям: {conditions}. Составь JSON-объект с полями: `embedding_query` (текст запроса для эмбеддинга), `filter` (условия для метаданных, например, {"date": {"$gte": "2024-01-01"}}). Верни только JSON без лишнего текста.
Пример использования:
- Вход: «Найди статьи о нейросетях за последний год, где автор — Иванов».
- Выход: JSON вида
{"embedding_query": "нейросети", "filter": {"date": {"$gte": "2025-08-03"}, "author": "Иванов"}}.
Этот промт полезен, когда вы строите интерфейс поиска для нетехнических пользователей — он автоматически преобразует естественный язык в структурированный запрос.
6. Промт для генерации ответа с опорой на контекст
Задача: сгенерировать точный ответ на вопрос, используя только предоставленные чанки, без галлюцинаций.
Промт:
Ты — ассистент, который отвечает строго по документам. Используй только информацию из приведённого контекста. Если ответа нет в контексте, напиши «Я не нашёл ответа в предоставленных документах». Не добавляй знаний из собственного обучения. Обязательно цитируй источник в квадратных скобках [1], [2] и т.д. Контекст: {context} Вопрос: {question}
Пример использования:
- Контекст: «[1] Симптомы диабета включают жажду и частое мочеиспускание. [2] Диабет 2 типа обычно развивается после 40 лет.»
- Вопрос: «Каковы симптомы диабета?»
- Ответ: «Согласно [1], симптомы включают жажду и частое мочеиспускание.»
Этот промт — базовый для RAG. Он снижает галлюцинации и повышает доверие к ответам за счёт цитирования.
7. Промт для суммаризации нескольких чанков в связный ответ
Задача: когда ответ требует информации из разных фрагментов, нужно синтезировать единый текст.
Промт:
Ты — аналитик. Внимательно прочитай фрагменты документов ниже. Составь связный ответ на вопрос, объединив информацию из всех фрагментов. Избегай повторов, структурируй ответ по логическим пунктам. Укажи, какие фрагменты были использованы. Фрагменты: {chunks} Вопрос: {question}
Пример использования:
- Фрагменты: «[1] Симптомы диабета…», «[2] Лечение включает диету…», «[3] Профилактика — это…»
- Вопрос: «Как лечить диабет?»
- Ответ: «Лечение включает диету [2] и профилактические меры [3]…»
Этот промт особенно полезен для сложных вопросов, где ответ распределён по нескольким чанкам.
8. Промт для оценки качества ответа (self-reflection)
Задача: заставить систему проверить собственный ответ перед выводом пользователю, чтобы отсечь неточности.
Промт:
Ты — критик. Перед выдачей ответа проверь, соответствует ли он следующим критериям: 1) ответ не противоречит контексту; 2) в ответе нет информации, не подтверждённой контекстом; 3) ответ полностью отвечает на вопрос. Если какое-то условие нарушено, исправь ответ и объясни ошибку. Исходный ответ: {generated_answer} Контекст: {context} Вопрос: {question}
Пример использования:
- Вход: ответ «Диабет лечится только инсулином» при контексте, где есть информация о диете.
- Выход: исправленный ответ «Диабет может лечиться диетой и инсулином» с пояснением.
Такой промт можно использовать как пост-обработку: сначала LLM генерирует ответ, затем прогоняет его через этот промт. Это повышает достоверность.
9. Промт для извлечения ключевых фактов при индексации
Задача: при загрузке документа в БД извлечь из него структурированные факты (сущности, даты, отношения) для дальнейшей фильтрации.
Промт:
Ты — парсер фактов. Проанализируй текст и выведи все факты в формате тройных утверждений (субъект, предикат, объект). Например, «Иван Иванов, родился в, 1990». Также определи тип факта (персональный, юридический, медицинский). Игнорируй общие фразы. Текст: {text} Выведи JSON-список.
Пример использования:
- Вход: «Компания OpenAI основана в 2015 году Илоном Маском и Сэмом Альтманом».
- Выход:
[{"subject": "OpenAI", "predicate": "основана в", "object": "2015", "type": "организация"}, {"subject": "OpenAI", "predicate": "основана", "object": "Илон Маск", "type": "персона"}, ...]
Эти факты можно хранить в отдельной графовой БД или использовать для фильтрации в векторной БД.
10. Промт для мультиязычного поиска и перевода запроса
Задача: когда ваши документы на одном языке, а пользователь пишет на другом, нужно адаптировать запрос.
Промт:
Ты — переводчик и поисковый оптимизатор. Переведи следующий запрос с языка {input_lang} на язык {target_lang}. При переводе учитывай, что это поисковый запрос: используй ключевые слова и синонимы, которые часто встречаются в технической документации. Выведи исходный запрос, перевод и список возможных синонимичных поисковых фраз. Запрос: {user_query}
Пример использования:
- Вход: «как улучшить ретеншн пользователей» (ru) -> целевой язык: en.
- Выход: translation: «how to improve user retention», синонимы: «increase user retention», «reduce churn».
Используйте этот промт в пайплайне перед поиском: переводите запрос на язык индекса, а также добавляйте синонимы к векторному запросу для улучшения recall.
Заключение
Приведённые 10 промтов покрывают основные узкие места RAG-системы. Начните с базовых — промты 6 и 7 для генерации, промт 1 для чанкинга — и постепенно внедряйте более сложные, такие как реранкинг и самооценка (промты 4 и 8). Помните, что промты нужно адаптировать под вашу предметную область: тестируйте разные формулировки и параметры.
Ключевые источники, которые помогут углубиться: документация LangChain (https://python.langchain.com/docs/modules/data_connection/), LlamaIndex (https://docs.llamaindex.ai/), а также исследование по гибридному поиску от Pinecone (https://www.pinecone.io/learn/hybrid-search/). Тезис о том, что чанкинг влияет на качество, подтверждён многочисленными кейсами в сообществе.
Если вы хотите получить ещё больше готовых промтов и шаблонов — подпишитесь на наш блог. Делитесь своими находками в комментариях, давайте улучшать RAG вместе!
Комментарии