RAG (Retrieval-Augmented Generation) стал стандартом де-факто для построения вопросно-ответных систем на корпоративных данных. Однако качество ответа напрямую зависит от того, как вы чанкуете документы, какие эмбеддинги используете и как строите запрос к LLM. В этой подборке — 9 промтов, которые помогут вам пройти путь от сырых PDF до точных ответов.
1. Оптимальный чанкинг с учётом семантики
Задача: Разбить длинный документ на осмысленные фрагменты, не теряя контекст.
Промт:
Раздели текст на логические блоки. Каждый блок должен:
- содержать законченную мысль (абзац, раздел, подраздел);
- иметь длину от 200 до 500 токенов;
- включать заголовок раздела, если он есть.
Документ: {text}
Выведи блоки в формате JSON: [{chunk_id, heading, content}].
Пример результата: Для статьи про трансформеры получите чанки: «Архитектура encoder-decoder», «Механизм self-attention», «Positional encoding».
Совет: Используйте langchain.text_splitter.RecursiveCharacterTextSplitter с параметрами chunk_size=512, chunk_overlap=128. По данным исследования Anthropic (2024), overlap в 20% улучшает recall на 15%.
2. Генерация эмбеддингов с контекстом
Задача: Получить векторное представление чанка, учитывающее его роль в документе.
Промт:
Сгенерируй эмбеддинг для следующего текста. Вектор должен отражать не только содержание, но и контекст: для введения — высокий вес на общие термины, для технического раздела — на специфические.
Текст: {chunk}
Тип чанка (введение/техника/выводы): {type}
Пример: Для чанка «BERT использует bidirectional attention» эмбеддинг будет доминировать над словами «BERT» и «bidirectional», а не над «использует».
3. Гибридный поиск (BM25 + векторный)
Задача: Объединить точность лексического поиска с семантическим пониманием.
Промт:
Выполни гибридный поиск по запросу "{query}".
1. Найди 10 чанков через BM25 (Elasticsearch).
2. Найди 10 чанков через cosine similarity (векторная БД).
3. Объедини результаты, присвоив веса: BM25 — 0.3, векторный — 0.7.
4. Отранжируй по взвешенной сумме.
Выведи топ-5 чанков с релевантностью.
Пример: На запрос «как обучить LLM с нуля» BM25 найдёт документы с точной фразой, а векторный — материалы по fine-tuning, что даст более полный ответ.
4. Фильтрация шума в чанках
Задача: Удалить чанки, которые не несут полезной информации (навигация, подписи, колонтитулы).
Промт:
Классифицируй каждый чанк:
- полезный (содержит факты, инструкции, данные);
- шум (меню, ссылки, пустые строки).
Если полезный — оставь. Если шум — удали.
Чанки: {chunks}
Выведи только полезные.
Совет: Регулярное выражение для фильтрации: `re.sub(r'\n{2,}
|Страница \d+|© 2026', '', text)`.
5. Семантический реранкинг
Задача: Пересортировать результаты поиска по реальной релевантности.
Промт:
У тебя есть запрос и 10 чанков. Оцени каждый чанк по шкале 0–10 по двум критериям:
- точность (насколько чанк отвечает на запрос);
- полнота (покрывает ли все аспекты запроса).
Итоговая оценка = 0.7 * точность + 0.3 * полнота.
Запрос: {query}
Чанки: {chunks}
Выведи отсортированный список.
Пример: Для запроса «стоимость GPU A100» чанк с ценой $10 000 получит 10 по точности, но если он не упоминает облачные варианты, полнота будет ниже.
6. Генерация ответа с цитированием
Задача: Ответить на вопрос, ссылаясь на конкретные чанки.
Промт:
Ответь на вопрос, используя только предоставленные чанки. Для каждого факта укажи ID чанка в скобках, например [Chunk_3]. Если ответа нет в чанках — напиши «информация отсутствует».
Вопрос: {question}
Чанки: {chunks}
Ответ:
Пример: «BERT использует bidirectional attention [Chunk_2]. Это позволяет учитывать контекст с обеих сторон [Chunk_2].»
7. Мультидокументный анализ
Задача: Обработать несколько документов и найти пересечения.
Промт:
У тебя есть 3 документа. Найди:
- общие темы (встречаются во всех);
- уникальные факты (только в одном);
- противоречия (если документы говорят разное).
Выведи в таблицу.
8. Оптимизация запроса для sparse retrieval
Задача: Преобразовать естественный вопрос в запрос для BM25.
Промт:
Конвертируй вопрос в набор ключевых слов для поиска. Удали стоп-слова, добавь синонимы.
Вопрос: «Как настроить RAG с FAISS?»
Результат: настроить RAG FAISS vector store index
9. Адаптивный чанкинг для таблиц
Задача: Разбить табличные данные, сохраняя строки и заголовки.
Промт:
Извлеки таблицу из текста. Каждая строка — отдельный чанк с заголовком столбцов.
Текст: {text}
Выведи чанки в формате: [row_1: {column_1: value, column_2: value}, ...].
Заключение
Эти 9 промтов покрывают ключевые этапы RAG-пайплайна: от индексации до генерации. Начните с чанкинга и эмбеддингов — на них держится 80% качества. Добавьте гибридный поиск и реранкинг, чтобы выжать максимум из векторных БД. А для production — обязательно используйте цитирование и фильтрацию шума. Экспериментируйте с параметрами (размер чанка, overlap, вес BM25) и помните: хороший промт стоит тысячи строк кода.
Комментарии