RAG-система: как сделать базу знаний на нейросети по своим документам

ИИ 9 мин чтения

RAG-система это связка поиска и нейросети: на вопрос пользователя она сначала находит в ваших документах подходящие фрагменты, а затем передаёт их языковой модели, которая формулирует ответ и указывает, откуда он взят. Расшифровывается RAG как Retrieval-Augmented Generation, «генерация, дополненная поиском». Благодаря этому нейросеть отвечает не по общим знаниям из интернета, а по вашим регламентам, инструкциям, договорам и описаниям товаров, и при обновлении документов её не нужно переобучать. Ниже разбираем, как работает RAG, из каких частей состоит, как подготовить свои данные, как проверять качество ответов и в каких задачах база знаний на нейросети окупается, а в каких нет.

Зачем нужна RAG-система

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

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

RAG решает задачу иначе: из тысяч страниц выбирается несколько самых подходящих фрагментов, и модель отвечает только по ним. Это быстро, дёшево и проверяемо, потому что у каждого ответа есть источник.

Типичные сценарии:

  • Помощник для сотрудников. Вопросы по регламентам, характеристикам товаров, условиям поставщиков, порядку оформления документов.
  • Поддержка клиентов. Бот на сайте или в мессенджере отвечает на вопросы по инструкциям и условиям, а сложные передаёт человеку.
  • Техническая поддержка. Поиск по сервисной документации и мануалам на сотни страниц.
  • Продажи. Менеджер быстро находит, чем модели отличаются и какие опции совместимы.

Как работает RAG-система

Работа делится на две части: подготовка базы (индексация) и ответ на вопрос.

Индексация документов

  1. Извлечение текста. Из PDF, Word, Excel, HTML и сканов достаётся текст. Для сканов нужно распознавание (OCR). На этом шаге теряется больше всего качества: таблицы разваливаются, колонтитулы смешиваются с текстом, сноски оказываются посреди абзаца.
  2. Разбиение на фрагменты. Текст режется на куски (их называют чанками) размером от нескольких сотен до полутора-двух тысяч символов, обычно с небольшим перекрытием, чтобы мысль не обрывалась на границе. Хорошее разбиение учитывает структуру: заголовки, разделы, пункты.
  3. Эмбеддинги. Каждый фрагмент превращается в вектор, набор чисел, отражающий смысл текста. Для этого используют отдельную модель эмбеддингов. Для русского языка хорошо работают многоязычные модели, например bge-m3 или multilingual-e5.
  4. Сохранение в векторную базу. Векторы вместе с текстом и метаданными (документ, раздел, дата) сохраняются в хранилище: Qdrant, pgvector в PostgreSQL, Chroma, Milvus и другие.

Ответ на вопрос

  1. Вопрос пользователя тоже превращается в вектор.
  2. В базе ищутся фрагменты с самыми близкими векторами, то есть близкие по смыслу. Хорошие системы дополняют это обычным поиском по словам: смысловой поиск плохо находит артикулы, номера и точные названия, а поиск по словам находит их отлично. Такой поиск называют гибридным.
  3. Найденные фрагменты дополнительно сортируются моделью-ранжировщиком (reranker), которая точнее оценивает, отвечает ли фрагмент на вопрос.
  4. Лучшие фрагменты вместе с вопросом и инструкцией отправляются в языковую модель: «ответь только по этим фрагментам, укажи источник, если ответа нет, так и скажи».
  5. Пользователь получает ответ со ссылками на документы.

Графовые варианты

Обычный RAG хорошо отвечает на вопросы, ответ на которые лежит в одном-двух фрагментах. Хуже он справляется с вопросами, где нужно собрать сведения из многих мест: «какие модели поддерживают такую-то функцию», «чем отличаются все версии регламента». Для этого есть подходы с графом знаний (GraphRAG, LightRAG и подобные): при индексации модель дополнительно выделяет сущности и связи между ними, и поиск идёт не только по тексту, но и по графу. Индексация получается дольше и дороже, зато сложные вопросы обрабатываются лучше. Мы используем такой подход для баз знаний по технической документации.

RAG или дообучение модели

Частый вопрос: не проще ли дообучить модель на своих документах? Для задачи «отвечать по фактам из документов» обычно нет.

RAGДообучение (fine-tuning)
Новые документыдобавить в базу за минутызаново обучать модель
Источник ответавиден, можно проверитьне виден
Придумывание фактовменьше, модель отвечает по найденномуостаётся, модель «помнит» неточно
Что хорошо передаётфакты, цифры, формулировкистиль, формат, терминологию
Стоимость стартанижевыше, нужны подготовленные примеры

Дообучение полезно, когда нужно научить модель определённому стилю или формату ответа. Факты лучше давать через поиск. Иногда эти подходы совмещают, но начинать почти всегда стоит с RAG.

Как подготовить свои данные для RAG

Качество ответов в первую очередь определяется не моделью, а документами. Перед загрузкой стоит сделать несколько вещей.

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

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

Подумать о таблицах. Таблицы характеристик и прайсы при обычном извлечении текста превращаются в кашу. Их часто выгоднее перевести в отдельный формат (например, каждую строку таблицы в текст вида «Модель X: вес 5 кг, мощность 200 Вт») или хранить в базе данных и отдавать модели по запросу.

Разделить доступ. Если в базе есть документы, которые видны не всем (зарплаты, договоры с конкретными клиентами), разграничение прав нужно закладывать в систему с самого начала. Иначе модель с удовольствием процитирует конфиденциальный документ любому сотруднику.

Добавить метаданные. Название документа, раздел, дата, к какому товару или процессу относится. Это помогает фильтровать поиск и показывать понятные ссылки на источник.

Как проверить качество RAG-системы

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

  1. Составьте 30-50 вопросов, на которые вы точно знаете ответ, вместе с правильными ответами. Включите простые вопросы, сложные, вопросы с цифрами и несколько вопросов, ответа на которые в документах нет.
  2. Прогоните их через систему.
  3. Разметьте ответы: верный, неполный, неверный, «честно не знает», «придумал».
  4. Посмотрите, где ошибки: не нашёлся нужный фрагмент (проблема поиска) или фрагмент нашёлся, но модель ответила неверно (проблема генерации). Лечится это по-разному.
  5. Повторяйте этот прогон после каждого серьёзного изменения: новые документы, другие настройки, другая модель.

Самый опасный тип ошибки: уверенный выдуманный ответ на вопрос, ответа на который в документах нет. Хорошо настроенная система должна говорить «в документах этого нет». Проверяйте это специально.

Где RAG ошибается

  • Похожие сущности. Две близкие модели товара с похожими описаниями: система берёт фрагмент от одной и отвечает про другую.
  • Вопрос сформулирован не так, как в документе. Сотрудник спрашивает разговорным языком, в регламенте канцелярит. Смысловой поиск это частично сглаживает, но не всегда.
  • Ответ разбросан по документу. Если для ответа нужно сложить пять пунктов из разных разделов, часть может не попасть в найденные фрагменты.
  • Числа и артикулы. Без поиска по словам смысловой поиск их плохо различает.
  • Устаревшие данные, о которых говорили выше.

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

Где запускать: облако или свой сервер

RAG-система состоит из нескольких моделей: эмбеддинги, ранжировщик, языковая модель. Эмбеддинги и ранжировщик лёгкие и спокойно работают на своём сервере даже без мощной видеокарты. Языковую модель можно взять облачную или запустить локально.

Если документы содержат коммерческую тайну или персональные данные, отправлять фрагменты в зарубежное облако не стоит. Тогда все части системы запускаются на своём железе. У нас свои серверы с GPU, и базы знаний на нейросетях по документации мы запускаем без передачи данных в чужие облака. Какие модели подходят для этого и какое железо нужно, разобрано в статье локальная нейросеть для бизнеса.

Из чего складывается стоимость RAG-системы

Основные затраты приходятся не на модели, а на работу с данными и интеграцию:

  • Подготовка документов. Распознавание сканов, чистка дублей, разбор таблиц. Чем хуже порядок в документах, тем дороже этот этап.
  • Настройка поиска. Разбиение на фрагменты, выбор моделей, гибридный поиск, ранжировщик, инструкция для модели. Делается итерациями по тестовому набору вопросов.
  • Интерфейс и интеграция. Чат в браузере, бот в Telegram, кнопка в CRM, разграничение прав.
  • Работа моделей. При облачной языковой модели это оплата за запросы, при своём сервере стоимость железа или аренды. Эмбеддинги при индексации считаются один раз и стоят недорого.
  • Поддержка. Загрузка новых документов, удаление устаревших, периодический прогон тестовых вопросов.

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

Частые вопросы

Что такое RAG-система простыми словами?

Это поисковик по вашим документам, к которому приделана нейросеть. Поисковик находит подходящие куски текста, нейросеть читает их и отвечает на вопрос обычным языком со ссылкой на источник.

Можно ли сделать RAG-систему со своими данными без программиста?

Есть готовые сервисы и конструкторы, куда можно загрузить документы и получить чат. Для небольшого набора аккуратных текстовых документов этого бывает достаточно. Когда документов много, есть сканы, таблицы, разные права доступа и нужна интеграция с CRM или ботом, без разработки не обойтись.

Сколько документов можно загрузить в RAG?

Технически тысячи и десятки тысяч. Ограничение обычно не в объёме, а в качестве: чем больше дублей и устаревших версий, тем хуже ответы.

Чем RAG отличается от чат-бота?

Чат-бот это интерфейс, через который человек задаёт вопросы. RAG это способ, которым бот находит ответ в ваших документах. Многие боты с ИИ работают именно на RAG. Подробнее о ботах для сайта в статье чат-бот с ИИ для сайта.

Если хотите базу знаний по своим документам, мы начнём с аудита данных и тестового набора вопросов, а затем соберём систему и проверим её на ваших примерах. Подробнее на странице база знаний на ИИ, а если документы не должны покидать ваш контур, посмотрите ИИ на своём сервере.

Заявка

Обсудим вашу задачу

Опишите, что нужно, и пришлите адрес сайта, если он есть. Посмотрим, предложим решение и назовём цену и срок. Консультация бесплатная.

  • Ответим в течение рабочего дня
  • Работаем по договору, оплата по счёту
  • Сначала план и смета, потом работа
Или напишите в мессенджер: Telegram MAX

Заявка

Расскажите о задаче

Ответим в течение рабочего дня: уточним детали, назовём срок и цену. Ни к чему не обязывает.