В прошлом году к нам обратился директор службы поддержки одной казахстанской страховой компании. Они запустили AI-бота на базе ChatGPT, и первую неделю всё шло отлично — клиенты были в восторге от мгновенных ответов. А потом начались звонки в офис: «Ваш бот обещал мне выплату 500 000 тенге за царапину на бампере». Проблема в том, что никакой такой выплаты в полисах компании не существовало. Бот просто... придумал.
Это называется галлюцинации — и это главная причина, почему многие компании до сих пор боятся внедрять AI в клиентский сервис. Большие языковые модели действительно умеют складывать слова в убедительные предложения. Но они не понимают, что говорят. Для них «правильный» ответ — это тот, который статистически вероятен, а не тот, который соответствует вашим реальным продуктам, ценам и условиям.
RAG — Retrieval-Augmented Generation — решает эту проблему. Вместо того чтобы полагаться на «память» модели, система сначала находит релевантную информацию в вашей базе знаний, а потом генерирует ответ строго на её основе. Бот больше не выдумывает — он цитирует. И если нужной информации нет, он честно говорит «не знаю», вместо того чтобы импровизировать.
В этой статье я расскажу, как устроен RAG, почему это не просто «подключить документы к ChatGPT», какие архитектурные решения работают в реальном бизнесе, и как избежать типичных ошибок внедрения. С примерами для казахстанского рынка — потому что у нас своя специфика: многоязычность, интеграция с местными системами, требования к хранению данных.
«Когда клиент спрашивает про условия страхования — ему нужен точный ответ из нашего полиса, а не общие рассуждения о страховании. RAG дал нам именно это: бот отвечает нашими формулировками, со ссылками на конкретные пункты договора».
RAG — это Retrieval-Augmented Generation, если по-научному. На деле всё проще: прежде чем AI что-то ответит, система роется в ваших документах и находит нужную информацию. Потом модель получает эти фрагменты вместе с вопросом и формулирует ответ на их основе.
Представьте себе умного ассистента, у которого нет феноменальной памяти, но есть мгновенный доступ к архиву всех документов компании. Когда клиент спрашивает «какие документы нужны для оформления кредита?», ассистент не пытается вспомнить — он быстро находит нужную инструкцию, читает её и отвечает своими словами, но строго по тексту документа.
Это принципиально отличается от того, как работает «чистый» ChatGPT. Базовая модель обучена на огромном количестве текстов из интернета, но она не знает ничего о вашей компании. Она может рассказать, как обычно оформляют кредиты в банках мира — но не как это делаете именно вы, с вашими формами, сроками и требованиями.
«Ты бот компании X, отвечай на вопросы о наших услугах»
Дообучение модели на ваших данных
Поиск в базе знаний + генерация
Почему нельзя просто «загрузить PDF в ChatGPT»? Во-первых, у модели есть ограничение на размер контекста — она физически не может «прочитать» все ваши документы за раз. Даже если бы могла — это было бы безумно дорого (каждый токен стоит денег) и медленно. RAG решает эту проблему элегантно: он находит только релевантные фрагменты и передаёт модели именно их.
Во-вторых, простая загрузка файла не даёт системе понимания структуры информации. RAG включает этап индексации, когда документы разбиваются на смысловые блоки, преобразуются в математические векторы и сохраняются в специальной базе данных. Это позволяет искать не по ключевым словам, а по смыслу — даже если клиент сформулировал вопрос не так, как написано в документе.
RAG-система — это несколько компонентов, которые работают в связке. Ниже — не абстрактная теория, а конкретные решения, которые придётся принимать при внедрении.
Прежде чем система сможет искать информацию, её нужно подготовить. Это не просто «закинуть файлы в папку». Документы проходят через несколько стадий обработки.
Извлечение текста. PDF, Word, Excel, HTML, Confluence, Google Docs — у каждого формата свои особенности. PDF может содержать текст как текст, а может — как картинки (отсканированные документы). В последнем случае нужен OCR — распознавание текста. Для казахского языка это отдельная задача, потому что не все OCR-движки хорошо с ним справляются.
Разбиение на чанки (chunks). Большой документ нужно разбить на фрагменты подходящего размера. Слишком маленькие — потеряется контекст. Слишком большие — будет сложно найти конкретную информацию, плюс не влезут в контекст модели. Обычно оптимальный размер — 500-1500 токенов с перекрытием между соседними чанками.
Создание эмбеддингов. Каждый чанк преобразуется в вектор — набор чисел, который отражает смысл текста. Тексты с похожим смыслом имеют похожие векторы. Это позволяет искать не по ключевым словам, а по семантике: вопрос «как вернуть деньги» найдёт информацию о «процедуре возврата средств», даже если слово «деньги» нигде не упоминается.
Сохранение в векторную базу. Векторы сохраняются в специализированную базу данных (Pinecone, Weaviate, Milvus, pgvector). Эти базы оптимизированы для быстрого поиска похожих векторов среди миллионов записей.
Загрузка документов — PDF, Word, Excel, HTML, базы знаний из Confluence, статьи из сайта, FAQ из CRM
Извлечение текста — парсинг форматов, OCR для сканов, обработка таблиц и изображений
Разбиение на чанки — деление на смысловые блоки по 500-1500 токенов с перекрытием
Создание эмбеддингов — преобразование текста в векторы через модель (OpenAI, Cohere, локальные)
Сохранение в векторную БД — индексация векторов с метаданными (источник, дата, раздел)
Когда пользователь задаёт вопрос, система должна найти релевантные фрагменты в базе знаний. Это происходит так:
Преобразование вопроса в вектор. Вопрос пользователя проходит через ту же модель эмбеддингов, что и документы. Получается вектор, который можно сравнивать с векторами в базе.
Поиск похожих векторов. Система ищет в базе чанки, векторы которых наиболее близки к вектору вопроса. Обычно берут top-5 или top-10 результатов, но это настраиваемый параметр.
Ранжирование и фильтрация. Найденные результаты можно дополнительно отфильтровать (по дате, по источнику, по типу документа) и переранжировать с помощью более точной модели (reranker). Это особенно важно, когда первоначальный поиск возвращает много результатов разного качества.
На практике качество retrieval — это 80% успеха RAG-системы. Если на этом этапе не нашлась нужная информация, никакая генерация это не исправит. Поэтому много усилий уходит именно на оптимизацию поиска: эксперименты с размером чанков, выбор модели эмбеддингов, настройка гибридного поиска (векторный + ключевые слова).
Наконец, найденные фрагменты передаются языковой модели вместе с вопросом пользователя и инструкциями (системным промптом). Модель генерирует ответ на основе этой информации.
Важно правильно составить промпт. Типичная структура:
Критически важная инструкция: если в предоставленном контексте нет информации для ответа — сказать об этом прямо, а не пытаться ответить на основе общих знаний. Это главная защита от галлюцинаций.
RAG — не магия. Это инженерная система со своими ограничениями и типичными граблями. Вот с чем сталкиваемся чаще всего.
Самая частая проблема: пользователь задаёт вопрос, система ищет в базе, но возвращает нерелевантные результаты. Причины могут быть разные.
Неправильный размер чанков. Если чанки слишком большие, в них смешивается информация на разные темы, и семантический поиск работает плохо. Если слишком маленькие — теряется контекст, и фрагмент сам по себе непонятен.
Плохое качество эмбеддингов. Модели эмбеддингов обучались преимущественно на английском языке. Для русского и тем более казахского качество может быть хуже. Решение — использовать мультиязычные модели или модели, специально обученные для русского языка.
Терминология не совпадает. Клиенты спрашивают «как вернуть деньги», а в документах написано «процедура аннулирования транзакции». Семантический поиск частично решает эту проблему, но не полностью. Помогает гибридный поиск (векторный + keyword) и работа над синонимами.
Даже с RAG модель может выдумывать. Обычно это происходит, когда:
Решения:
Подробнее об этих техниках — в статье про защиту от галлюцинаций LLM.
RAG добавляет дополнительные этапы к обработке запроса: создание эмбеддинга вопроса, поиск в векторной базе, возможно reranking. Всё это занимает время.
Оптимизации:
Каждый запрос к LLM стоит денег. Чем больше контекста передаёте, тем дороже. При большом потоке обращений затраты могут стать существенными.
Как снижать стоимость — отдельная большая тема, которую мы разбираем в статье про оптимизацию стоимости AI-ботов. Если коротко: кэширование, выбор подходящей модели под задачу (не всегда нужен GPT-4), оптимизация размера контекста.
Разработаем RAG-систему под вашу документацию: интеграция с CRM, мессенджерами и сайтом, защита от галлюцинаций, поддержка русского и казахского языков.
Обсудить проектХватит теории. Вот как RAG работает в живых проектах — три сценария, которые встречаются постоянно.
Классический случай. У компании есть база знаний: FAQ, инструкции, описания продуктов, условия обслуживания. Клиенты пишут в чат с вопросами, и вместо того чтобы операторы каждый раз искали ответы в документах — это делает бот.
Что включаем в базу знаний:
Особенности реализации:
Метрики успеха: процент автоматически закрытых обращений (deflection rate), CSAT по ботовым диалогам, время до первого ответа.
У компании есть внутренняя документация: регламенты, процедуры, шаблоны, база знаний для сотрудников. Новичкам сложно в ней ориентироваться, опытные сотрудники тратят время на поиск нужной информации.
Что включаем в базу знаний:
Особенности реализации:
Метрики успеха: снижение нагрузки на HR/IT-поддержку, время поиска информации, NPS сотрудников по внутренним сервисам.
Менеджеры должны знать продукты компании, условия, конкурентов, возражения клиентов. Новичкам сложно всё запомнить, опытные тоже не помнят детали редких продуктов.
Что включаем в базу знаний:
Особенности реализации:
Метрики успеха: время onboarding новых менеджеров, конверсия в продажу, средний чек (если ассистент помогает с допродажами).
RAG-система состоит из нескольких технических компонентов. Для каждого есть варианты — от облачных сервисов до open-source решений. Выбор зависит от требований к приватности, бюджета и команды.
Ядро системы, которое генерирует ответы. Основные варианты:
| Модель | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| GPT-4 / GPT-4o | Лучшее качество, хорошо следует инструкциям | Дорого, данные уходят в облако OpenAI | Когда критично качество, нет требований к локализации данных |
| Claude 3.5 | Большой контекст (200K), меньше галлюцинаций | Дорого, облако | Когда нужен большой контекст, сложные документы |
| GPT-3.5 Turbo | Дешёво и быстро | Хуже следует инструкциям, больше галлюцинаций | Простые FAQ-боты, прототипы |
| Llama 3 / Mistral | Open-source, можно запустить локально | Нужна GPU-инфраструктура, требует настройки | Когда данные нельзя отправлять в облако |
Подробнее о выборе между fine-tuning, RAG и prompt engineering — в отдельной статье.
Преобразует текст в векторы для поиска. Важно выбрать модель, которая хорошо работает с русским языком:
Хранит векторы и обеспечивает быстрый поиск:
Связывают компоненты в единую систему:
PDF, Word, Confluence, база знаний CRM, сайт, 1C
Pinecone / Weaviate / pgvector для хранения эмбеддингов
GPT-4 / Claude / Llama для генерации ответов
CRM, мессенджеры, сайт, телефония
RBAC, фильтрация контента, аудит
Логи, метрики качества, обратная связь
80% успеха RAG — это качество базы знаний. Можно взять самую крутую модель и вылизать архитектуру — но если в базе бардак, ответы будут такими же. Классика жанра: garbage in — garbage out.
Прежде чем индексировать всё подряд, проведите аудит:
RAG лучше работает со структурированной информацией. Несколько приёмов:
Разделяйте факты и рассуждения. Фактическая информация (цены, характеристики, процедуры) должна быть чётко отделена от маркетинговых текстов. Бот должен отвечать фактами.
Используйте метаданные. К каждому чанку можно добавить метаданные: категория, дата обновления, автор, продукт. Это позволяет фильтровать результаты поиска и показывать актуальность информации.
Создавайте FAQ из реальных вопросов. Проанализируйте историю обращений в поддержку. Какие вопросы задают чаще всего? Для них стоит создать отдельные статьи с точными ответами.
В Казахстане это особенно актуально — клиенты могут писать на русском, казахском или переключаться между языками. Как это учесть:
База знаний — это живая сущность. Цены меняются, продукты обновляются, условия корректируются. Нужен процесс актуализации:
«Работает» и «работает нормально» — две большие разницы. Без метрик вы слепы. Вот что стоит отслеживать.
Precision@k — какая доля из top-k найденных документов действительно релевантна вопросу? Если из 5 найденных фрагментов только 1 по теме — это проблема.
Recall@k — какую долю всех релевантных документов система нашла? Если есть важный документ с ответом, но система его не находит — плохо.
MRR (Mean Reciprocal Rank) — на какой позиции в среднем находится первый релевантный результат? Чем ближе к первому месту, тем лучше.
Faithfulness (достоверность) — насколько ответ соответствует предоставленному контексту? Нет ли информации, которой в источниках не было?
Relevance (релевантность) — отвечает ли ответ на заданный вопрос?
Groundedness — подкреплено ли каждое утверждение в ответе конкретным источником?
Технические метрики важны, но бизнесу нужны другие показатели:
Подробнее об оценке качества — в статье про тестирование AI-ботов.
Набитые шишки стоят дорого. Вот типичные грабли, на которые наступают раз за разом.
«У нас терабайт документов, давайте всё закинем в RAG!» Результат: в базе смешиваются актуальные инструкции с черновиками трёхлетней давности, противоречивые версии документов, нерелевантная информация. Поиск работает плохо, ответы непредсказуемы.
Решение: Курируйте базу знаний. Меньше — лучше, если это актуальная и релевантная информация.
Система отлично отвечает на вопросы, которые придумал разработчик. А потом приходят реальные клиенты со своими формулировками — и всё ломается.
Решение: Собирайте реальные вопросы из истории обращений. Создайте golden set — набор вопросов с эталонными ответами. Тестируйте на нём регулярно.
Бот не может отвечать на все вопросы. Если нет возможности передать диалог человеку — клиенты застревают в бесконечном цикле «не понимаю ваш вопрос».
Решение: Всегда предусматривайте эскалацию. Пусть бот сам предлагает связаться с оператором, если не уверен в ответе.
Запустили систему — и забыли. Через полгода цены изменились, продукты обновились, а бот отвечает по старой информации.
Решение: Автоматизируйте обновление. Назначьте ответственного. Мониторьте жалобы на неактуальность.
Пользователи отмечают ответы как «бесполезные» или пишут «это неправильно». Но никто не анализирует эту информацию.
Решение: Собирайте обратную связь. Регулярно анализируйте негативные оценки. Это лучший источник для улучшения системы.
Промпт говорит «отвечай на основе документов», но не запрещает явно отвечать без источников. Модель галлюцинирует в edge cases.
Решение: Явно инструктируйте модель: «Если информации нет в предоставленном контексте — скажи, что не знаешь. Не придумывай.»
Слишком маленькие чанки — теряется контекст. Слишком большие — плохой поиск и дорогие запросы.
Решение: Экспериментируйте. Начните с 500-1000 токенов с перекрытием 100-200. Измеряйте качество поиска.
Векторный поиск хорош для семантики, но плох для точных совпадений. Если клиент ищет «договор №12345» — векторный поиск может не найти.
Решение: Используйте гибридный поиск: векторный + keyword. Многие векторные БД это поддерживают из коробки.
Система работает, но как — неизвестно. Сколько запросов? Какое время ответа? Какой процент эскалаций? Без данных невозможно улучшать.
Решение: Логируйте всё: запросы, найденный контекст, ответы, оценки пользователей. Стройте дашборды.
«Мы загрузим документы, и бот сам разберётся». RAG — это инженерная система, требующая настройки, тестирования и поддержки.
Решение: Относитесь к RAG как к продукту. Выделяйте ресурсы на развитие и поддержку. Постоянно улучшайте.
Разработаем RAG-систему под ваши задачи: от аудита базы знаний до запуска в продакшн. Опыт в казахстанских проектах, поддержка многоязычности.
Заказать консультациюRAG работает с корпоративными данными — часто конфиденциальными. Безопасность здесь критична.
Если используете облачные сервисы (OpenAI, Pinecone) — данные уходят на внешние серверы. Для некоторых компаний это неприемлемо. Варианты:
Подробнее о развёртывании локальных LLM — в отдельной статье.
Не все сотрудники должны видеть всю информацию. Как реализовать RBAC в RAG:
Злоумышленник может попытаться через вопрос заставить бота выдать конфиденциальную информацию или выполнить нежелательные действия. Меры защиты:
Детально про защиту от prompt injection — в отдельном материале.
Для compliance и разбора инцидентов нужно логировать:
Если вы решили внедрять RAG — вот план действий, который работает.
Не пытайтесь сразу закрыть все сценарии. Выберите один конкретный:
Один сценарий — проще собрать базу знаний, проще оценить качество, быстрее получить результат.
50-100 типичных вопросов с эталонными ответами. Это основа для тестирования и улучшения системы.
Вернёмся к началу. Страховая компания, бот, который обещал несуществующие выплаты. После внедрения RAG ситуация изменилась радикально: теперь бот отвечает строго по условиям полисов, со ссылками на конкретные пункты. Если клиент спрашивает о чём-то, чего нет в документах — бот честно говорит «этот вопрос лучше обсудить со специалистом» и предлагает связаться с оператором.
RAG — это не просто техническое решение. Это способ сделать AI полезным для бизнеса, а не источником рисков. Это мост между мощью языковых моделей и точностью корпоративной информации.
Ключевые мысли из этой статьи:
Если вы думаете о внедрении AI-бота, который должен отвечать по вашим данным — RAG почти наверняка будет частью решения. Это проверенная архитектура, которая работает в сотнях компаний по всему миру. И при правильной реализации она может стать конкурентным преимуществом вашего бизнеса.