Сборка промпта: как вставить контекст
Найти мало — нужно правильно подать найденное модели. Разбираем анатомию RAG-промпта.
Augmentation (сборка промпта) — формирование финального запроса к LLM: системная инструкция + найденный контекст + вопрос пользователя.
Анатомия RAG-промпта
Хороший RAG-промпт состоит из трёх частей:
- Инструкция: «отвечай только по контексту, если ответа нет — скажи об этом».
- Контекст: вставленные top-k чанки (часто пронумерованные).
- Вопрос: исходный запрос пользователя.
Собираем промпт из чанков (запускаемый)
retrieved = [
"Возврат товара возможен в течение 14 дней.",
"Для возврата нужен чек и сохранённый товарный вид.",
]
question = "Сколько дней есть на возврат и что нужно?"
def build_prompt(question, chunks):
context = "\n".join(f"[{i+1}] {c}" for i, c in enumerate(chunks))
return (
"Ответь на вопрос, опираясь ТОЛЬКО на контекст ниже.\n"
"Если ответа в контексте нет — скажи 'Не нашёл в документах'.\n"
"Указывай номера источников в квадратных скобках.\n\n"
f"Контекст:\n{context}\n\n"
f"Вопрос: {question}"
)
print(build_prompt(question, retrieved))Вывод:
Ответь на вопрос, опираясь ТОЛЬКО на контекст ниже. Если ответа в контексте нет — скажи 'Не нашёл в документах'. Указывай номера источников в квадратных скобках. Контекст: [1] Возврат товара возможен в течение 14 дней. [2] Для возврата нужен чек и сохранённый товарный вид. Вопрос: Сколько дней есть на возврат и что нужно?
Этот текст целиком уходит в LLM. Модель видит факты прямо перед собой и инструкцию опираться на них. Нумерация [1], [2] позволит модели сослаться на источник в ответе.
Почему инструкция так важна
Без явного указания «только по контексту» модель смешает поданные факты со своими «воспоминаниями» и снова может соврать. Фраза про «скажи, если не нашёл» — главный предохранитель от галлюцинаций: она разрешает модели честно признать незнание вместо выдумки.
Следите за бюджетом контекста
Контекстное окно конечно. Если top-k чанков не влезают, их обрезают или уменьшают k. Поэтому чанки делают компактными, а в промпт кладут только реально релевантное — иначе важное вытеснится или вырастет цена.
Итог
- RAG-промпт = инструкция + контекст (top-k чанки) + вопрос.
- Инструкция «только по контексту, иначе скажи 'не знаю'» гасит галлюцинации.
- Нумерация чанков включает цитирование источников.