Длинный контекст, дообучение, обычный поиск: когда они лучше

Построение RAG-систем · Урок 2 / 24

Четыре способа дать модели ваши знания, и три из них иногда выигрывают

Поиск с генерацией — не единственный вариант и не всегда лучший. Инженерное решение принимается по объёму коллекции, частоте её изменений, требованию к проверяемости и бюджету на запрос. Разберём альтернативы честно, потому что построить лишний конвейер дороже, чем не построить нужный.

Всё в контекст

Если коллекция целиком помещается в окно модели и помещается с запасом, поиск не нужен: положите её в промпт. Это выигрывает точностью — ни один фрагмент не может потеряться, потому что ничего не отбрасывается. Границы у подхода два. Первая — деньги и задержка: контекст на сто тысяч токенов оплачивается на каждом запросе, и время до первого токена растёт. Кэширование префикса снимает часть стоимости, но не всю. Вторая — качество внимания: на длинном контексте модель хуже находит одиночный факт, особенно в середине. Практический ориентир: до нескольких десятков тысяч токенов стабильного текста длинный контекст обычно проще и точнее конвейера; выше — начинает проигрывать по стоимости раньше, чем по качеству.

Дообучение

Дообучение хорошо меняет поведение: тон, формат ответа, следование доменной терминологии, привычку заполнять определённую структуру. Оно плохо работает как способ запомнить факты. Модель после дообучения по-прежнему не отличает вспомненное от придуманного, не умеет сослаться на документ, и любое изменение факта требует нового цикла обучения. Разумная комбинация встречается часто: дообучение отвечает за форму, поиск — за содержание.

Обычный поиск без генерации

Если пользователю нужен документ, а не ответ, генерация только мешает: она добавляет задержку, стоимость и риск исказить формулировку. Юрист, ищущий пункт договора, хочет увидеть пункт. Для запросов навигационного типа список результатов со сниппетами лучше пересказа.

Структурированный запрос к базе

Вопросы «сколько», «за какой период», «в каком статусе» — это не поиск по тексту. Ответ на них лежит в таблице, и правильная архитектура — сгенерировать запрос к базе, а не искать похожие абзацы. Векторный поиск на агрегирующих вопросах даёт систематически неверные ответы, потому что суммы в документах не написано.

коллекция мала и стабильна        ─► длинный контекст
нужен документ, а не ответ        ─► обычный поиск
нужен тон и формат                ─► дообучение
нужны цифры и агрегаты            ─► запрос к базе
много меняющегося текста,
нужна ссылка на источник          ─► поиск с генерацией
Инсайт. Выбор чаще определяется не объёмом данных, а требованием проверяемости. Как только ответ должен быть подкреплён ссылкой на конкретный документ, дообучение выбывает независимо от размера коллекции.
Частая ошибка. Строить конвейер поиска над коллекцией из двухсот страниц. Она влезает в контекст целиком, а вы добавили нарезку, индекс, отбор и четыре новых источника ошибок ради экономии, которой на таком объёме нет.
Про-совет. Прежде чем проектировать, разложите сто реальных вопросов пользователей по типам: фактические, навигационные, агрегирующие, процедурные. Доля агрегирующих часто оказывается такой, что одним поиском по тексту задачу не закрыть, и это лучше узнать до релиза.

Шпаргалка

  • Малая стабильная коллекция — длинный контекст проще и точнее.
  • Дообучение задаёт форму ответа, а не факты.
  • Навигационный запрос закрывается выдачей документов без генерации.
  • Вопросы про количества уходят в запрос к базе, а не в векторный поиск.
1. Почему дообучение плохо подходит для фактических ответов по документам?
2. Какой тип вопроса хуже всего закрывается поиском похожих фрагментов?
3. Что чаще всего делает длинный контекст невыгодным раньше, чем неточным?
Задание — проверяет ИИ

Возьмите свою реальную задачу и обоснуйте выбор архитектуры цифрами. Оцените объём коллекции в токенах, частоту её изменений, требуется ли ссылка на источник и какой бюджет на один ответ вы готовы платить. Затем разложите 30 реальных вопросов пользователей по четырём типам: фактические, навигационные, агрегирующие, процедурные, и приведите доли. По итогам напишите, какой подход выбираете для каждого типа и какой из них вообще не стоит закрывать поиском по тексту.

← Назад

🔒 Ответьте на вопрос верно, чтобы перейти к следующему уроку.

Длинный контекст, дообучение, обычный поиск: когда они лучше — Построение RAG-систем — Skilvy