Создание RAG-пайплайнов для данных в реальном времени с Cloudera и Milvus
В нынешнюю эпоху больших данных компании генерируют огромные объемы данных, которые требуют эффективной обработки, чтобы раскрыть их полный потенциал. Поэтому выполнение крупномасштабной обработки данных, адаптируемость к различным облачным средам и способность принимать решения в реальном времени при сохранении управления данными и безопасности — одни из ключевых возможностей, необходимых в платформе управления данными.
На недавнем Unstructured Data Meetup, организованном Zilliz, Chris Burns, ведущий инженер Gen AI в Cloudera, рассказал о том, как Cloudera — корпоративная облачная платформа данных для управления полным жизненным циклом данных — может использоваться для построения эффективных пайплайнов Retrieval Augmented Generation (RAG). Он обсудил важность RAG для приложений Large Language Model (LLM), возможные трудности и шаги по построению пайплайна RAG с Milvus для генерации более качественных данных.
В этом блоге мы кратко изложим его ключевые тезисы и рассмотрим, как Cloudera можно интегрировать с Milvus для эффективной реализации некоторых ключевых функций пайплайнов RAG. Подробнее смотрите полную запись его выступления на YouTube.
Кратко о Cloudera
Cloudera — это комплексная корпоративная платформа данных, которая поддерживает весь жизненный цикл данных — от приема и хранения до аналитики. Она обеспечивает быстрое развертывание и возможность создавать AI в масштабе с меньшими затратами и рисками в любом дата-центре или на любой облачной платформе. Благодаря таким возможностям, как потоковая обработка в реальном времени, инженерия данных, многоуровневое хранение данных и адаптируемость к мультимодальным данным, Cloudera является отличной платформой для создания гибких приложений Gen AI для предприятий.
Построение пайплайнов RAG с данными в реальном времени
Retrieval Augmented Generation (RAG) — это метод повышения производительности LLM за счет доступа к информации из внешних источников, таких как базы данных. Эта дополнительная информация (lake) позволяет LLM выдавать более контекстно релевантные и точные ответы, основанные на конкретных предметных знаниях, которые иначе отсутствовали бы в обучающих данных LLM. Это эффективный способ заставить LLM решать конкретные сценарии использования без повторного обучения каждый раз. Сложность заключается в построении пайплайна, который может справляться с комплексностью приема, обработки и извлечения данных в реальном времени, сохраняя при этом низкую задержку и стоимость наряду с высокой точностью. Именно здесь в игру вступают надежная инфраструктура Cloudera и такие инструменты, как Milvus, которые поддерживают private AI и извлечение данных в реальном времени.
Прежде чем мы рассмотрим готовые рабочие процессы для пайплайнов RAG, давайте сначала разберемся с некоторыми связанными теоретическими концепциями.
Как подойти к построению пайплайнов RAG?
Построение пайплайна RAG включает несколько шагов — от понимания базовой теории до реализации продвинутых конфигураций. Давайте разберем это:
RAG - 101 - распространенные проблемы и базовая настройка
Крис начинает с обсуждения распространённой проблемы галлюцинаций, от которой страдает большинство LLM. Однако здесь он переформулирует это, называя конфабуляцией и фабрикацией. Конфабуляция означает, что LLM заполняют недостающую информацию правдоподобно звучащими, но неверными сведениями, тогда как фабрикация означает создание некоторого воображаемого текста. Чтобы справиться с этими проблемами, Крис упоминает, что контекстное понимание запроса очень важно, наряду с выполнением многошагового машинного рассуждения и поддержанием трассируемости для отслеживания потока данных или объектов.
Обсудив проблемы, давайте разберём базовую настройку системы RAG. В своей основе конвейер RAG состоит из двух основных компонентов:
Retriever: Этот компонент выполняет поиск по большому набору данных (например, в векторной базе данных), чтобы найти релевантную информацию на основе запроса.
Generator: Этот компонент использует извлечённую информацию для генерации связного и контекстно точного ответа.
Retriever и Generator работают совместно, чтобы система предоставляла точные и релевантные ответы даже при работе со сложными запросами. Однако, как отмечает Крис, успешный ML-проект требует не только хороших данных, но и доменной экспертизы. Данные должны быть релевантными и согласованными, а знание предметной области критически важно для обеспечения релевантности.
RAG - 201 - Статистический анализ и гибридный вывод
Статистический анализ - Чтобы улучшить производительность конвейеров RAG, проведение некоторого статистического анализа может помочь лучше понять качество ответов LLM.
Использование матрицы ошибок в контексте Gen AI может помочь количественно понять показатели успешности извлечения.
Антропоморфизация ответов LLM за счёт отказа давать ответы, когда они неизвестны, вместо выдумывания ложных утверждений может добавить ответам более человеческий оттенок.
- Гибридный вывод - Гибридный вывод — это отличная техника для предприятий, позволяющая балансировать производительность и безопасность в рамках бюджетных ограничений. Она использует комбинацию заранее определённых правил и моделей машинного обучения для обработки пограничных случаев и улучшения качества ответов. Цель здесь — иметь возможность воспроизводить результаты на разных платформах, поэтому фокус должен быть на архитектурах, которые являются гибкими, масштабируемыми и подходящими для реального времени.
RAG - 301 - Соображения по типам данных
Чтобы эффективно хранить данные в векторной базе данных, важно разработать подходящие стратегии партиционирования и разбиения на фрагменты. Партиционирование означает разделение данных на более мелкие, более управляемые единицы, тогда как разбиение на фрагменты означает объединение этих партиций вместе на основе содержимого элементов. Чтобы определить и то и другое, крайне важно знать тип данных.
Типы стратегий разбиения на фрагменты
Типы стратегий разбиения на фрагменты
Данные в форме романов, технической документации или электронных писем классифицируются как плотные данные, то есть имеющие очень мало нулевых значений, что означает, что каждый элемент важен. С другой стороны, такие данные, как данные датчиков, категориальные или графовые данные, называются разреженными данными, поскольку они имеют много нулевых значений.
Пример плотных и разреженных данных
Пример плотных и разреженных данных
Тип данных, используемых в конвейере RAG, может оказывать значительное влияние на его производительность и точность. Разные типы данных, такие как текст, изображения и аудио, требуют разных техник обработки и извлечения. Понимание типа используемых данных и того, как эффективно их обрабатывать, имеет решающее значение для построения успешного конвейера RAG.
RAG - 401 - Конфигурации векторной БД Milvus
Milvus — это векторная база данных с открытым исходным кодом, предназначенная для эффективного хранения, индексирования и поиска высокоразмерных векторных эмбеддингов. Она оптимизирована для поиска по сходству, что делает ее идеальной для рекомендательных систем, приложений для поиска изображений и RAG-пайплайнов. Milvus может поддерживать большие наборы данных и обладает высокой масштабируемостью, что делает ее подходящей для корпоративных приложений. Следующие возможности Milvus особенно полезны для RAG-пайплайнов -
- Гибридный поиск - Milvus поддерживает гибридный поиск (мультивекторный поиск), который предполагает выполнение одновременных запросов по нескольким векторным полям в рамках одного и того же набора данных и интеграцию результатов со стратегиями повторного ранжирования. Это обеспечивает гибкость, позволяя отдельным векторам использовать разные модели эмбеддингов, методы обработки данных или любые другие пользовательские операции.
Гибридный поиск с Milvus
Гибридный поиск с Milvus
- Многоэтапные запросы - Milvus поддерживает продвинутые методы извлечения для сложных запросов, которые позволяют сбалансировать компромисс между различными методами поиска, используемыми в гибридном поиске. Благодаря многоэтапным запросам запрос может обрабатываться итеративно в несколько шагов для улучшения результатов поиска. После первоначального выполнения запроса дальнейшие запросы могут выполняться на основе повторного ранжирования (сортировки результатов в порядке приоритета), расширения запроса (расширения по определенному атрибуту) или фильтрации.
Многоэтапные запросы с Milvus
Многоэтапные запросы с Milvus
Наконец, Milvus поддерживает использование gatekeepers — фильтров, которые могут применяться к процессу извлечения, чтобы гарантировать, что перед передачей генератору извлекается только релевантная информация. Это может быть особенно полезно в RAG-пайплайнах реального времени, где объем данных может быть очень большим, и важно быстро отфильтровывать нерелевантную информацию.
Интеграция Milvus и Cloudera для RAG-пайплайнов
Cloudera предлагает готовые рабочие процессы для RAG, работающие на базе Apache NiFi 2.0 (системы потоков данных, основанной на потоковом программировании). Рабочие процессы поддерживают различные хранилища данных, модели и векторные базы данных, включая Milvus. Давайте кратко рассмотрим некоторые из них.
- S3 to Milvus - Первый шаг в RAG — собрать данные из источника, предварительно обработать их, преобразовать в эмбеддинги и сохранить в векторной базе данных.
Рабочий процесс Data to VectorDB
Рабочий процесс Data to VectorDB
Например, этот рабочий процесс Cloudera берет pdf-документы из S3, векторизует их с использованием модели huggingface и записывает результаты в Milvus. Все этапы обработки данных, такие как разделение и нарезка на фрагменты, можно выполнять просто перетаскивая, размещая и запуская соответствующие коннекторы.
Рабочий процесс S3 to Milvus от Cloudera
Рабочий процесс S3 to Milvus от Cloudera
- RAG Query Milvus - Второй шаг в RAG — принять запрос в качестве входных данных, преобразовать его в эмбеддинги, а затем выполнить поиск по сходству с уже сохраненными эмбеддингами в векторной базе данных. Данные, эмбеддинги которых наиболее близки к эмбеддингу запроса, будут извлечены. Эта информация будет служить дополнительным контекстом для LLM при генерации ответа. Cloudera предлагает готовый рабочий процесс для выполнения запросов к Milvus для RAG.
Рабочий процесс RAG Query Milvus от Cloudera
Рабочий процесс RAG Query Milvus от Cloudera
Заключение
В этом блоге мы рассказали о том, как можно создавать RAG-конвейеры в реальном времени с помощью Cloudera на основе доклада Криса Бернса на Unstructured Data Meetup. По мере того как компании развиваются, становясь с каждым днем все крупнее, нам нужны передовые решения, чтобы эффективно извлекать ценность из огромного объема информации. Благодаря платформам управления жизненным циклом данных, таким как Cloudera, приложения Gen AI для предприятий можно легко разрабатывать с минимальными усилиями. Кроме того, интеграция Milvus с Cloudera обеспечивает надежную основу для создания RAG-конвейеров.
Крис начал с обсуждения распространенных проблем, с которыми сталкиваются LLM, таких как конфабуляция и фабрикация, а также способов их решения. Кроме того, он подчеркнул важность выполнения статистического анализа и гибридного вывода для повышения производительности RAG-конвейеров. Milvus — отличная векторная база данных для сценария использования RAG, поскольку она поддерживает гибридный вывод, многоэтапные запросы и механизмы контроля, чтобы обеспечивать точные, учитывающие контекст ответы при сохранении безопасности.
Читать далее

Migrating from S3 Vectors to Zilliz Cloud: Unlocking the Power of Tiered Storage
Learn how Zilliz Cloud bridges cost and performance with tiered storage and enterprise-grade features, and how to migrate data from AWS S3 Vectors to Zilliz Cloud.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.


