Длинный контекст, дообучение, обычный поиск: когда они лучше
Построение RAG-систем · Урок 2 / 24
Четыре способа дать модели ваши знания, и три из них иногда выигрывают
Поиск с генерацией — не единственный вариант и не всегда лучший. Инженерное решение принимается по объёму коллекции, частоте её изменений, требованию к проверяемости и бюджету на запрос. Разберём альтернативы честно, потому что построить лишний конвейер дороже, чем не построить нужный.
Всё в контекст
Если коллекция целиком помещается в окно модели и помещается с запасом, поиск не нужен: положите её в промпт. Это выигрывает точностью — ни один фрагмент не может потеряться, потому что ничего не отбрасывается. Границы у подхода два. Первая — деньги и задержка: контекст на сто тысяч токенов оплачивается на каждом запросе, и время до первого токена растёт. Кэширование префикса снимает часть стоимости, но не всю. Вторая — качество внимания: на длинном контексте модель хуже находит одиночный факт, особенно в середине. Практический ориентир: до нескольких десятков тысяч токенов стабильного текста длинный контекст обычно проще и точнее конвейера; выше — начинает проигрывать по стоимости раньше, чем по качеству.
Дообучение
Дообучение хорошо меняет поведение: тон, формат ответа, следование доменной терминологии, привычку заполнять определённую структуру. Оно плохо работает как способ запомнить факты. Модель после дообучения по-прежнему не отличает вспомненное от придуманного, не умеет сослаться на документ, и любое изменение факта требует нового цикла обучения. Разумная комбинация встречается часто: дообучение отвечает за форму, поиск — за содержание.
Обычный поиск без генерации
Если пользователю нужен документ, а не ответ, генерация только мешает: она добавляет задержку, стоимость и риск исказить формулировку. Юрист, ищущий пункт договора, хочет увидеть пункт. Для запросов навигационного типа список результатов со сниппетами лучше пересказа.
Структурированный запрос к базе
Вопросы «сколько», «за какой период», «в каком статусе» — это не поиск по тексту. Ответ на них лежит в таблице, и правильная архитектура — сгенерировать запрос к базе, а не искать похожие абзацы. Векторный поиск на агрегирующих вопросах даёт систематически неверные ответы, потому что суммы в документах не написано.
коллекция мала и стабильна ─► длинный контекст нужен документ, а не ответ ─► обычный поиск нужен тон и формат ─► дообучение нужны цифры и агрегаты ─► запрос к базе много меняющегося текста, нужна ссылка на источник ─► поиск с генерацией
Шпаргалка
- Малая стабильная коллекция — длинный контекст проще и точнее.
- Дообучение задаёт форму ответа, а не факты.
- Навигационный запрос закрывается выдачей документов без генерации.
- Вопросы про количества уходят в запрос к базе, а не в векторный поиск.
Возьмите свою реальную задачу и обоснуйте выбор архитектуры цифрами. Оцените объём коллекции в токенах, частоту её изменений, требуется ли ссылка на источник и какой бюджет на один ответ вы готовы платить. Затем разложите 30 реальных вопросов пользователей по четырём типам: фактические, навигационные, агрегирующие, процедурные, и приведите доли. По итогам напишите, какой подход выбираете для каждого типа и какой из них вообще не стоит закрывать поиском по тексту.