Уверены, что вы уже слышали об этой технологии, но сегодня поговорим о ней с практической точки зрения. В этой статье наша Команда AI дает советы тем, кто еще не погружен в технические детали — рассказывает о сложностях, которые могут возникать при работе с этой технологией и о том, как их избегать. 

Зачем вам нужен RAG?

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

Все хотят получить быстрые и точные ответы по своим рабочим документам. Это и есть та самая задача, которую обещает решить технология RAG. Ho, как и в любом деле, дьявол кроется в деталях.

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

Представьте, что вы наняли гениального стажера — это наша Большая Языковая Модель, LLM. Он знает практически все обо всем в мире, но совершенно не знаком с конкретикой вашей компании. Он не знает регламентов, инструкций, договоров, внутренних документов.. 

RAG — это как дать этому стажеру флешку с доступом ко всей корпоративной базе знаний.

Как это работает

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

Практически любая RAG-система внутри использует векторный поиск и любые документы, которые вы в нее загрузите, она будет разбивать на понятные ей фрагменты — минимальные единицы, по которым алгоритм будет искать информацию. Они с помощью нейронных сетей преобразуются в условные координаты на некоторой нейронной карте. Точно так же система присваивает координаты тем вопросам, которые ей задает пользователь. По ним она находит наиболее близкие фрагменты информации для ответа. 

Процесс состоит из трех шагов:

1. Retrieval (Поиск): Когда вы задаете вопрос, система сначала находит самые релевантные фрагменты в вашей базе знаний.

2. Augmentation (Обогащение): Затем она добавляет эти найденные фрагменты к вашему исходному запросу

3. Generation (Генерация): И наконец, наш «умный стажер» LLM генерирует ответ, основываясь и на вопросе, и на представленных фактах. 

В теории звучит просто, но на практике придется учитывать нюансы. 

Сначала задача

Не нужно пытаться внедрить RAG просто потому, что это модно или «все так делают». Не бросайтесь сразу «готовить». Сначала определитесь с тем, что именно вы хотите «съесть». 

Определите боль, конкретную задач: какие вопросы отнимают больше всего времени? где мы постоянно ищем одну и ту же информацию? Соберите 50-100 реальных вопросов от пользователей, решите, для чего будете внедрять RAG и только потом начинайте работу.

Определитесь с данными

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

Предположим, мы хотим задавать вопросы типа «Как мне запросить рабочий ноутбук?», «Кто руководитель моего руководителя?», «Сколько дней отпуска у меня осталось?», «Какие интересные события произошли в компании в прошлом году?» 

Например, данные о рабочей технике можно взять из базы знаний. А как система узнает, кто руководитель сотрудника, а кто его руководитель? Где лежит информация об отпусках каждого сотрудника? С этими информациями нужно уже идти в какие-то базы данных, использовать API и т.д.

Для начала остановитесь на той информации, которую можно вытащить из имеющихся документов — приказов, регламентов и т.д.

Предположим вы нашли 30 pdf-файлов с разной информацией. 

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

Реальность простого RAG

В основе RAG лежит LLM, которая в принципе подвержена следующим проблемам: 

  • Неточности и «галлюцинации»;

  • Неполные ответы: Из-за технических ограничений модель видит лишь небольшие фрагменты ваших документов и может упустить важный контекст;

  • Непонимание логики («кроме», «не», «сравни»). Если задать ему вопрос «Какие отделы, кроме отдела продаж, не выполнили КРІ?», скорее всего, он запутается в логике и отрицаниях.

  • Выдает устаревшую или противоречивую информацию

  • Плохо синтезирует данные из разных источников

  • Медленный поиск в больших неструктурированных базах

«Чистый RAG на самом деле не дает тех оптимальных результатов, которые ожидались». Старший вице-президент IBM Динеш Нирмал

Простой RAG — это лишь отправная точка, а не финальное решение. 

Как решать проблему

Люди ищут простые способы — закинуть куда-то данные и получить ответ. 

Но самый важный ингредиент хорошего RAG — это качество данных. Успех на 80% зависит именно от качества данных. 

Если вы даете мусор на входе, вы получите мусор на выходе. 

С чем мы столкнемся:

  • Устаревшая информация: старые регламенты, неактуальные версии

  • Дубли и противоречия: разные ответы на один вопрос

  • «Шум»: колонтитулы, спецсимволы, разрывы строк, ненужные ссылки

  • Сложные форматы: PDF-таблицы, графики, сканы

Особенно сложно воспринимаются PDF-документы. Таблицы, графики, многоколоночный текст — все это ломается при простой конвертации в текст. Такие документы нельзя просто «скормить» системе.

И это проблемы не только самодельных систем. Даже готовые решения от лидеров рынка показывают те же ограничения. Возьмем кейс OpenAI Assistants API — это один из первых облачных RAG-сервисов, куда можно просто загрузить свои файлы. Казалось бы, идеальное решение «из коробки». Но независимое исследование от tonic.ai показало: масштабирование — его главная проблема.

Качество ответов резко падало с ростом числа документов: уже при 20 файлах ассистент почти перестал отвечать правильно и выдавал нестабильные результаты. 

На один и тот же вопрос по одним и тем же данным система давала то верный ответ, то неверный.

RAG — это не «черный ящик», куда можно все закинуть и получить магию. Это инструмент, который требует осмысленной настройки.

Наш рецепт правильного «приготовления» RAG 

Не пытайтесь приготовить все сразу. Начните с одного блюда.

Начните с простого, доведите до идеала, масштабируйте.

1. Выберите одну узкую задачу

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

3. Простой RAG — загрузите документы в любую LLM. 

4. Докажите ценность — соберите 15-20 вопросов, чтобы проверить, как функционирует модель.

Только после этого постепенно добавляйте новые документы и усложняйте сценарии

Как улучшить простой RAG? 

Работа с данными: 

  • Очистка: Удаление «шума», колонтитулов, артефактов

  • Умная «нарезка»: Сохранение смысловых блоков, иерархия

  • Добавление метаданных: Источник, дата, тема для фильтрации

  • Извлечение сущностей: Выделение ключевых терминов, дат, имен

  • Создание пар Вопрос-Ответ: Обучение на конкретных примерах

  • Парсинг таблиц: Преобразование таблиц в Markdown или JSON

Когда данные подготовлены, мы можем улучшить саму логику поиска и генерации ответа. Например, вместо сложных «эмбеддингов» можно использовать более простой подход — попросить легкую LLM просто просмотреть страницы и ответить на вопрос: «Здесь есть ответ? Да/Нет». А при генерации — просить модель «думать шаг за шагом» и выдавать ответ в строгом формате. Это снижает количество ошибок.

Логика работы:

  • LLM-фильтр: Простой поиск: Да/Нет ответа на странице

  • Гибридный поиск: Векторы + поиск по ключевым словам (BM25)

  • Пересортировка результатов более умной моделью

  • Расширение контекста: Добавляем соседние фрагменты к ответу

  • «Рассуждения»: Просим LLM думать перед ответом

  • Структурированный вывод: Задаем строгий формат ответа (JSON)

Главное правило масштабирования — декомпозиция

Одна гигантская база знаний — это плохо. Она снижает точность, повышает риск «галлюцинаций». С ней сложно найти «иголку в стоге сена».

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

Итоги

  • Поймите задачу: начните с реальной «боли» и вопросов

  • Подготовьте данные: Это 80% успеха. Очистите, структурируйте, сделайте их съедобными. 

  • Двигайтесь итерационно: начните с простого, докажите ценность. 

  • Декомпозируйте: много маленьких ассистентов лучше одного большого монстра

Если хотите попробовать, воспользуйтесь RAGFlow: Open-source решение для быстрого старта.

Комментарии (0)