Большие контекстные окна значительно увеличили объём информации, которую современные языковые модели могут обработать за один запрос. Модели, способные обрабатывать сотни тысяч или даже миллионы токенов, позволяют предположить, что Retrieval-Augmented Generation (RAG) больше не нужна. Однако ключевое различие заключается не в объёме, который может увидеть модель, а в том, какую информацию она должна увидеть.
Контекстное окно определяет, сколько модель может увидеть, в то время как RAG определяет, какую информацию модель должна увидеть. Большое окно увеличивает ёмкость, но не улучшает релевантность. RAG фильтрует и выбирает наиболее важную информацию, прежде чем она достигнет модели, улучшая соотношение сигнал/шум, эффективность и надёжность.
В этой статье мы сравниваем обе стратегии напрямую. Используя OpenAI API, мы оцениваем Retrieval-Augmented Generation против контекстной вставки на одном и том же корпусе документации. Мы измеряем использование токенов, задержку и стоимость — и демонстрируем, как сокрытие важной информации внутри больших запросов может повлиять на производительность модели.
Этапы проверки
1. Научная точность (сверка с источниками).
2. Стилистическая выверенность.
3. Соответствие SEO-требованиям.
4. Проверка читаемости (Flesch–Kincaid ≥60).
Специальные указания
- Избегать антропоморфизмов в описании природных процессов.
- Соблюдать корректность при обсуждении спорных теорий.
- Давать альтернативные точки зрения в противоречивых вопросах.
- Указывать источники финансирования исследований при наличии.
Создание корпуса документов
Корпус служит источником для нашего бенчмарка. В настройке RAG вложения генерируются для каждого документа, и на основе семантического сходства извлекаются соответствующие фрагменты. В настройке контекстной вставки весь корпус вводится в запрос.
Корпус состоит из 10 структурированных политических документов общим объёмом примерно 650 токенов, причём каждый документ содержит от 54 до 83 токенов. Этот размер делает набор данных управляемым, сохраняя при этом разнообразие и плотность реального набора корпоративной документации.
Встраивание индекса
Мы генерируем векторные вложения для всех 10 документов, используя модель text-embedding-3-small, и сохраняем их в массиве NumPy. Каждый документ преобразуется в вектор с размерностью 1536, создавая индекс с формой (10, 1536).
Вспомогательные функции для извлечения и создания запросов
Функции retrieve(), buildragprompt() и buildstuffedprompt() реализуют полный сравнительный анализ между RAG и контекстной вставкой. Функция retrieve() встраивает запрос, вычисляет косинусное сходство с предварительно вычисленным индексом и возвращает топ-k наиболее релевантных документов с оценками сходства.
Сравнение подходов
Этот блок запускает прямое, параллельное сравнение между Retrieval-Augmented Generation (RAG) и контекстной вставкой с использованием одного и того же пользовательского запроса. В подходе RAG система сначала извлекает три наиболее релевантных документа на основе семантического сходства, строит сфокусированный запрос, используя только эти фрагменты, и затем отправляет этот сжатый контекст модели.
В отличие от этого, подход контекстной вставки создаёт запрос, который включает все 10 документов, независимо от релевантности, и отправляет весь корпус модели. Измеряя входные токены, выходные токены и время отклика для обоих методов в идентичных условиях, мы изолируем архитектурные различия между выборочным поиском и брутфорс-загрузкой.
Результаты показывают, что оба подхода дают правильный и почти идентичный ответ, но профиль эффективности сильно отличается. С RAG были извлечены только три наиболее релевантных документа, что привело к отправке 278 токенов модели. С контекстной вставкой все 10 документов были введены в запрос, увеличив размер ввода до 775 токенов.
Эффект «потерянного в середине»
Чтобы продемонстрировать эффект «потерянного в середине», мы создаём контролируемую настройку, где критическое обновление политики — игла — утверждает, что корпоративные клиенты с активным HIPAA BAA имеют право на 90-дневный период возврата средств вместо стандартных 30 дней. Этот пункт напрямую отвечает на запрос, но намеренно скрыт внутри примерно 800 токенов нерелевантного текста.
Эксперимент показывает, что большие контекстные окна могут добиться успеха, но они делают это за счёт значительно более высоких вычислительных затрат и с большим риском по мере увеличения длины и сложности документов.
1. В чём заключается основное различие между большим контекстным окном и подходом RAG?
Ответ: основное различие заключается в том, что большое контекстное окно увеличивает ёмкость для обработки информации, но не улучшает релевантность, в то время как RAG фильтрует и выбирает наиболее важную информацию, прежде чем она достигнет модели, улучшая соотношение сигнал/шум, эффективность и надёжность.
2. Какие этапы проверки используются для оценки научной точности и стилистической выверенности текста?
Ответ: для оценки научной точности и стилистической выверенности текста используются следующие этапы проверки: научная точность (сверка с источниками), стилистическая выверенность, соответствие SEO-требованиям и проверка читаемости (Flesch–Kincaid ≥60).
3. Какой метод более эффективен и надёжен — RAG или контекстная вставка?
Ответ: метод RAG более эффективен и надёжен, так как он позволяет модели увидеть только наиболее релевантную информацию, что улучшает соотношение сигнал/шум, эффективность и надёжность. В отличие от этого, контекстная вставка включает в запрос все документы, независимо от их релевантности, что приводит к увеличению размера ввода и вычислительных затрат.
4. Какие функции используются для извлечения и создания запросов в рамках сравнения подходов RAG и контекстной вставки?
Ответ: для извлечения и создания запросов используются функции retrieve(), buildragprompt() и buildstuffedprompt(). Функция retrieve() встраивает запрос, вычисляет косинусное сходство с предварительно вычисленным индексом и возвращает топ-k наиболее релевантных документов с оценками сходства.
5. Какие результаты были получены при сравнении подходов RAG и контекстной вставки?
Ответ: результаты показали, что оба подхода дают правильный и почти идентичный ответ, но профиль эффективности сильно отличается. С RAG были извлечены только три наиболее релевантных документа, что привело к отправке 278 токенов модели. С контекстной вставкой все 10 документов были введены в запрос, увеличив размер ввода до 775 токенов. Это демонстрирует, что RAG более эффективен и надёжен, так как позволяет модели увидеть только наиболее важную информацию.