Как использовать :RAG-подход в Yandex Cloud

Языковые модели справляются с общими задачами, но часто этого недостаточно. Они не знают внутренних нормативных документов компании или тонкостей конкретных процессов. Большинство моделей, включая YandexGPT, не заточены под узкие предметные области.Чтобы решить эту проблему, модель нужно интегрировать с внешними источниками информации или дообучить под конкретные задачи. В этом уроке вы изучите подход Retrieval-Augmented Generation (RAG). Он позволяет подключать дополнительные знания и использовать их для генерации ответов.

Логика Сегодня вы узнаете, зачем и когда применять RAG, разберётесь в схеме работы и познакомитесь с инструментами Yandex Cloud для такой реализации. Полный вперёд!

Построение вопросно-ответных систем

ЛогикаОдин из самых частых сценариев применения языковых моделей — построение вопросно-ответных систем. Они позволяют отвечать на вопросы пользователей с учётом специфической информации по предметной области. О вопросно-ответных системах мы и поговорим дальше.

Представьте сотрудника, который недавно вышел на работу в новую компанию и мало знаком с корпоративными процессами. Ему нужно узнать, как оформить командировку. Он может поискать документы об оформлении командировки на корпоративном портале, например Вики. Если повезёт, то первая выдача в поиске будет содержать необходимую информацию. Но возможно, придётся прочитать большое количество страниц, чтобы найти ответ. Может быть и такое, что ответа нет в доступных документах.После настройки вопросно-ответной системы на базе языковых моделей процесс работы будет другим. Новому сотруднику станет доступен чат-бот, где он может естественным языком задать вопрос: «Как оформить командировку через неделю?»Дальше модель задаст уточняющие вопросы в чат-боте, например про длительность и даты командировки. А после этого, опираясь на нормативные документы, ответит на конкретный вопрос сотрудника. Это экономит время на поиск нужной информации и позволяет быстрее решить задачи.

Подумайте, возможно, у вас есть задачи, которые получится решить построением такой системы.Часто при построении вопросно-ответных систем (ВОС) корпоративного класса нужно настроить работу языковой модели с данными, на которых она ранее не обучалась. Первое, что приходит на ум для решения данной задачи, — это дообучение модели, или fine-tuning. При таком подходе модель обучается на новых данных, для этого есть много способов.

Остаются две проблемы:

  1. Модель может выдавать неправильные ответы, которые не соответствуют действительности. Это галлюцинации модели.
  2. Вы не можете проверить правильность ответа, потому что дообученная модель не возвращает ссылки на источники информации.

💡 Retrieval-Augmented Generation (RAG) не требует обучения модели и помогает настроить LLM для работы с данными.В чём суть метода? Когда модель получает вопрос пользователя, она сначала обращается к функции поиска. Та находит релевантную информацию в текстовой базе знаний. Затем найденные фрагменты передаются на вход LLM. После этого модель «думает» и выдаёт итоговый ответ.Процесс похож на работу человека со справочником. Такой подход позволяет получать более точные ответы и не полагаться только на память LLM.Три основных преимущества RAG:

  1. Возможность быстро обновлять базу знаний, с которой работает LLM, поскольку не нужен длительный этап обучения.
  2. Точные ссылки на источники информации, на основании которых LLM дала ответ, вплоть до номеров страниц в документе.
  3. Возможность влиять на качество ответов и контролировать результат:
  • за счёт снижения вероятности возникновения галлюцинаций. Для достижения этой цели используется промпт-инжиниринг и зануление параметра temperature в LLM. Пример: «Отвечай только по информации из предоставленных документов. Если в предоставленных документах ответа нет, то отвечай: “Я не знаю”»;
  • за счёт смысловой проверки фрагментов, найденных в базе знаний.

Архитектура RAG:

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

📚 Некоторые продвинутые RAG-подходы позволяют работать и с графической информацией. Они используют мультимодальные модели с возможностью работы с изображениями (VLM). Для построения таких систем нужно реализовывать RAG вручную.

Этапы построения RAG

Построение диалоговой системы на основе текстовой базы знаний состоит из следующих этапов:

  1. Готовится корпус текстовых данных. Если в исходных данных есть документы в нетекстовых форматах (PDF, изображения отсканированных документов, видеоролики, звуковые файлы), они преобразуются в текстовый формат.
  2. Данные изучаются, принимаются решения о способах поиска по ним. Эти гипотезы потом проверяются на этапе пилота.

Варианты поиска:

  • полнотекстовый поиск по ключевым словам;
  • семантический поиск по векторной или графовой базе данных;
  • гибридный вариант;
  • специализированное поисковое решение.
  1. В зависимости от выбранного варианта вы подбираете подходы к сегментации документов и разбиению на индексы. Документы целиком слишком длинные, поэтому их разбивают на более мелкие фрагменты — чанки. Размер чанка подбирают опытным путём, но учитывают несколько факторов:
  • Чанк должен корректно находиться при векторном поиске. Для этого он должен содержать атомарный смысл, который можно представить векторным эмбеддингом. Длинный текст с несколькими темами превращается в усреднённый вектор, из-за чего его сложнее найти.
  • В контекст модели обычно добавляют несколько найденных чанков. Поэтому чанк должен быть компактным, чтобы несколько фрагментов помещались в контекст без заметной потери качества.
  • Слишком маленькие чанки могут не содержать всей релевантной информации.
  1. Подготовка поисковых индексов. Это может делать администратор вопросно-ответной системы.
  2. Параллельно с предыдущим шагом программисты выбирают язык и фреймворк и пишут код. В Yandex Cloud для создания ВОС можно использовать визуальный конструктор и обойтись без программирования. Альтернативный вариант — протокол Responses API. Этот протокол предложил OpenAI, и он стал де-факто стандартом для работы с LLM. Поэтому вы можете использовать любые сторонние фреймворки, которые его поддерживают.
  3. Написанный код тестируют вместе с экспертами в предметной области. Эксперты составляют список вопросов и эталонных ответов. Иногда роль оценщика выполняет другая LLM. Для тестирования используют специализированные фреймворки, например Ragas. Процесс напоминает таблицу с оценками: она показывает, по какому индексу, на какой вопрос и насколько хорошо ответила система.
  4. Низкие оценки анализируют, чтобы определить источник проблемы — поиск или LLM. Если проблема в поиске, его улучшают. Для этого применяют набор методов Advanced RAG — это задача программистов. Если дело в LLM, сначала дорабатывают промпт. В него добавляют определения терминов и примеры, которые модель не поняла. Промпт-инжинирингом также занимаются программисты.

💡 Когда терминов много или они сложные, может потребоваться дообучение модели определённой терминологии.

  1. Софт выводится в опытно-промышленную эксплуатацию со встроенным журналированием взаимодействия с пользователем и возможностью оставить обратную связь (like/dislike или оценка).
  2. Запросы с низкими оценками анализируют и разбирают по схеме, как в пункте 7. Возможно, потребуется расширение корпуса данных, дополнительный тюнинг промпта или (в очень редких случаях) дообучение модели.
  3. Софт вводится в промышленную эксплуатацию со всеми функциями по сбору фидбэка (см. пункт 8). Также предусмотрены регулярные процессы:
  • обновление базы знаний;
  • анализ обратной связи от пользователей и отработка негативных отзывов.

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

Построение RAG-ассистентов в Yandex Cloud

В предыдущем разделе вы познакомились с понятием вызова функций и инструментов. В Yandex AI Studio RAG-подход реализован с помощью инструментов файлового поиска (File Search API) и веб-поиска (Web Search API). Вызов этих инструментов происходит автоматически на стороне облака. Вы получаете только ответ модели с указанием использованных фрагментов базы знаний.Responses API также позволяет хранить контекст переписки с пользователем. Это необходимо для создания разговорных агентов. Например, если пользователь сначала спрашивает: «Как оформить командировку в Москву?», а затем уточняет: «А в Санкт-Петербург?», модель должна понять, о чём идёт речь.

Есть два способа создать ассистент:

  • Использовать веб-интерфейс Yandex AI Studio. В нём вы настраиваете агента, добавляете файлы для RAG и задаёте параметры без программирования. Затем такого агента можно подключить к любому пользовательскому интерфейсу с помощью нескольких строк кода.
  • Использовать программный подход. Вы работаете с Responses API через библиотеку OpenAI SDK для Python или Typescipt. Также подойдут другие библиотеки, совместимые с OpenAI, например LangChain или LlamaIndex.

В обоих случаях последовательность действий одинаковая:

  1. Вы подготавливаете базу знаний из текстовых и других типов документов. File Search API поддерживает разные форматы: Word, PDF, таблицы XLSX, аудио- и видеофайлы. При индексации система преобразует их в текст. Если важно убедиться, что документы содержат нужную информацию, заранее выполните преобразование в текст и отформатируйте данные.

💡 RAG-системы на основе качественно подготовленных данных работают стабильнее.

  1. Вы загружаете файлы в облако и индексируете их. Длинные документы система разбивает на чанки. Для этого используют разные стратегии чанкования. Длину фрагмента обычно задают в токенах так, чтобы в контекстное окно LLM помещалось несколько релевантных чанков. Также важно настроить перекрытие между фрагментами (overlap).

В File Search API используется комбинированный поиск, он сочетает в себе:

  • Полнотекстовый поиск по ключевым словам. Эффективен, например, для точного поиска названий брендов или деталей.
  • Векторный поиск на основе эмбеддингов — векторов смысла. Он позволяет находить близкие по смыслу фрагменты текста.

В результате вы получаете поисковый индекс, который ищет фрагменты в текстовой базе знаний.

  1. Вы создаёте агента, задаёте системный промпт и подключаете инструмент файлового поиска. Также можно настроить дополнительные параметры, например количество фрагментов текста, которые будут возвращаться в одном запросе.

После создания агента (программно или через интерфейс AI Studio) вы обращаетесь к нему с помощью Responses API. Чтобы сохранять контекст диалога, при каждом следующем запросе передавайте идентификатор предыдущего ответа: previous_response_id.📚 В уроке нет программного кода для создания и использования RAG-агента. Если вы хотите подробнее изучить создание таких агентов, рекомендуем курс «Введение в ИИ-агентов в Yandex AI Studio» или этот пример на GitHub.

Веб-поиск

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

  • Данные для обучения LLM актуальны на момент обучения. Обычно это на 6–10 месяцев раньше текущей даты. Веб-поиск позволяет обращаться к свежей информации.
  • Редкие или малораспространённые факты нейросеть знает менее уверенно. Например, год основания города Волоколамска. В таких случаях модель с высокой вероятностью может галлюцинировать. Если же она опирается на результаты веб-поиска, вероятность ошибки заметно снижается.

Чтобы агент мог использовать веб-поиск, нужно указать соответствующий инструмент. Это можно сделать через веб-интерфейс Yandex AI Studio или программно — с помощью Responses API. Подход тот же, что и при подключении файлового поиска.Инструмент веб-поиска может работать со всем интернетом или быть ограничен конкретным сайтом либо доменом. Это позволяет подключать специализированные знания, например документацию по отдельному продукту. Для таких задач надёжнее использовать файловый поиск, но он требует больше усилий при подготовке данных.

Другие фреймворки для построения умных ассистентов

Иногда требуется реализовать собственный подход к поиску информации для RAG или детально настроить весь RAG-пайплайн. Например, вы можете использовать графовую базу знаний для хранения связанных текстовых блоков и выполнять поиск по такому графу с помощью специальных методов. Такой подход называют графовым RAG.В этих случаях удобно применять открытые LLM-фреймворки, например LangChain и LlamaIndex. Они предоставляют инструменты для подключения к разным языковым моделям, векторным и графовым базам данных. Также в них есть готовые методы для обработки данных разных форматов, интеграции этих данных в LLM и последующей обработки результатов. В открытых источниках можно найти много примеров кода для типовых задач на базе этих фреймворков.Для работы с фундаментальными моделями Yandex Cloud через LangChain вы можете использовать Responses API или любой другой API, совместимый с OpenAI. Например, Chat Completions API. Его поддерживают все модели в Yandex Cloud. В этом случае вы используете стандартные классы OpenAI и передаёте параметры базового URL и ключа доступа.Есть и другой подход — использование специализированного Yandex AI Studio SDK. Его не рекомендуют для новых проектов, но вы можете создать объект для работы с языковой моделью в Yandex Cloud, а затем с помощью метода .langchain() получить объект, совместимый с протоколами LangChain. Примеры доступны в репозитории SDK.📚 Актуальные примеры RAG-приложений, адаптированные для Yandex AI Studio, можно найти по ссылке.

https://practicum.yandex.ru/learn/yc-ml-services/courses/9ad788d2-6151-4f6f-82ff-5eb63d7925d7/sprints/932317/topics/36b1bc86-4cd6-442e-b1cf-a474ea0c905d/lessons/3e9f7693-0f1c-467b-92d4-4b06dcaa1022/

Рубрики: Uncategorized

0 комментариев

Добавить комментарий

Заполнитель аватара

Ваш адрес email не будет опубликован.