Урок по треку LLM-инженерия 7 мин

RAG от чанкинга до реранкинга

Чанкинг, ретривер, гибридный поиск, BM25, reciprocal rank fusion, реранкинг, сборка контекста и цитаты.

RAG (retrieval-augmented generation) это схема «сначала найди, потом ответь»: по вопросу пользователя ищем релевантные фрагменты в своей базе и подаём их модели в контекст. Так модель отвечает по актуальным и внутренним данным, может ссылаться на источники и меньше выдумывает.

Конвейер целиком

Индексация (офлайн):

  1. Загрузка и очистка документов: PDF, HTML, вики, тикеты. Убрать меню, колонтитулы, дубли.
  2. Чанкинг: нарезка на фрагменты.
  3. Эмбеддинги чанков и запись в индекс вместе с текстом и метаданными (источник, дата, права доступа).

Ответ (онлайн):

  1. Обработка запроса: при необходимости переписать его с учётом истории диалога («а для юрлиц?» → полный вопрос).
  2. Поиск кандидатов: векторный, лексический или оба.
  3. Реранкинг и отбор лучших.
  4. Сборка контекста и генерация ответа с цитатами.

Качество RAG определяется в первую очередь поиском: если нужного фрагмента нет в контексте, никакой промпт не поможет.

Чанкинг

  • Фиксированный размер с перекрытием: например, 300-500 токенов с перекрытием 10-20%. Перекрытие нужно, чтобы мысль на границе не потерялась.
  • По структуре: по заголовкам, абзацам, пунктам. Чанк совпадает со смысловой единицей, его проще цитировать.
  • Рекурсивный: пытаемся резать по абзацам, если кусок слишком большой, по предложениям, потом по словам.

Компромисс: маленькие чанки точнее находятся, но теряют контекст; большие несут контекст, но размывают эмбеддинг и съедают окно. Полезный приём: искать по маленьким чанкам, а в модель отдавать окружающий раздел (parent document). Ещё один: добавлять к чанку заголовок документа и раздела, чтобы фрагмент «Срок: 14 дней» знал, о чём он.

Ретривер: векторный, лексический, гибридный

  • Векторный поиск ловит смысл и перефразировки, но слаб на точных токенах: артикулы, коды ошибок, фамилии, редкие термины.
  • Лексический поиск BM25 силён ровно на точных совпадениях. Формула учитывает частоту термина в документе (с насыщением, параметр k1), редкость термина по корпусу (IDF) и нормализацию по длине документа (параметр b, обычно 0.75).
  • Гибридный поиск запускает оба и объединяет списки.

Объединять сырые оценки нельзя: косинус и BM25 в разных шкалах. Простой и устойчивый способ: reciprocal rank fusion:

RRF(d) = Σ по спискам 1 / (k + rank(d)),  k обычно 60

Важна только позиция документа в каждом списке, шкалы не важны.

Реранкинг

Ретривер (bi-encoder) кодирует запрос и документ отдельно: быстро, но грубо. Реранкер (cross-encoder) получает пару «запрос и документ» целиком и выдаёт оценку релевантности: точнее, но дорого, поэтому его применяют к 20-100 кандидатам, а не ко всему индексу.

Типичная воронка: гибридный поиск достаёт 50 кандидатов, реранкер выбирает 5-8, они идут в контекст.

Для разнообразия выдачи применяют MMR (maximal marginal relevance): на каждом шаге берут документ, который релевантен запросу и при этом не похож на уже выбранные. Это убирает пять почти одинаковых чанков из разных версий одного документа.

Сборка контекста и генерация

  • Бюджет токенов: системный промпт, история, чанки и место под ответ должны влезть в окно и в целевую стоимость.
  • Каждый чанк с идентификатором источника: модель ставит ссылки [1], [2], приложение превращает их в ссылки на документы.
  • Инструкция: отвечать только по контексту, при отсутствии ответа честно сказать об этом и предложить эскалацию.
  • Права доступа: фильтровать по правам до генерации, на этапе поиска. Модель не должна видеть документы, которые пользователю нельзя.

Как понять, что сломалось

Оценивайте части отдельно:

  • Поиск: recall@k и MRR по набору вопросов с известными релевантными чанками.
  • Генерация: верность контексту (faithfulness, нет ли утверждений без опоры), полнота и полезность ответа.

Если recall@k низкий, крутите чанкинг, гибридный поиск, переписывание запроса. Если поиск находит, а ответ плохой, работайте с промптом, порядком и объёмом контекста.

Частые ошибки

  • Нарезать PDF без очистки: в чанках колонтитулы и обрывки таблиц.
  • Только векторный поиск в домене с кодами и артикулами.
  • Складывать оценки разных ретриверов без нормализации вместо RRF.
  • Пихать в контекст 30 чанков «на всякий случай»: дороже, медленнее и хуже.
  • Проверять права доступа после генерации ответа.

Что спросят на собесе

  • Из каких шагов состоит RAG и где чаще всего теряется качество.
  • Как выбрать размер чанка и зачем перекрытие.
  • BM25 против векторного поиска, гибридный поиск и RRF.
  • Bi-encoder против cross-encoder, зачем реранкер.
  • Как оценить RAG по частям: поиск отдельно, генерацию отдельно.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.