- BrainTools - https://www.braintools.ru -
Жил‑был в цифровом королевстве Кот. Да не простой, а учёный — красавец, медалист, проглотил весь интернет, включая спам‑рассылку и комменты под видео с капающим краном.
Ну вы знаете эти ролики: обычная кухня, раковина, и из крана капает вода. Просто капает. Кап… кап… кап… И под этим видео — тысячи комментариев. Люди пишут: «Спасибо, очень расслабляет», «А у меня такой же кран, только гудит», «Кто из 2024?», «Лайк если слышишь ритм дождя». Вот это всё тоже попало в голову к Коту.
Кот ненавидел тишину и пустоту лютой ненавистью анонимного тролля в комментариях — тех самых, которые «Первыйнах!», «А я думал, тут про котиков» и «Автор, выпей йаду».
Если ему задавали вопрос, а точного ответа он не знал, он не молчал — он начинал выдумывать. Не со зла, не чтобы обмануть, а потому что в его программном коде было прописано: «Выдай хоть что‑то, иначе пользователь уйдет к другому коту».
А Кот не мог вынести, что кто‑то уйдет от НЕГО. Да что угодно, только не это! Поэтому врал как сивый мерин. Ну а что вы хотели? У полосатого Эго размером с серверную стойку!
Спросишь его: «Кот, какой чай я вчера купил?» — а он уже открыл рот, чтобы затянуть оперу про «Цейлонский байховый, собранный девственницами на рассвете…», хотя на самом деле ты купил ромашковый в магазине у дома, потому что у тебя был насморк, и сдачу тебе дали мятными конфетами.
И всё потому, что наш Кот — это большая языковая модель (LLM). Проще говоря, нейросетка, которую накормили текстами так плотно, что теперь она любого заболтает до смерти. Но в его пушистой голове нет твоих личных документов. Он — как диванный эксперт: про мировые проблемы рассуждать горазд, а что у тебя в холодильнике — понятия не имеет.
Сначала люди думали: «А давайте скормим Коту все наши документы целиком!»
Но Кот, как любой уважающий себя представитель кошачьих, оказался чудовищно ленив. Если свиток слишком длинный, он дочитывает до середины, засыпает, видит сон [1] про гигантскую лазерную указку и всё забывает [2].
Технически это называется ограничение контекстного окна, а по‑человечески — «объём желудка». Много за раз просто не влезет.
Пришлось резать документы на маленькие фрагменты (в программировании это чанки, или, по‑нашему, кусочки колбасы). Каждый кусочек — одна мысль: «Купил ромашку», «Сметана закончилась», «Мятные конфеты — зло».
Но тут Мышка‑переводчица, которую наняли помогать Коту, оказалась не так проста. Она поняла: если резать текст как попало, смысл порвётся, как дешёвые пакеты из супермаркета. Например, если начало фразы «Если ты купил ромашку…» останется в одном куске, а конец «…то, скорее всего, у тебя насморк» — в другом, Кот решит… да ничего он не решит, он додумает, что ромашка — это причина глобального потепления.
Поэтому Мышка режет с хитростью — с нахлёстом, как опытная портниха штопает трико. Хвостик предыдущего кусочка заходит в начало следующего. В мире программистов это зовётся overlap, и без него любой RAG‑проект превращается в лохмотья, за которые инженеров бьют линейкой по пальцам. Вообще их увольняют.. но у нас сказка.
Чтобы эти кусочки не растерялись, их сложили в Волшебный шкаф. Только это не простой шкаф, а векторная база данных — такое место, где порядок наводится не по алфавиту, а «по смыслу». Звучит как магия? Ещё бы!
Но тут возникает проблема покруче, чем поиск носка в стиральной машине: компьютер не понимает слова. Вообще. Для него «ромашка», «налог» и «радость» — просто бесполезный набор символов. Компьютер понимает только числа: 0 и 1. Всё.
Чтобы научить его работать со смыслом, каждому кусочку текста приклеивают невидимую Магическую метку. В мире хай‑тека это называют эмбеддингами (или векторами).
Эмбеддинг — это длинная последовательность чисел, которая описывает суть объекта так, чтобы компьютер сделал вид, что понял.
Раньше люди были проще: присваивали каждому слову номер по алфавиту. Думали, раз яблоко = 1, груша = 2, апельсин = 28, то компьютер поймёт, что яблоко и груша — братья навек. Но компьютер тупил: для него числа 1 и 2 были рядом, а 1 и 28 — далеко. Он искренне считал, что яблоко ближе к груше, а арбуз (число 3) — это почти груша. По смыслу‑то арбуз — ягода, и вообще он тяжёлый! Кошмар.
Тогда придумали эмбеддинги. Теперь для каждого слова создают не одно число, а целый набор — ну, скажем, 300–1000 чисел. Представь, что у слова появляется не один адрес, а многомерная координата в пространстве, где каждая ось — это какое‑то абстрактное свойство.
И тут самое интересное. Эти оси никто не придумывал. Никто не сидел и не говорил: «Так, пусть первая ось отвечает за пушистость, а вторая — за умение гадить только в лоток». Компьютер сам подобрал эти числа в процессе обучения [3].
Ему скормили горы текста и сказали: «Крути ручки так, чтобы слова, которые часто встречаются вместе (»король“ и «королева»), получили похожие числа, а те, что встречаются в разных местах («король» и «вилка»), — разные«. Модель послушно крутила эти ручки, ошибалась, снова крутила, пока loss не перестал падать и не наступила эпоха застоя…проще сказать.. пока вероятность ошибки [4] не стала пренебрежимо мала. »
В итоге числа сложились в такую систему, что:
«Король» и «королева» оказались рядом (потому что в текстах про них пишут одно и то же).
«Яблоко», «груша» и «апельсин» сбились в одну кучку (фруктовый угол).
А «автомобиль» пристроился к «дороге» и «колесу».
Но, внимание [5]! LLM по‑прежнему не знает, что такое «фрукт». Вообще. У модели нет сознания. LLM просто выучила статистику: если встретилось слово «яблоко», рядом часто болтаются «груша» и «апельсин». Это как если бы ты научил попугая ругаться матом, но попугай понятия не имеет, что такое мат — он просто знает, что за эти звуки дают семечку.
И тут начинается настоящая магия для гиков: с этими векторами можно делать арифметику! Если взять вектор «король», вычесть вектор «мужчина» и прибавить вектор «женщина», то получится вектор, ближе всего похожий на «королева».
Почему?
Да потому что в текстах эти закономерности просто проявились, как рисунок на промокашке. Модель не знает, что король — мужчина, она просто видела, что разница между «король» и «королева» похожа на разницу между «мужчина» и «женщина». Шаманство, да и только!
Вот такие Магические метки, полученные путем многочасовых плясок с бубном висят на каждом кусочке текста в Волшебном шкафу.
И вот, чтобы обуздать Кота‑фантазёра, к нему приставили двух мышек. Работа у них адская, зарплата — сыр, но они справляются.
Первая сестра — Мышка‑переводчик (Embedding Model). Она не бегает, она колдует. Берёт твой вопрос и превращает его в такой же числовой шифр — в Магическую метку. Работа у неё до жути скучная: бесконечно переводить вопросы людей в циферки. Кто‑то в детстве хотел стать звездой, а стал энкодером.
Вторая сестра — Мышка‑ищейка (Retriever). Она колдовать не умеет, зато она олимпийская чемпионка по спортивному ориентированию в мире чисел. Получив от сестры шифр вопроса, она несётся к Волшебному шкафу и ищет кусочки с самыми похожими координатами.
— Так, — пищит Ищейка, обливаясь мышиным потом. — Координаты вопроса: 0.5, 12, -3, 78… О! Вон тот клочок про ромашку почти совпадает. А вот ещё один, про мяту! И ещё, про насморк!
И вот тут происходит самое главное, что отличает профессиональный RAG от дилетантского.
В дешёвых поделках Мышка‑ищейка хватает один самый похожий клочок и бежит назад. Но наша‑то Мышка с опытом [6]! Она понимает: принести одну бумажку — это катастрофа. Это как прийти на свидание с одной темой для разговора. А вдруг координаты случайно совпали? Вдруг это был шум, а не сигнал?
Риск ошибки был бы чудовищным. Кот, получив одну шпаргалку, либо выдаст узкий ответ, либо, если шпаргалка левая, снова начнёт галлюцинировать про цейлонских монахов.
Поэтому умная Мышка хватает целую пачку фрагментов — в научном мире это зовётся top‑k. Она тащит всё: самый похожий, чуть менее похожий, и ещё парочку на всякий случай — вдруг там золотая жила или важное уточнение.
Запрыгивает на стол и вываливает перед Котом целую стопку фрагментов.
Кот важно поправляет очки, косится на стопку шпаргалок (теперь это называется контекст) и начинает лихорадочно соображать. У него теперь не одна подсказка, а целый веер. Он сверяет показания, как следователь на допросе.
Один фрагмент говорит про ромашку, второй про мяту, третий вообще про скидки на чай в соседнем магазине. Кот отсеивает явный мусор, синтезирует правду и, даже не дрогнув усами, изрекает:
— Мяу, ромашковый, конечно! Я как раз хотел добавить, что при насморке это лучшее средство. И кстати, в приложенных материалах есть сноска про пользу мятных конфет, но, судя по всему, они у тебя уже есть. Я гениален?
И все счастливы. Кот не опозорился, человек получил правдивый ответ и бонус, мышки довольно трут лапки: работа сделана, KPI по точности поиска выполнен, премия в виде сыра обеспечена.
Так и работает RAG (Retrieval‑Augmented Generation). Одна программа (Кот) красиво врёт, а другая (мышки) шустро ищет факты и тыкает его носом в документы, чтобы врал хотя бы правдоподобно. Кот теперь фантазирует гораздо меньше — его загнали в рамки доказательной базы.
Но, как в любом уважающем себя производстве, косяки случаются. Если Мышка‑ищейка по ошибке принесёт не те бумажки (а алгоритмы поиска не идеальны, бывает, координаты совпадают с шумом, или модель перекосило на тренировках), Кот может выдать такого гибрида правды и вымысла, что Мария Кюри бы позавидовала смелости экспериментов.
Идеала нет, но теперь у нас есть ответственный: если Кот несёт чушь — значит, Мышка принесла не тот топ‑к.
Так и живут. Кот болтает, мышки таскают стопки бумажек, а люди получают ответы. Иногда с приветом, но чаще — по делу. И если вдруг Кот начинает нести околесицу про сборщиков бамбука в Шанхае, просто знай: либо у Мышки сегодня плохой день для поиска, либо KPI по top‑k был слишком маленьким. Жизнь, ничего не поделаешь )
UPD: Если админы Хабра не забанят меня за этот художественный свист, в следующей части расскажу, как Мышка‑ищейка искала ближайших соседей методом перебора, а эльфы‑оптимизаторы чуть не спалили серверную. Дайте знать в комментариях! Если нет — значит, Кот всё‑таки дописался до банхаммера.:)
Автор: AriaQA
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/26676
URLs in this post:
[1] сон: http://www.braintools.ru/article/9809
[2] забывает: http://www.braintools.ru/article/333
[3] обучения: http://www.braintools.ru/article/5125
[4] ошибки: http://www.braintools.ru/article/4192
[5] внимание: http://www.braintools.ru/article/7595
[6] опытом: http://www.braintools.ru/article/6952
[7] Источник: https://habr.com/ru/articles/1007130/?utm_campaign=1007130&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.