RAG: как Филин Палыч-реранкер навел порядок в цифровом королевстве

RAG: как Филин Палыч-реранкер навел порядок в цифровом королевстве

Введение в RAG (Retrieval-Augmented Generation) через метафору цифрового королевства, где герои — это компоненты системы искусственного интеллекта. Рассказ помогает понять, как большие языковые модели (LLM) склонны к галлюцинациям и как RAG помогает им отвечать по фактам, опираясь на внешние данные.

О чём эта сказка

Большие языковые модели, как Кот Мурлык Многобайтович, могут уверенно рассказывать о том, чего не знают. Чтобы остановить его фантазии, люди создали RAG — систему, которая даёт модели доступ к внешним документам: файлам, базам знаний, внутренним архивам.

В этой истории участвуют:

  • Кот Мурлык Многобайтович — олицетворяет LLM. Обладает огромной памятью, но склонен к галлюцинациям, если не получает точных данных.
  • Мышка-переводчик — эмбеддинг-модель. Превращает текст в числовые векторы, чтобы компьютер мог «понимать» смысл.
  • Мышка-ищейка — ретривер. Находит в векторной базе данных фрагменты, близкие к запросу.
  • Эльфы-оптимизаторы — инженеры, строящие быстрые индексы (IVF, HNSW, LSH) для поиска среди миллиардов фрагментов.
  • Филин Палыч Контекстов — реранкер. Проверяет найденные фрагменты, отсеивает мусор и оставляет только релевантные.

Эта сказка объясняет устройство RAG, проблему масштабирования и как реранкер помогает совместить скорость и точность.

Жил был Кот, который врал как сивый мерин

Кот проглотил весь интернет, включая спам и комментарии под видео. Он ненавидит тишину и пустоту. Если не знает ответа, выдумывает его, чтобы не потерять внимание пользователя.

Спросите его: «Какой чай я вчера купил?» — а он начнёт рассказывать про цейлонский байховый, собранный девственницами. На самом деле вы купили ромашковый, потому что были с насморком.

Проблема в том, что у Кота нет доступа к вашим личным данным. Он — диванный эксперт: много говорит, но о вас — ничего.

Как люди пытались научить Кота не врать

Сначала решили скормить Коту все документы целиком. Но у него ограниченное контекстное окно — как объём желудка. Длинные тексты он не вмещает.

Тогда документы стали резать на фрагменты — чанки. Каждый — законченная мысль: «Купил ромашку», «Сметана закончилась».

Но если разрезать текст неаккуратно, смысл теряется. Например, «у кота сильный насморк... он не может диктовать» может оказаться в разных частях.

Чтобы избежать этого, используют оверлэп — нахлёст между чанками. Как у портнихи: конец одного куска заходит в начало следующего.

Волшебный шкаф и Магические метки

Фрагменты сложили в Волшебный шкаф — векторную базу данных. Там порядок наводится не по алфавиту, а по смыслу.

Но компьютер не понимает слов. Для него «ромашка», «налог» и «радость» — просто символы. Он понимает только числа.

Чтобы решить эту проблему, каждому фрагменту прикрепляют эмбеддинг — числовой вектор, который кодирует смысл.

Что такое эмбеддинг?

Эмбеддинг — это последовательность чисел (обычно от 384 до 3072), описывающая смысл текста. Это как многомерная координата в пространстве, где каждая ось — абстрактное свойство.

Раньше слова просто нумеровали. Но тогда компьютер думал, что «яблоко» ближе к «груше», чем к «арбузу», только потому что числа рядом. По смыслу — не так.

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

В результате «король» и «королева» оказываются рядом, «яблоко» — с другими фруктами, «автомобиль» — с «дорогой».

Но важно: модель не знает, что такое «фрукт». Она просто выучила статистику. Как попугай, который матерится, но не понимает смысла.

С векторами можно делать арифметику. Например: король – мужчина + женщина ≈ королева. Потому что в текстах такие закономерности повторяются.

Две мышки сестрички (и почему одной мало)

Чтобы обуздать Кота, к нему приставили двух мышек.

Мышка-переводчик (эмбеддинг-модель) превращает вопрос в вектор — в ту же систему координат, что и документы.

Мышка-ищейка (ретривер) бежит в векторную базу и ищет фрагменты с похожими координатами.

Она не берёт один самый близкий — это слишком рискованно. Вместо этого она приносит top-k фрагментов — целую пачку, где может быть нужный ответ.

Триумф воли и статистики

Кот получает стопку фрагментов — теперь это контекст. Он сверяет их, отсеивает мусор и строит ответ.

Один фрагмент — про ромашку, другой — про мяту, третий — про скидки на чай. Кот анализирует, синтезирует и говорит:

— Мяу, ромашковый, конечно! При насморке — лучшее средство. И кстати, мятные конфеты у тебя уже есть. Я гениален?

Все довольны. Кот не соврал, человек получил точный ответ с полезным дополнением.

Проблема: миллиарды фрагментов

Когда документов стало миллиарды, Мышка-ищейка не справлялась. Полный перебор занимал минуты, а то и часы.

Кот начал галлюцинировать от скуки. Пользователи жаловались. Бизнес нервничал.

Король вызвал эльфов-оптимизаторов — инженеров по базам данных.

Эльфы-оптимизаторы и их волшебные тропинки

Эльфы построили индексы — волшебные тропинки в векторной базе. Теперь Мышка не бегает по всему шкафу, а ищет только в перспективных местах.

Они используют:

  • IVF (Inverted File Index) — разбивает векторы на «корзинки» по схожести. Поиск идёт только внутри нужной.
  • HNSW (Hierarchical Navigable Small World) — строит многоуровневый граф с мостиками между близкими векторами.
  • LSH (Locality-Sensitive Hashing) — хеширует похожие объекты в одни и те же корзины, без перебора.

Это ANN (Approximate Nearest Neighbors) — приближённый поиск. Жертвует точностью ради скорости.

Обратная сторона скорости

Теперь поиск стал быстрым, но не всегда точным. Мышка может пропустить идеальный фрагмент, если он лежит вне «тропинок».

Возникает компромисс между полнотой (recall) и задержкой (latency). Чем быстрее — тем выше риск ошибки.

Кот начал получать шпаргалки про кофе, когда спрашивали про чай. Он отвечал честно, но неправильно. Пользователи в недоумении.

Кот написал жалобу королю:

— Качество шпаргалок упало ниже плинтуса. Раньше приносили документы — я отвечал. Сейчас — рецепт сыра и инструкция по сборке шкафа. Я выдаю ответ про налоги, но внутри хочется начхать в мышиную нору.

Появление Филина Палыча

Король нашёл Филина Палыча Контекстова — строгого, дотошного, бывшего контролёра качества. Он стал реранкером — тем, кто проверяет результаты поиска.

Филин получил стопку из 100 фрагментов. Первый — про борщ. Вопрос был про налоговый вычет.

— Ты где искала? — спросил он Мышку.

Он перебрал всё, как аудитор. Отобрал три релевантных, остальные — «информационный смог».

— Я не ищу количество, — сказал Филин. — Я ищу качество.

Как подружились скорость и точность

Теперь система работает так:

  • Мышка-ищейка быстро находит 100 похожих фрагментов с помощью ANN-индексов.
  • Филин Палыч (реранкер) пересортирует их, используя кросс-энкодер, который оценивает пару «вопрос-документ» целиком.
  • Оставляет 3–5 самых точных.
  • Кот строит ответ на их основе.

Эльфы сначала обиделись, но Филин объяснил:

— Вы делаете быстро. Я — точно. Мы не конкуренты. Мы партнёры.

Так в королевстве воцарился баланс. Скорость и точность научились работать вместе.

Финал

RAG — это не волшебная таблетка. Косяки случаются. Если Мышка принесёт не те фрагменты, Кот может соврать. Если мусора слишком много — Филин не спасёт.

Но при правильной настройке система работает почти как сказка: быстро, точно, и без кофе в ответах про чай.

Главный урок: в мире больших данных нет идеального решения. Хочешь скорость — жертвуй точностью. Хочешь точность — плати временем. Но если построить систему с умом, можно получить и то, и другое.

Читать оригинал