Как научить ИИ тому, чего он не может знать
Нейросеть выучила интернет однажды — и дальше её знания стоят на месте. А программы вокруг меняются каждый месяц. Вот как устроена библиотека, которая подкладывает модели свежие страницы документации прямо к вопросу, и что из этого вышло на замерах.
1Проблема: знания застыли
Языковую модель обучают на огромной куче текстов, а потом «замораживают». Всё, что вышло после, модель не видела. Спроси её про новую версию библиотеки — она уверенно ответит по старой: назовёт функцию, которую давно переименовали, или придумает правдоподобное имя.
2Принцип: экзамен с открытой книгой
Переучивать модель под каждую новую версию — дорого и долго. Мы делаем проще: прежде чем задать вопрос, находим в библиотеке 5 самых подходящих кусочков документации и кладём их рядом с вопросом. Модель не вспоминает, а читает и отвечает.
Чтобы проверить, что помогает именно знание, а не просто «много текста», есть хитрое третье условие — плацебо: модели дают 5 кусочков той же длины, но найденных по чужому вопросу.
Замер №32: qwen3.8-27b, 450 ответов в каждом условии (150 вопросов × 3 попытки).
3Как найти нужную страницу среди 174 000
В библиотеке сейчас документация 711 сайтов — это 174 тысячи страниц, порезанных на 743 тысячи кусочков. Искать приходится быстро и точно, поэтому поиск идёт сразу тремя способами, а потом они «голосуют».
🧭 Что значит «по смыслу»
Каждый кусочек текста превращается в список из 1024 чисел — это как его «координаты» на огромной карте смыслов. Тексты про одно и то же оказываются рядом, даже если слова разные: «как отменить подписку» окажется возле «cancel subscription».
🎯 Зачем ещё и точные имена
Программисты спрашивают про конкретные имена: retry_after_seconds,
THREE.Vector3. «Смысловой» поиск может перепутать похожие, поэтому третий поисковик ищет имя
буква в букву — и кусочек, где оно написано целиком, поднимается выше.
А поиск «по словам» ловит формы: «ключи», «ключа», «ключом» — одно слово.
4Как страница попадает в библиотеку
Документацию нельзя просто свалить в кучу. Каждая страница проходит конвейер из пяти станций. Задания лежат в очереди, их разбирают «рабочие» — отдельные программы, которые работают параллельно.
Каждая версия страницы хранится отдельно. Если вышла новая — старая пропадает из поиска мгновенно, но её можно прочитать с пометкой «устарело».
5Второй вход: проверка черновика
Модель не всегда догадается спросить. Поэтому библиотека умеет ещё и проверять готовый код, как учитель проверяет контрольную: находит имена, которых в новой версии уже нет, и подсказывает, как теперь правильно — с примером «было → стало».
6Вся архитектура на одной картинке
7Что показали замеры
150 вопросов по документации, которая вышла после обучения моделей. Каждый вопрос — 3 попытки, всего 450 ответов на условие. Две модели: маленькая (4 млрд параметров, запускается на домашней видеокарте) и средняя (27 млрд).
Средняя модель, 27 млрд
Маленькая модель, 4 млрд
Доля верных ответов. Разница «с библиотекой» против плацебо: 120 вопросов в пользу библиотеки против 1 у большой модели и 128 против 0 у маленькой — случайно так не бывает.
8Что мы поняли
📦 Размер не заменяет свежих знаний
Большая модель помнит вдвое больше маленькой — но это всего 18%. Того, что вышло после обучения, нет ни в одной. С библиотекой обе отвечают почти одинаково: 85% и 83%.
📖 Подсказка лучше переучивания
Мы пробовали дообучить маленькую модель «пользоваться знаниями». Прироста не было: с хорошими подсказками она и так решала 220 из 230 задач. Узкое место — что и как подать, а не «ум».
✂️ Малой модели — короткие проверенные заметки
Сырые куски документации маленькая модель понимает плохо. Короткая заметка «раньше было так, теперь так, вот пример» подняла её с 7 до 160 решённых задач из 228.
🔎 Потолок — поиск
Когда нужный кусочек попал в пятёрку, модели почти не ошибаются. Все вопросы, которые не решила большая модель, не решила и маленькая: ответ просто не нашёлся. Значит, улучшать дальше — поиск.
Словарик
- Языковая модель
- Нейросеть, которая продолжает текст. Её «знания» — то, что она видела при обучении.
- Параметры (4 млрд, 27 млрд)
- Числа внутри модели. Грубо: чем больше, тем больше она запомнила и тем мощнее нужен компьютер.
- Фрагмент
- Кусочек страницы документации, обычно один раздел — несколько абзацев.
- Вектор («координаты смысла»)
- 1024 числа, по которым видно, о чём текст. Близкие векторы — близкий смысл.
- Судья (переранжировщик)
- Отдельная небольшая нейросеть, которая оценивает пару «вопрос + фрагмент» и решает, подходит ли он.
- Плацебо
- Контрольное условие: столько же текста, но не по теме. Нужно, чтобы доказать, что помогает смысл, а не объём.
- MCP
- Общий «язык», на котором ИИ-агенты вызывают внешние инструменты — например, поиск по библиотеке.