DeepDigest
Towards Data Science · · ~2 мин

Контекстная инженерия в RAG: четыре фрагмента данных для ответа

Статья посвящена контекстной инженерии в RAG — подходу к сбору контекста для ответов LLM. Описана архитектура из четырёх блоков (анализ документов, анализ вопросов, поиск, генерация) и четыре фрагмента полезной нагрузки для одного документа. Подход позволяет оптимизировать затраты и упростить аудит работы системы.

LLM
Контекстная инженерия в RAG: четыре фрагмента данных для ответа

В статье рассматривается подход к разработке контекста для RAG — так называемая контекстная инженерия. Её суть в том, чтобы собрать весь необходимый контекст для решения задачи с помощью LLM. Тоби Лютке и Андрей Карпати в 2025 году предложили использовать этот термин вместо «оперативного инжиниринга».

Архитектура включает четыре блока: анализ документов, анализ вопросов, поиск и генерация. Каждый из них создаёт типизированные фрагменты данных, которые объединяются при одном вызове LLM. В процессе синтаксического анализа формируются реляционные таблицы и обобщение на уровне документа. При анализе вопросов получается обработанный вопрос с типизированными полями (ключевые слова, intent, structural_hints и др.). Извлечение данных даёт отфильтрованный набор строк и аудит выбора. Генерация использует собранную полезную нагрузку с фиксированным системным запросом, шаблоном пользовательского контента и агрегатором PromptContext.

Контекстное окно LLM включает несколько типов данных: системную подсказку (роль, правила, примеры), извлечённые документы или строки, историю обсуждений, определения инструментов и их выходные данные, память, структурированные метаданные и пользовательский ввод. В статье подробно разобраны четыре части полезной нагрузки для одного документа:
1. Фиксированное системное приглашение (не меняется при каждом вызове).
2. Отфильтрованные строки, которые фактически читает LLM (диспетчер выбирает метод извлечения данных и возвращает отфильтрованный фрейм плюс аудит).
3. Блок контекста документа в формате compact JSON (обобщение на уровне документа: тип, количество страниц, типичные поля, краткое содержание).
4. Агрегатор PromptContext, который объединяет три предыдущих элемента.

Такой подход позволяет оптимизировать затраты — системное приглашение можно кэшировать, а пользовательский контент сжимать и тщательно отбирать. Также он упрощает аудит: при неверном ответе можно выяснить, что именно попало в контекстное окно для конкретного вызова, и локализовать проблему (неверный doc_context, неправильно выбранные страницы и т. д.).

В статье также упоминаются дальнейшие направления работы: корпусный контекст (когда для ответа нужно читать много документов), история разговоров (предыдущие пары вопрос‑ответ в многооборотном чате) и вызовы инструментов (отображение определений инструментов и промежуточных состояний в контекстном окне).

Доступны записные книжки для запуска на GitHub: doc-intel/notebooks-vol1.

// оригинал
Towards Data Science ↗ Читать оригинал
11 просмотров
// поделиться Telegram VK