Создание приложения RAG с Milvus и Databricks DBRX
Введение
Большие языковые модели (LLM) продолжают быстро развиваться, и регулярно выпускаются новые модели с улучшенными возможностями по сравнению с предыдущими версиями. В марте 2024 года Databricks, ведущая платформа данных, выпустила свою первую модель с открытым исходным кодом, DBRX, новую передовую модель с тонко детализированной архитектурой mixture-of-experts (MoE). Эта модель на основе transformer только с декодером превзошла несколько бенчмарков, таких как MMLU, программирование (HumanEval) и математика (GSM8K).
Интеграция DBRX в реальные приложения открыла новые возможности для создания мощных GenAI-приложений, таких как системы Retrieval Augmented Generation (RAG). Эти системы объединяют контекстуальное понимание LLM с эффективными механизмами поиска информации, чтобы предоставлять высокоточные и контекстуально релевантные ответы даже на сложные запросы.
В этом руководстве мы рассмотрим, как создать надежное RAG-приложение, объединив возможности Milvus, масштабируемой векторной базы данных, оптимизированной для поиска по сходству, и DBRX. Milvus обеспечивает эффективную обработку и запросы к крупномасштабным эмбеддингам, а DBRX предоставляет передовые возможности обработки естественного языка (NLP). Вместе они создают синергию, идеально подходящую для таких приложений, как управление знаниями, поддержка клиентов и персонализированные рекомендации.
Перейдите к тому, что вам наиболее интересно:
Понимание RAG
Знакомство с Milvus
Знакомство с Databricks DBRX
Знакомство с архитектурой MoE
Создание RAG с Milvus и DBRX: пошаговое руководство
Понимание Retrieval Augmented Generation (RAG)
Retrieval Augmented Generation (RAG) — это гибридный подход, который повышает производительность LLM за счет интеграции внешних систем поиска информации. Традиционные LLM полагаются исключительно на свои предварительно обученные знания и дообучение для генерации ответов, что может ограничивать их эффективность при запросах, требующих актуальной или доменно-специфической информации. RAG устраняет это ограничение, включая механизм поиска, который во время инференса извлекает релевантный контекст или данные из внешнего источника, такого как векторная база данных или репозиторий документов.
Система RAG обычно состоит из двух ключевых компонентов:
Retriever: Этот компонент отвечает за извлечение релевантной информации из большого корпуса или базы данных на основе запроса или входных данных. Преобразуя текстовые данные в эмбеддинги, retriever обеспечивает семантический поиск, используя векторные базы данных, такие как Milvus или Zilliz, в качестве систем хранения базы знаний и эффективно выявляет наиболее релевантные фрагменты информации.
Generator: Используя извлеченный контекст в качестве входных данных, LLM генерирует ответ, который одновременно опирается на внешние данные и согласуется с входным запросом. Это гарантирует, что ответы не только точны, но и основаны на наиболее релевантной и актуальной информации.
Архитектура RAG
Рисунок 1: Архитектура RAG
Объединяя извлечение и генерацию, системы RAG могут создавать ответы, которые являются более точными, учитывают контекст и опираются на факты, что делает их крайне ценными в таких сценариях использования, как:
Запросы к базе знаний: Предоставление подробных и точных ответов из больших неструктурированных наборов данных.
Поддержка клиентов: Предоставление персонализированных и точных ответов на основе конкретных баз знаний.
Создание контента: Помощь в творческом или техническом письме за счет использования контекстуально релевантной информации.
Научные исследования: Обобщение результатов исследований или ответы на доменно-специфические запросы путем извлечения информации из научных статей или баз данных.
Векторная база данных Milvus
Milvus — это векторная база данных с открытым исходным кодом, предназначенная для эффективного управления, хранения и выполнения запросов к крупномасштабным векторным эмбеддингам. Она широко используется в приложениях, которым требуется поиск по сходству и семантическое извлечение, таких как конвейеры Retrieval-Augmented Generation (RAG), рекомендательные системы, чатботы, семантические поисковые системы и т. д.
Почему Milvus идеально подходит для систем RAG?
В системах RAG векторная база данных, такая как Milvus, выступает основой компонента извлечения. Вот как она вписывается в архитектуру:
Эффективное хранение: Milvus может хранить миллиардные объемы многомерных эмбеддингов, сгенерированных из текстовых или мультимодальных данных, обеспечивая компактное и эффективное представление обширных баз знаний.
Быстрое извлечение: Когда запрос вводится в систему, Milvus выполняет семантический поиск для извлечения наиболее релевантных эмбеддингов, которые затем используются для предоставления контекста модели-генератору.
Масштабируемость: Milvus гарантирует, что даже по мере роста размера базы знаний процесс извлечения остается производительным, позволяя системам RAG масштабироваться под корпоративные требования.
Представляем DBRX
DBRX — это новая LLM от Databricks, выпущенная в марте 2024 года как первый вклад компании с открытым исходным кодом в растущую экосистему передовых технологий ИИ. Она доступна в двух версиях: базовая модель (DBRX Base) и дообученная модель (DBRX Instruct). Построенная на трансформерной архитектуре только с декодером, DBRX использует детализированную конструкцию mixture-of-experts (MoE), которая отличает ее от многих существующих моделей. Эта инновационная архитектура позволяет DBRX динамически распределять вычислительные ресурсы между различными задачами или запросами, делая ее высокоэффективной и адаптируемой к различным сценариям использования. Прежде чем мы подробно рассмотрим DBRX, давайте изучим основы архитектуры Mixture of Expert (MoE) .
Архитектура Mixture of Experts (MoE)
Mixture of Experts — это архитектура нейронной сети, которая распределяет вычислительные нагрузки между несколькими специализированными подмоделями, или «экспертами». В отличие от традиционных моделей, которые равномерно активируют все слои и параметры во время инференса, MoE динамически выбирает и активирует только подмножество экспертов, наиболее релевантных для данного ввода. Такая выборочная активация обеспечивает как эффективность, так и специализацию.
Архитектура MoE включает следующие ключевые компоненты:
Экспертные сети: Несколько модулей нейронных сетей, каждый из которых обучен специализироваться на различных типах входных данных или задач. Эти эксперты развивают уникальные возможности для обработки конкретных доменов данных или решения определенных типов задач.
Механизм маршрутизации: Сложный механизм управления динамически выбирает и активирует наиболее подходящих экспертов для заданного ввода. Эта система маршрутизации использует обучаемые параметры, чтобы определить, какие эксперты наиболее релевантны для данной задачи.
Разреженная активация: Активирует только подмножество экспертов для каждого входного запроса, резко снижая вычислительную сложность при сохранении высокой производительности. Этот подход гарантирует, что не все параметры модели задействуются одновременно.
Figure 2: Слой Mixture of Experts (MoE)
Рисунок 2: Слой Mixture of Experts (MoE) | Источник
Архитектура MoE имеет различные преимущества, включая:
Вычислительная эффективность: Активирует только подмножество экспертов для каждого входного запроса, снижая общие вычислительные требования.
Глубокая специализация: Позволяет отдельным экспертным сетям развивать узконаправленные возможности.
Масштабируемая архитектура: Обеспечивает более простое расширение возможностей модели путем добавления большего числа экспертов.
Динамическое распределение ресурсов: Интеллектуально направляет входные данные к наиболее подходящим вычислительным ресурсам.
Ключевые преимущества DBRX
DBRX достигла отличных результатов в ключевых бенчмарках:
MMLU (Massive Multitask Language Understanding): Демонстрирует широкие общие знания и способности к рассуждению.
Задачи программирования (HumanEval): Отлично справляется с генерацией и пониманием кода, что делает ее идеальной для поддержки разработки программного обеспечения.
Математические задачи (GSM8K): Показывает высокие способности в решении сложных математических задач.
Figure 3: Бенчмарки DBRX
Рисунок 3: Бенчмарки DBRX (Источник)
Масштабируемость и эффективность:
DBRX оптимизирована как для крупномасштабных развертываний, так и для сред с ограниченными ресурсами благодаря своей архитектуре MoE, которая обеспечивает высокую скорость с точки зрения количества обрабатываемых токенов в секунду.
Ее масштабируемость обеспечивает пригодность для широкого спектра приложений, от систем корпоративного уровня до небольших, предметно-ориентированных конфигураций.
Figure 4: Инференс DBRX
Рисунок 4: Инференс DBRX (Источник)
Доступность с открытым исходным кодом:
Как модель с открытым исходным кодом, DBRX дает разработчикам и организациям возможность экспериментировать, адаптировать и внедрять инновации без привязки к проприетарным экосистемам.
Прозрачность ее разработки способствует подходу к улучшению и интеграции модели, основанному на участии сообщества.
DBRX в системах RAG
DBRX хорошо подходит для систем Retrieval-Augmented Generation (RAG) благодаря своей способности генерировать контекстуально точные и согласованные ответы на основе извлеченной информации. Ключевые преимущества включают:
Контекстная адаптивность: DBRX бесшовно интегрирует извлеченный контекст в свои генеративные выходные данные, гарантируя, что ответы будут высокорелевантными и специфичными для запроса.
Предметно-ориентированная донастройка: Хотя DBRX исключительно хорошо работает «из коробки», ее также можно донастроить на предметно-специфических данных, чтобы еще больше повысить точность и релевантность для специализированных приложений.
Эффективность в сложных задачах:.Благодаря своей архитектуре MoE, DBRX может обрабатывать сложные, многогранные запросы, эффективно используя своих специализированных экспертов, что делает ее идеальной для требовательных систем RAG.
Приложение RAG с Milvus и DBRX
Этот учебный блокнот демонстрирует, как реализовать конвейер Retrieval-Augmented Generation (RAG), используя Milvus в качестве векторного хранилища, DBRX в качестве языковой модели и LangChain в качестве фреймворка. Учитывая размер модели, эта реализация использует serving endpoint рабочей области Databricks. В качестве альтернативы модель можно загрузить через Ollama или библиотеку Hugging Face Transformers, хотя для этого требуется высокопроизводительный GPU.
Шаг 1: Загрузите данные
Источником данных для этого руководства является официальный блог-релиз Databricks DBRX. Документ загружается и разбивается на управляемые фрагменты с использованием рекурсивного метода разбиения текста.
# Load and split the documents
loader = WebBaseLoader("https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=200)
docs = text_splitter.split_documents(documents)
Шаг 2: Загрузка эмбеддингов
Далее мы используем open-source эмбеддинги от Hugging Face, чтобы закодировать содержимое документа для целей извлечения.
# Load embeddings
embeddings = HuggingFaceBgeEmbeddings(
model_name = "BAAI/bge-small-en-v1.5")
Шаг 3: Создание ретривера Milvus
Milvus настраивается как векторное хранилище, обеспечивая эффективный поиск по сходству. После настройки ретривер тестируется с помощью примерного запроса.
# Create Milvus Retriever
vectorstore = Milvus.from_documents(documents=docs,
embedding=embeddings,
collection_name='my_collection',
connection_args={
"uri": "./milvus_demo.db"}
)
retriever = vectorstore.as_retriever()
# Test retriever
query = "What is DBRX?"
vectorstore.similarity_search(query, k=1)
```
Output:
[Document(metadata={'description': '', 'language': 'en-US', 'pk': 454492864071335939, 'source': 'https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm', 'title': 'Introducing DBRX: A New State-of-the-Art Open LLM | Databricks Blog'}, page_content='and GPT-3.5 Turbo on RAG tasks.Training mixture-of-experts models is hard. We had to overcome a variety of scientific and performance challenges to build a pipeline robust enough
```
Шаг 4: Реализация RAG-конвейера
RAG-конвейер интегрирует модель Databricks DBRX для задач ответов на вопросы. Чтобы использовать модель вне рабочей области Databricks, необходимо указать URL хоста Databricks и токен. Конвейер также включает шаблон промпта для кратких и контекстно-специфичных ответов.
# Load environment variables
DATABRICKS_HOST = userdata.get('DATABRICKS_HOST')
DATABRICKS_TOKEN = userdata.get('DATABRICKS_TOKEN')
# Set RAG pipeline with Databricks DBRX
llm = ChatDatabricks(endpoint="dbrx-instruct",
max_tokens=200)
PROMPT_TEMPLATE = """
Human: You are an AI assistant,that provides answers to questions related to Databricks.
Use the following pieces of information to provide a concise answer to the question enclosed in <question> tags.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
<context>
{context}
</context>
<question>
{question}
</question>
The response should be specific and use only reliable Databricks information.
Assistant:"""
prompt = PromptTemplate(
template=PROMPT_TEMPLATE, input_variables=["context", "question"]
)
def format_docs(docs):
return "nn".join(doc.page_content for doc in docs)
Наконец, RAG-цепочка создается для обработки процесса извлечения и генерации. Цепочка обрабатывает запросы с помощью ретривера, форматирует результаты и генерирует ответы с использованием модели DBRX.
# Define the RAG (Retrieval-Augmented Generation) chain
rag_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
res = rag_chain.invoke(query)
res
```
Output:
'DBRX — это большая языковая модель (LLM) на основе трансформера, работающая только как декодер, которая была обучена с использованием предсказания следующего токена. Она использует детализированную архитектуру смеси экспертов (MoE) с общим числом параметров 132B, из которых 36B параметров активны для любого заданного входа. DBRX была предварительно обучена на 12T токенах текстовых и кодовых данных и использует rotary position encodings (RoPE), gated linear units (GLU) и grouped query attention (GQA). Она также использует токенизатор GPT-4. DBRX известна своей эффективностью: инференс до 2x быстрее, чем у LLaMA2-70B, и по размеру составляет около 40% от Grok-1 как по общему числу параметров, так и по числу активных параметров. Она превосходит GPT-3.5 и конкурентоспособна с Gemini 1.0 Pro, а также особенно эффективна как модель для кода, превосходя специализированные модели, такие как CodeLLaMA-70B, в задачах программирования.'
```
Это руководство можно найти в следующем ноутбуке.
Заключение
Сочетание инновационной архитектуры Mixture of Experts (MoE) DBRX и масштабируемой векторной базы данных Milvus создает надежную основу для построения интеллектуальных AI-систем, учитывающих контекст. Детализированная MoE-архитектура DBRX позволяет ей динамически адаптироваться к разнообразным задачам, обеспечивая вычислительную эффективность и исключительную производительность в различных сценариях использования. Эта возможность особенно важна в системах Retrieval Augmented Generation (RAG), где способность генерировать контекстуально точные и предметно-ориентированные ответы имеет первостепенное значение.
Milvus дополняет эту архитектуру, позволяя RAG-системам легко обрабатывать огромные базы знаний. Это сочетание расширяет возможности приложений в таких областях, как управление знаниями, поддержка клиентов, создание контента и научные исследования, предоставляя релевантные результаты, основанные на наиболее точной и актуальной информации. Для разработчиков и организаций это представляет собой технологический прогресс и возможность создавать более интеллектуальные, отзывчивые и контекстно-ориентированные системы.
Связанные ресурсы
Читать далее

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.



