RAG своими руками: от папки документов до отвечающей системы
Retrieval-Augmented Generation - самый практичный паттерн applied AI: вместо дообучения модели вы подкладываете ей нужные документы в контекст. Модель отвечает по вашим данным, а не по памяти весов. Собирается за вечер, тонкостей - на месяцы.
Retrieval-Augmented Generation - самый практичный паттерн applied AI: вместо дообучения модели вы подкладываете ей нужные документы в контекст. Модель отвечает по вашим данным, а не по памяти весов. Собирается за вечер, тонкостей - на месяцы.
Конвейер из пяти шагов
Ингест: документы режутся на чанки - куски по 300-800 токенов с перекрытием. Маленькие чанки точнее, большие сохраняют контекст - золотая середина зависит от документов. Эмбеддинги: каждый чанк превращается в вектор моделью-эмбеддером. Индекс: векторы складываются в базу (Qdrant, Chroma, pgvector) для быстрого поиска по смыслу. Ретривал: по запросу находятся топ-K похожих чанков. Генерация: чанки подкладываются модели в промпт, она отвечает с опорой на них.
Главная ошибка новичков
Мусор на входе. RAG не исправляет плохие документы: сканы без OCR, устаревшие инструкции, противоречащие друг другу версии - всё это приедет в ответы. Чистка корпуса даёт больше, чем смена эмбеддера. Вторая ошибка - чанкинг «как попало»: разрезанная пополам таблица или потерянный заголовок раздела убивают точность.
Как понять, что работает
Метрики ретривала: доля запросов, где нужный чанк попал в топ-K. Метрики ответов: faithfulness - не выдумала ли модель сверх найденного. Простейший эвал - набор из 30-50 вопросов с эталонными ответами, прогоняемый после каждого изменения. Без эвала вы тюнингуете вслепую.
Когда RAG не нужен
Если ответы - в системном промпте из пары страниц, не стройте конвейер: просто положите текст в контекст. RAG окупается от сотен страниц и выше, когда всё разом не влезет. И помните: ретривал находит похожее, а не истинное - для точных цифр и свежих данных добавляйте reranker и фильтры по дате.