Глава 9 — RAG: сшиваем свежую информацию в контекст
Девятый пост разбора LLM Primer I: How Generative AI Works по главам. Самый частый случай использования инструментов — в деталях.
Какую задачу решает RAG
RAG — Retrieval-Augmented Generation, генерация с дополнением поиском — решает довольно конкретную задачу. Принести снаружи информацию, которую модель не видела во время обучения, и вшить её в контекст перед тем, как модель начнёт отвечать.
Почему это важно? Потому что две слабости из главы 5 — отсутствие чувства времени и колебания в фактах — растут из того, что модель привязана к тому, что она выучила. Лечить это внутри модели — дорого и хрупко. А кормить контекст, перед каждым новым вызовом, релевантной информацией из внешней базы — гораздо дешевле и гораздо устойчивее.
Как работает один вызов RAG, шаг за шагом
Если разбирать по шагу, в одном вызове RAG нет загадки.
1. Приходит вопрос пользователя. Например, «какова политика возврата нашей компании?».
2. Вопрос становится эмбеддингом. Возвращаемся к эмбеддингу из главы 3 — фраза превращается в вектор с несколькими сотнями измерений.
3. Векторный поиск. Среди заранее индексированных кусков — мануалов, политик, внутренней документации — находятся ближайшие к эмбеддингу вопроса. «Ближайшие» здесь — это семантически близкие, а не текстово совпадающие.
4. Найденное вкладывается в контекст. Найденные куски прикладываются к контексту модели с примерно такой преамбулой: «отвечай, опираясь на эти отрывки».
5. Модель генерирует поверх. Дальше модель совмещает то, что она знала из обучения, с тем, что только что получила, и выдаёт ответ.
Что отличает хороший RAG от плохого
Собрать первую версию легко. Сделать её полезной — нет. Книга честно разбирает, что отделяет терпимый RAG от RAG, который масштабируется.
Чанкинг. То, как вы режете документы, определяет половину эффекта. Слишком короткие куски теряют контекст; слишком длинные размывают поиск. В идеале каждый кусок самодостаточен — раздел, связный абзац, цельный ответ.
Выбор эмбеддинга. Универсального идеального эмбеддинга нет. У доменов — медицинского, юридического, кода — есть эмбеддинги, лучше схватывающие их лексикон. Правильный выбор — половина дороги.
Реранкинг. Перед тем как отдавать в модель — сделать второй, более дорогой и более точный проход по первоначальному набору, чтобы переупорядочить и отсеять.
Граунинг. Заставлять ответ держаться того, что нашлось — например, с цитированием источника на каждом утверждении. Эта привычка обычно неплохо снижает галлюцинации.
Пределы — тоже честно
Вокруг RAG много завышенных ожиданий. Стоит подкалибровать. RAG дополняет модель, но не меняет того, как она рассуждает. Плохой поиск ведёт к уверенному и неверному ответу. Помогают слои — мульти-извлечение, перекрёстная проверка, контроль качества индексации — но источник и модель должны идти в ногу.
Нить Главы 9
Что остаётся: RAG сегодня — пожалуй, самый дешёвый и самый эффективный способ закрыть фактическую и временную лакуну, не меняя модель. Та же модель с обновляемыми источниками решает задачи, которые иначе требовали бы нового обучения.
Завтра — Глава 10: Мультимодальность — за пределами текста. Расширяем зону. Как тот же трансформер начинает принимать картинки и звук — и что меняется, а что остаётся прежним.