RAG-система: как сделать базу знаний на нейросети по своим документам
RAG-система это связка поиска и нейросети: на вопрос пользователя она сначала находит в ваших документах подходящие фрагменты, а затем передаёт их языковой модели, которая формулирует ответ и указывает, откуда он взят. Расшифровывается RAG как Retrieval-Augmented Generation, «генерация, дополненная поиском». Благодаря этому нейросеть отвечает не по общим знаниям из интернета, а по вашим регламентам, инструкциям, договорам и описаниям товаров, и при обновлении документов её не нужно переобучать. Ниже разбираем, как работает RAG, из каких частей состоит, как подготовить свои данные, как проверять качество ответов и в каких задачах база знаний на нейросети окупается, а в каких нет.
Зачем нужна RAG-система
У любой компании, которая работает больше пары лет, копятся документы: инструкции, регламенты, шаблоны договоров, технические описания, переписка с поставщиками, ответы на типовые вопросы клиентов. Найти в этом нужное трудно. Новый сотрудник неделями спрашивает коллег, опытный тратит время на ответы новичкам, а клиенту иногда отвечают по памяти и ошибаются.
Обычная языковая модель, даже самая сильная, ваших документов не знает. Если спросить её о сроке гарантии на ваш товар, она либо честно скажет, что не знает, либо уверенно придумает правдоподобный ответ. Загрузить в неё сразу все документы тоже не выйдет: даже у моделей с большим окном контекста есть предел, а каждый запрос с сотнями страниц стоит дорого и работает медленно.
RAG решает задачу иначе: из тысяч страниц выбирается несколько самых подходящих фрагментов, и модель отвечает только по ним. Это быстро, дёшево и проверяемо, потому что у каждого ответа есть источник.
Типичные сценарии:
- Помощник для сотрудников. Вопросы по регламентам, характеристикам товаров, условиям поставщиков, порядку оформления документов.
- Поддержка клиентов. Бот на сайте или в мессенджере отвечает на вопросы по инструкциям и условиям, а сложные передаёт человеку.
- Техническая поддержка. Поиск по сервисной документации и мануалам на сотни страниц.
- Продажи. Менеджер быстро находит, чем модели отличаются и какие опции совместимы.
Как работает RAG-система
Работа делится на две части: подготовка базы (индексация) и ответ на вопрос.
Индексация документов
- Извлечение текста. Из PDF, Word, Excel, HTML и сканов достаётся текст. Для сканов нужно распознавание (OCR). На этом шаге теряется больше всего качества: таблицы разваливаются, колонтитулы смешиваются с текстом, сноски оказываются посреди абзаца.
- Разбиение на фрагменты. Текст режется на куски (их называют чанками) размером от нескольких сотен до полутора-двух тысяч символов, обычно с небольшим перекрытием, чтобы мысль не обрывалась на границе. Хорошее разбиение учитывает структуру: заголовки, разделы, пункты.
- Эмбеддинги. Каждый фрагмент превращается в вектор, набор чисел, отражающий смысл текста. Для этого используют отдельную модель эмбеддингов. Для русского языка хорошо работают многоязычные модели, например bge-m3 или multilingual-e5.
- Сохранение в векторную базу. Векторы вместе с текстом и метаданными (документ, раздел, дата) сохраняются в хранилище: Qdrant, pgvector в PostgreSQL, Chroma, Milvus и другие.
Ответ на вопрос
- Вопрос пользователя тоже превращается в вектор.
- В базе ищутся фрагменты с самыми близкими векторами, то есть близкие по смыслу. Хорошие системы дополняют это обычным поиском по словам: смысловой поиск плохо находит артикулы, номера и точные названия, а поиск по словам находит их отлично. Такой поиск называют гибридным.
- Найденные фрагменты дополнительно сортируются моделью-ранжировщиком (reranker), которая точнее оценивает, отвечает ли фрагмент на вопрос.
- Лучшие фрагменты вместе с вопросом и инструкцией отправляются в языковую модель: «ответь только по этим фрагментам, укажи источник, если ответа нет, так и скажи».
- Пользователь получает ответ со ссылками на документы.
Графовые варианты
Обычный RAG хорошо отвечает на вопросы, ответ на которые лежит в одном-двух фрагментах. Хуже он справляется с вопросами, где нужно собрать сведения из многих мест: «какие модели поддерживают такую-то функцию», «чем отличаются все версии регламента». Для этого есть подходы с графом знаний (GraphRAG, LightRAG и подобные): при индексации модель дополнительно выделяет сущности и связи между ними, и поиск идёт не только по тексту, но и по графу. Индексация получается дольше и дороже, зато сложные вопросы обрабатываются лучше. Мы используем такой подход для баз знаний по технической документации.
RAG или дообучение модели
Частый вопрос: не проще ли дообучить модель на своих документах? Для задачи «отвечать по фактам из документов» обычно нет.
| RAG | Дообучение (fine-tuning) | |
|---|---|---|
| Новые документы | добавить в базу за минуты | заново обучать модель |
| Источник ответа | виден, можно проверить | не виден |
| Придумывание фактов | меньше, модель отвечает по найденному | остаётся, модель «помнит» неточно |
| Что хорошо передаёт | факты, цифры, формулировки | стиль, формат, терминологию |
| Стоимость старта | ниже | выше, нужны подготовленные примеры |
Дообучение полезно, когда нужно научить модель определённому стилю или формату ответа. Факты лучше давать через поиск. Иногда эти подходы совмещают, но начинать почти всегда стоит с RAG.
Как подготовить свои данные для RAG
Качество ответов в первую очередь определяется не моделью, а документами. Перед загрузкой стоит сделать несколько вещей.
Убрать устаревшее. Если в базе три версии прайса или регламента, система может ответить по старой. Нужна одна актуальная версия каждого документа, старые либо удаляются, либо помечаются и исключаются из поиска.
Проверить сканы. Документы-картинки без текстового слоя нужно распознать, а результат выборочно проверить. Плохой скан даст плохие ответы.
Подумать о таблицах. Таблицы характеристик и прайсы при обычном извлечении текста превращаются в кашу. Их часто выгоднее перевести в отдельный формат (например, каждую строку таблицы в текст вида «Модель X: вес 5 кг, мощность 200 Вт») или хранить в базе данных и отдавать модели по запросу.
Разделить доступ. Если в базе есть документы, которые видны не всем (зарплаты, договоры с конкретными клиентами), разграничение прав нужно закладывать в систему с самого начала. Иначе модель с удовольствием процитирует конфиденциальный документ любому сотруднику.
Добавить метаданные. Название документа, раздел, дата, к какому товару или процессу относится. Это помогает фильтровать поиск и показывать понятные ссылки на источник.
Как проверить качество RAG-системы
Пока систему не проверили на вопросах с известными ответами, о её качестве ничего сказать нельзя. Порядок такой:
- Составьте 30-50 вопросов, на которые вы точно знаете ответ, вместе с правильными ответами. Включите простые вопросы, сложные, вопросы с цифрами и несколько вопросов, ответа на которые в документах нет.
- Прогоните их через систему.
- Разметьте ответы: верный, неполный, неверный, «честно не знает», «придумал».
- Посмотрите, где ошибки: не нашёлся нужный фрагмент (проблема поиска) или фрагмент нашёлся, но модель ответила неверно (проблема генерации). Лечится это по-разному.
- Повторяйте этот прогон после каждого серьёзного изменения: новые документы, другие настройки, другая модель.
Самый опасный тип ошибки: уверенный выдуманный ответ на вопрос, ответа на который в документах нет. Хорошо настроенная система должна говорить «в документах этого нет». Проверяйте это специально.
Где RAG ошибается
- Похожие сущности. Две близкие модели товара с похожими описаниями: система берёт фрагмент от одной и отвечает про другую.
- Вопрос сформулирован не так, как в документе. Сотрудник спрашивает разговорным языком, в регламенте канцелярит. Смысловой поиск это частично сглаживает, но не всегда.
- Ответ разбросан по документу. Если для ответа нужно сложить пять пунктов из разных разделов, часть может не попасть в найденные фрагменты.
- Числа и артикулы. Без поиска по словам смысловой поиск их плохо различает.
- Устаревшие данные, о которых говорили выше.
Почти все эти проблемы решаются настройкой: размер фрагментов, гибридный поиск, ранжировщик, метаданные, инструкция для модели. Но решаются они только при условии, что есть набор тестовых вопросов и по нему видно, стало лучше или хуже.
Где запускать: облако или свой сервер
RAG-система состоит из нескольких моделей: эмбеддинги, ранжировщик, языковая модель. Эмбеддинги и ранжировщик лёгкие и спокойно работают на своём сервере даже без мощной видеокарты. Языковую модель можно взять облачную или запустить локально.
Если документы содержат коммерческую тайну или персональные данные, отправлять фрагменты в зарубежное облако не стоит. Тогда все части системы запускаются на своём железе. У нас свои серверы с GPU, и базы знаний на нейросетях по документации мы запускаем без передачи данных в чужие облака. Какие модели подходят для этого и какое железо нужно, разобрано в статье локальная нейросеть для бизнеса.
Из чего складывается стоимость RAG-системы
Основные затраты приходятся не на модели, а на работу с данными и интеграцию:
- Подготовка документов. Распознавание сканов, чистка дублей, разбор таблиц. Чем хуже порядок в документах, тем дороже этот этап.
- Настройка поиска. Разбиение на фрагменты, выбор моделей, гибридный поиск, ранжировщик, инструкция для модели. Делается итерациями по тестовому набору вопросов.
- Интерфейс и интеграция. Чат в браузере, бот в Telegram, кнопка в CRM, разграничение прав.
- Работа моделей. При облачной языковой модели это оплата за запросы, при своём сервере стоимость железа или аренды. Эмбеддинги при индексации считаются один раз и стоят недорого.
- Поддержка. Загрузка новых документов, удаление устаревших, периодический прогон тестовых вопросов.
Небольшая база по нескольким сотням аккуратных документов запускается за несколько недель. Большая база со сканами, правами доступа и интеграциями требует больше времени, и основная его часть уходит на данные.
Частые вопросы
Что такое RAG-система простыми словами?
Это поисковик по вашим документам, к которому приделана нейросеть. Поисковик находит подходящие куски текста, нейросеть читает их и отвечает на вопрос обычным языком со ссылкой на источник.
Можно ли сделать RAG-систему со своими данными без программиста?
Есть готовые сервисы и конструкторы, куда можно загрузить документы и получить чат. Для небольшого набора аккуратных текстовых документов этого бывает достаточно. Когда документов много, есть сканы, таблицы, разные права доступа и нужна интеграция с CRM или ботом, без разработки не обойтись.
Сколько документов можно загрузить в RAG?
Технически тысячи и десятки тысяч. Ограничение обычно не в объёме, а в качестве: чем больше дублей и устаревших версий, тем хуже ответы.
Чем RAG отличается от чат-бота?
Чат-бот это интерфейс, через который человек задаёт вопросы. RAG это способ, которым бот находит ответ в ваших документах. Многие боты с ИИ работают именно на RAG. Подробнее о ботах для сайта в статье чат-бот с ИИ для сайта.
Если хотите базу знаний по своим документам, мы начнём с аудита данных и тестового набора вопросов, а затем соберём систему и проверим её на ваших примерах. Подробнее на странице база знаний на ИИ, а если документы не должны покидать ваш контур, посмотрите ИИ на своём сервере.