Более 6470 заметок о VMware, AWS, Azure, Veeam, Kubernetes и других
VM Guru / News / Создание приложений промышленного уровня на базе AI на платформе VMware Private AI Foundation с использованием микросервисов NVIDIA NIM
Создание приложений промышленного уровня на базе AI на платформе VMware Private AI Foundation с использованием микросервисов NVIDIA NIM
В рамках анонсов конференции Explore 2024, касающихся VMware Private AI Foundation с NVIDIA (PAIF-N), в компании VMware решили обновить Improved RAG Starter Pack v2.0, чтобы помочь клиентам воспользоваться новейшими микросервисами для инференса NVIDIA (модули NIM), которые обеспечивают атрибуты промышленного уровня (надёжность, масштабируемость и безопасность) для языковых моделей, используемых в системах Retrieval Augmented Generation (RAG).
Следуя духу оригинального Improved RAG Starter Pack (v1.0), Broadcom предлагает серию Jupyter-блокнотов, реализующих улучшенные методы поиска. Эти методы обогащают большие языковые модели (LLMs) актуальными и достоверными контекстами, помогая им генерировать более точные и надёжные ответы на вопросы, связанные с специализированными знаниями, которые могут не быть частью их предобученного датасета. Благодаря этому можно эффективно снизить "галлюцинации" LLM и повысить надёжность приложений, управляемых AI.
Новые функции обновлённого Improved RAG Starter Pack:
Используются NVIDIA NIMs для LLM, текстовых встраиваний и ранжирования текстов — трёх основных языковых моделей, которые питают RAG-пайплайны.
Обновили LlamaIndex до версии v0.11.1.
Используются Meta-Llama3-8b-Instruct в качестве генератора LLM, который управляет RAG-пайплайном.
Заменили OpenAI GPT-4 на Meta-Llama-3-70b-Instruct как движок для DeepEval для выполнения двух ключевых задач, связанных с оценкой RAG-пайплайнов:
Для оценки ("судейства") RAG-пайплайнов путём оценки ответов пайплайна на запросы, извлечённые из набора для оценки. Каждый ответ оценивается по нескольким метрикам DeepEval.
Анатомия улучшенного RAG Starter Pack
Каталог репозитория GitHub, содержащий этот стартовый пакет, предоставляет пошаговое руководство по внедрению различных элементов стандартных систем RAG.
Помимо NVIDIA NIM, системы RAG используют такие популярные технологии, как LlamaIndex (фреймворк для разработки приложений на основе LLM), vLLM (сервис для инференса LLM) и PostgreSQL с PGVector (масштабируемая и надёжная векторная база данных, которую можно развернуть с помощью VMware Data Services Manager).
Все начинается с реализации стандартного RAG-пайплайна. Далее используется база знаний RAG для синтеза оценочного набора данных для оценки системы RAG. Затем улучшается стандартная система RAG за счет добавления более сложных методов поиска, которые будут подробно описаны далее. Наконец, различные подходы RAG оцениваются с помощью DeepEval и сравниваются для выявления их плюсов и минусов.
Структура каталога организована следующим образом.
Теперь давайте обсудим содержание каждой секции.
Настройка сервисов NIM и vLLM (00)
Эта секция содержит инструкции и скрипты для Linux shell, которые необходимы для развертывания сервисов NVIDIA NIM и vLLM, требуемых для реализации RAG-пайплайнов и их оценки.
Инициализация PGVector (01)
Эта секция предлагает несколько альтернатив для развертывания PostgreSQL с PGVector. PGVector — это векторное хранилище, которое будет использоваться LlamaIndex для хранения базы знаний (текстов, встраиваний и метаданных), что позволит расширить знания LLM и обеспечить более точные ответы на запросы пользователей.
Загрузка документов базы знаний (02)
Каждый демо-пример RAG и введение в RAG используют базу знаний для расширения возможностей генерации LLM при вопросах, касающихся областей знаний, которые могут не входить в предобученные данные моделей. Для этого стартового пакета VMware выбрала десять документов из коллекции электронных книг по истории от NASA, предлагая таким образом вариант типичных документов, часто используемых в туториалах по RAG.
Загрузка документов в систему (03)
Эта секция содержит начальный Jupyter-блокнот, где используется LlamaIndex для обработки электронных книг (формат PDF), их разбиения на части (узлы LlamaIndex), кодирования каждого узла в виде длинного вектора (встраивания) и хранения этих векторов в PostgreSQL с PGVector, который действует как наш векторный индекс и движок запросов. На следующем изображении показан процесс загрузки документов в систему.
После того как PGVector загрузит узлы, содержащие метаданные, текстовые фрагменты и их соответствующие встраивания, он сможет предоставить базу знаний для LLM, которая будет генерировать ответы на основе этой базы знаний (в нашем случае это книги по истории от NASA).
Генерация оценочного набора данных (04)
Jupyter-блокнот в этой папке демонстрирует использование Synthesizer из DeepEval для создания набора данных вопросов и ответов, который впоследствии будет использоваться метриками DeepEval для оценки качества RAG-пайплайнов. Это позволит определить, как изменения ключевых компонентов пайплайна RAG, таких как LLM, модели встраиваний, модели повторного ранжирования, векторные хранилища и алгоритмы поиска, влияют на качество генерации. Для синтетической генерации оценочного набора данных используется модель Meta-Llama-3-70b-Instruct.
Реализация вариантов RAG (05)
В этом каталоге содержатся три подкаталога, каждый из которых включает Jupyter-блокнот, исследующий один из следующих вариантов реализации RAG-пайплайна на основе LlamaIndex и открытых LLM, обслуживаемых через vLLM:
Стандартный RAG-пайплайн + повторное ранжирование: этот блокнот реализует стандартный RAG-пайплайн с использованием LlamaIndex, включая финальный этап повторного ранжирования, который управляется моделью ранжирования. В отличие от модели встраиваний, повторное ранжирование использует вопросы и документы в качестве входных данных и напрямую выдаёт степень схожести, а не встраивание. Вы можете получить оценку релевантности, вводя запрос и отрывок в модель повторного ранжирования. VMware использует следующие микросервисы NVIDIA (NIM) для работы RAG-системы:
Генератор LLM для RAG: Meta-Llama-3-8b-Instruct
Модель встраиваний для RAG: nvidia/nv-embedqa-e5-v5
Модель повторного ранжирования для RAG: nvidia/nv-rerankqa-mistral-4b-v3
Следующая картинка иллюстрирует, как работает эта RAG-система.
Извлечение с использованием окон предложений:
Метод извлечения с использованием окон фраз (Sentence Window Retrieval, SWR) улучшает точность и релевантность извлечения информации в RAG-пайплайнах, фокусируясь на определённом окне фраз вокруг целевой фразы. Такой подход повышает точность за счёт фильтрации нерелевантной информации и повышает эффективность, сокращая объём текста, обрабатываемого во время поиска.
Разработчики могут регулировать размер этого окна, чтобы адаптировать поиск к своим конкретным задачам. Однако у метода есть потенциальные недостатки: узкая фокусировка может привести к упущению важной информации в соседнем тексте, что делает выбор подходящего размера окна контекста критически важным для оптимизации как точности, так и полноты процесса поиска. Jupyter-блокнот в этой директории использует реализацию SWR от LlamaIndex через модуль Sentence Window Node Parsing, который разбивает документ на узлы, каждый из которых представляет собой фразу. Каждый узел содержит окно из соседних фраз в метаданных узлов. Этот список узлов повторно ранжируется перед передачей LLM для генерации ответа на запрос на основе данных из узлов.
Автоматическое слияние при извлечении:
Метод автоматического слияния при извлечении — это подход RAG, разработанный для решения проблемы фрагментации контекста в языковых моделях, особенно когда традиционные процессы поиска создают разрозненные фрагменты текста. Этот метод вводит иерархическую структуру, где меньшие текстовые фрагменты связаны с более крупными родительскими блоками. В процессе извлечения, если определённый порог меньших фрагментов из одного родительского блока достигнут, они автоматически сливаются. Такой подход гарантирует, что система собирает более крупные, связные родительские блоки, вместо извлечения разрозненных фрагментов. Ноутбук в этой директории использует AutoMergingRetriever от LlamaIndex для реализации этого варианта RAG.
Оценка RAG-пайплайна (06)
Эта папка содержит Jupyter-блокнот, который использует DeepEval для оценки ранее реализованных RAG-пайплайнов. Для этой цели DeepEval использует оценочный набор данных, сгенерированный на предыдущем шаге. Вот краткое описание метрик DeepEval, используемых для сравнения различных реализаций RAG-пайплайнов. Обратите внимание, что алгоритмы метрик DeepEval могут объяснить, почему LLM присвоил каждую оценку. В нашем случае эта функция включена, и вы сможете увидеть её работу.
Contextual Precision оценивает ретривер вашего RAG-пайплайна, проверяя, расположены ли узлы в вашем контексте поиска, которые релевантны данному запросу, выше, чем нерелевантные узлы.
Faithfulness оценивает качество генератора вашего RAG-пайплайна, проверяя, соответствует ли фактический вывод содержимому вашего контекста поиска.
Contextual Recall оценивает качество ретривера вашего RAG-пайплайна, проверяя, насколько контекст поиска соответствует ожидаемому результату.
Answer Relevancy измеряет, насколько релевантен фактический вывод вашего RAG-пайплайна по отношению к данному запросу.
Hallucination — эта метрика определяет, генерирует ли ваш LLM фактически корректную информацию, сравнивая фактический вывод с предоставленным контекстом. Это фундаментальная метрика, так как одной из главных целей RAG-пайплайнов является помощь LLM в генерации точных, актуальных и фактических ответов на запросы пользователей.
Оценки DeepEval были выполнены с использованием следующей конфигурации:
LLM-оценщик, оценивающий метрики DeepEval: Meta-Llama-3-70b-Instruct, работающая на vLLM в режиме guided-JSON.
Следующая таблица показывает результаты оценки из одного из экспериментов VMware, который включал более 40 пар вопросов и ответов.
Следующая диаграмма представляет другой ракурс взгляда на предыдущий результат:
Как показывает таблица, конкретная реализация RAG может показывать лучшие результаты по определённым метрикам, что указывает на их применимость к различным сценариям использования. Кроме того, метрики оценки помогают определить, какие компоненты ваших RAG-пайплайнов нуждаются в корректировке для повышения общей производительности системы.
Заключение
Обновлённый RAG Starter Pack предоставляет ценный инструментарий для тех, кто внедряет системы RAG, включая серию хорошо документированных Python-блокнотов, предназначенных для улучшения LLM за счёт углубления контекстного понимания. В этот пакет включены передовые методы поиска и такие инструменты, как DeepEval, для оценки системы, которые помогают снизить такие проблемы, как "галлюцинации" LLM, и повысить надёжность ответов AI. Репозиторий на GitHub хорошо структурирован и предлагает пользователям понятное пошаговое руководство, которому легко следовать, даже если вы не являетесь специалистом в области данных. Клиенты и партнёры Broadcom, использующие PAIF-N, найдут этот пакет полезным для запуска приложений на базе генеративного AI в инфраструктурах VMware Cloud Foundation. Ожидайте новых статей, в которых VMware рассмотрит ключевые аспекты безопасности и защиты в производственных RAG-пайплайнах.