ИИ

RAG, который учится после запуска: как сделать базу знаний живой и не превратить её в мусорку

Андрей Мелков
1

Раньше вопросно-ответные системы на базе RAG были "только для чтения".
Один раз загрузили документы — и дальше ассистент лишь вытаскивает фрагменты и отвечает.

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

Раньше вопросно-ответные системы на базе RAG были "только для чтения".
Один раз загрузили документы — и дальше ассистент лишь вытаскивает фрагменты и отвечает.

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

Но тут же ловушка: если просто “дописывать всё подряд”, база очень быстро засорится выдумками и начнётся самоподкрепляющаяся деградация — ассистент будет находить и подтверждать собственные ошибки.

В статье предложена архитектура, которая решает эту проблему: двунаправленный RAGRAG с безопасной обратной записью в базу знаний через многоступенчатую проверку качества.

Почему обычный RAG "не учится" и теряет ценность после внедрения

Классический RAG решает сразу несколько задач:

  • обходит ограничение “знания модели заканчиваются на момент обучения”
  • добавляет предметные знания без переобучения
  • снижает риск выдумок, потому что ответ строится на внешних источниках

Но у него есть фундаментальный минус: корпус (база знаний) статичен.
Система устроена так, что поток идёт в одну сторону: запрос → поиск по базе → генерация ответа

И всё.

А теперь важная мысль: во время реальной эксплуатации ассистент постоянно генерирует очень ценные “артефакты знаний” — пояснения, выжимки, синтез информации из разных фрагментов. Часто это даже полезнее, чем исходные куски документов.
Но мы эти артефакты… просто выбрасываем после каждого ответа.

Отсюда естественный вопрос: а почему бы не сохранять лучшие ответы, чтобы потом находить их поиском и отвечать быстрее и точнее?

Почему “дописывать всё подряд” убивает систему

Кажется, что решение простое:

  • ответили на вопрос
  • добавили ответ в базу
  • в следующий раз будет лучше

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

Это важная управленческая мысль:

  • ошибки в ответах не просто “случаются”
  • они могут стать частью базы знаний
  • а значит — превратиться в “официальную правду” для самой же системы

И вот почему это особенно опасно: загрязнение базы трудно откатить, поэтому лучше иногда “недобавить полезное”, чем один раз добавить вредное. Ложные отказы лучше ложных допусков.

Что такое двунаправленный RAG и где тут “обучение после запуска”

Предлагается схема, в которой поток становится двусторонним:

Прямой путь (как в обычном RAG)

  1. запрос
  2. поиск в базе
  3. генерация ответа на основе найденных фрагментов

Обратный путь (новое)

  1. проверка качества ответа
  2. если ответ прошёл проверки — добавить его в базу
  3. если не прошёл — не добавлять, но сохранить причины отказа

То есть система “учится” не через переобучение модели, а через управляемое расширение базы знаний.

“Приёмочный шлюз”: три проверки перед записью в базу

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

Проверки идут последовательно:

Проверка 1. Опора на источники

Смысл: каждое предложение ответа должно следовать из найденных документов.

Используются модель проверки “следует / не следует” между фрагментом источника и предложением ответа.
И вводят порог: средняя оценка опоры должна быть не ниже 0,65, иначе ответ не принимается.

Проверка 2. Проверка ссылок на источники

Смысл: если ответ содержит ссылки на документы, они должны ссылаться на то, что реально было найдено поиском.
Иначе — отказ.

Проверка 3. Проверка новизны

Смысл: не плодим дубликаты и почти-дубликаты.
Если новый ответ слишком похож на то, что уже есть в базе, то добавлять его бессмысленно и даже вредно (раздувает базу).

Порог новизны в статье: не ниже 0,10.

И вот после трёх проверок происходит простое решение: принять и записать / отклонить и не записывать.

Почему журнал отказов важен не меньше, чем “принятые ответы”

Одна из сильных идей статьи: кроме “принятых” ответов, авторы предлагают хранить журнал причин отказов — то есть объяснения, почему ответы не прошли проверку.

И использовать этот журнал при будущих запросах: подмешивать прошлые предупреждения и ошибки, чтобы ассистент не повторял те же провалы.

Это очень практичный подход:

  • даже если мы не записали ответ в базу знаний
  • мы всё равно получили пользу
  • потому что система “помнит”, где она ошибалась

Независимые исследователи называют это “обучением без загрязнения базы”.

Что показали эксперименты: рост покрытия против риска и нагрузки

Авторы сравнили три системы:

  • обычный RAG (статичный корпус)
  • наивная запись обратно (пишем всё без проверки)
  • двунаправленный RAG (пишем только после проверок)

Покрытие поиска

Покрытие — это доля запросов, для которых поиск находит релевантные материалы.

  • обычный RAG: 20,33%
  • наивная запись обратно: 70,50%
  • двунаправленный RAG: 40,58%

То есть двунаправленный вариант почти вдвое лучше обычного RAG по покрытию, но при этом не “срывается в неконтролируемый рост”, как наивный вариант.

Рост корпуса

  • наивная запись обратно добавила 500 документов
  • двунаправленный RAG добавил 140 документов.

То есть на 72% меньше, чем наивный подход.

Качество ссылок

Тут очень показательно:

  • обычный RAG: 58,26
  • наивная запись обратно: 16,75
  • двунаправленный RAG: 33,03

Наивный подход сильно “ломает доверие” к ссылкам — потому что база пополняется некачественными материалами и ссылки перестают быть точной опорой.

Двунаправленный RAG удерживает качество ссылок заметно лучше, потому что есть проверка и отбраковка.

Задержка

Да, проверки увеличивают время:

  • обычный RAG: 31,9 секунды
  • двунаправленный: 71,0

Исследования отмечают важный контекст: такой режим особенно разумен для офлайн-пополнения базы, где качество важнее скорости.

Как это выглядит “в компании”: перевод на практику

Если перевести идею статьи на реальный бизнес-процесс, получается понятная картина:

  1. ассистент работает с пользователями (поддержка, продажи, операционка)
  2. часть ответов потенциально годится как “готовое решение”
  3. эти ответы не сразу идут в базу, а проходят “приёмку”
  4. принятые — становятся частью базы знаний
  5. отклонённые — оставляют след в журнале отказов

В итоге база знаний становится живой, но не теряет управляемость.

По сути, вы получаете слой “управления знаниями” поверх RAG:

  • не просто храните документы
  • а накапливаете проверенные “решения” из реальной эксплуатации

Ограничения и честные выводы из статьи

Исследователи сами проговаривают ограничения:

  • пороги проверок могут требовать настройки под предметную область
  • подход консервативный: лучше отклонить лишнее, чем принять плохое
  • испытания короткие (по 500 запросов на набор), долгосрочный дрейф базы ещё не изучен

И это, на самом деле, плюс: статья не продаёт “магическую таблетку”, а показывает инженерную дисциплину.

Итог: почему это важнее, чем кажется

Главный вывод статьи простой:

Самоулучшающийся RAG возможен, если есть строгая приёмка.

Обычный RAG — безопасный, но не развивается. \ Наивная запись — развивается быстро, но разрушает доверие и засоряет базу.
Двунаправленный РАГ — середина: растёт, но под контролем.

И вот что для меня тут самое интересное: это шаг к системам, которые реально “учатся после запуска” без переобучения модели — через дисциплину работы с знаниями.

Подпишитесь на наш блог

Получайте новые статьи и полезные материалы о автоматизации бизнеса прямо на почту