Créer une application RAG avec Milvus et Databricks DBRX
Introduction
Les grands modèles de langage (LLMs) continuent de se développer rapidement, et de nouveaux modèles sont publiés régulièrement avec des capacités améliorées par rapport aux versions précédentes. En mars 2024, Databricks, une plateforme de données de premier plan, a publié son premier modèle open source, DBRX, un nouveau modèle de pointe doté d’une architecture mixture-of-experts (MoE) à granularité fine. Ce modèle décodeur uniquement basé sur les transformers a surpassé plusieurs benchmarks comme MMLU, la programmation (HumanEval) et les mathématiques (GSM8K).
L’intégration de DBRX dans des applications réelles a ouvert de nouvelles perspectives pour créer de puissantes applications GenAI, telles que les systèmes de génération augmentée par récupération (RAG). Ces systèmes combinent la compréhension contextuelle des LLMs avec des mécanismes efficaces de récupération d’informations afin de fournir des réponses très précises et contextuellement pertinentes, même pour des requêtes complexes.
Dans ce tutoriel, nous explorerons comment créer une application RAG robuste en combinant les capacités de Milvus, une base de données vectorielle évolutive optimisée pour la recherche par similarité, et de DBRX. Milvus permet une gestion et une interrogation efficaces d’embeddings à grande échelle, tandis que DBRX fournit des capacités de pointe en traitement automatique du langage naturel (NLP). Ensemble, ils créent une synergie idéale pour des applications telles que la gestion des connaissances, le support client et les recommandations personnalisées.
Accédez directement à ce qui vous intéresse le plus :
Comprendre RAG
Présentation de Milvus
Présentation de Databricks DBRX
Présentation de l’architecture MoE
Créer RAG avec Milvus et DBRX : un guide étape par étape
Comprendre la génération augmentée par récupération (RAG)
La génération augmentée par récupération (RAG) est une approche hybride qui améliore les performances des LLMs en intégrant des systèmes externes de récupération d’informations. Les LLMs traditionnels s’appuient uniquement sur leurs connaissances pré-entraînées et leur fine-tuning pour générer des réponses, ce qui peut limiter leur efficacité face à des requêtes nécessitant des informations à jour ou propres à un domaine. RAG répond à cette limite en incorporant un mécanisme de récupération qui extrait le contexte ou les données pertinents d’une source externe, telle qu’une base de données vectorielle ou un référentiel de documents, pendant l’inférence.
Un système RAG se compose généralement de deux composants clés :
Retriever : Ce composant est chargé d’extraire les informations pertinentes d’un vaste corpus ou d’une base de données en fonction de la requête ou de l’entrée. En convertissant les données textuelles en embeddings, le retriever permet la recherche sémantique, en s’appuyant sur des bases de données vectorielles, telles que Milvus ou Zilliz, comme systèmes de stockage de base de connaissances, et identifie efficacement les éléments d’information les plus pertinents.
Generator : En utilisant le contexte récupéré comme entrée, le LLM génère une réponse à la fois éclairée par les données externes et cohérente avec la requête d’entrée. Cela garantit que les réponses sont non seulement exactes, mais aussi ancrées dans les informations les plus pertinentes et les plus à jour.
Architecture RAG
Figure 1 : Architecture RAG
En combinant récupération et génération, les systèmes RAG peuvent produire des réponses plus précises, contextuellement conscientes et factuellement fondées, ce qui les rend très précieux dans des cas d’utilisation tels que :
Interrogation de bases de connaissances : Fournir des réponses détaillées et précises à partir de grands ensembles de données non structurées.
Support client : Fournir des réponses personnalisées et précises en se référant à des bases de connaissances spécifiques.
Création de contenu : Aider à la rédaction créative ou technique en recherchant des informations contextuellement pertinentes.
Recherche scientifique : Résumer des résultats de recherche ou répondre à des requêtes propres à un domaine en s’appuyant sur des articles universitaires ou des bases de données.
Base de données vectorielle Milvus
Milvus est une base de données vectorielle open-source conçue pour gérer, stocker et interroger efficacement des embeddings vectoriels à grande échelle. Elle est largement utilisée dans les applications qui nécessitent une recherche de similarité et une récupération sémantique, telles que les pipelines de génération augmentée par récupération (RAG), les systèmes de recommandation, les chatbots, les moteurs de recherche sémantique, etc.
Pourquoi Milvus est-il idéal pour les systèmes RAG ?
Dans les systèmes RAG, une base de données vectorielle comme Milvus agit comme l’épine dorsale du composant de récupération. Voici comment elle s’intègre dans l’architecture :
Stockage efficace : Milvus peut stocker des embeddings de haute dimension à l’échelle du milliard, générés à partir de données textuelles ou multimodales, permettant une représentation compacte et efficace de vastes bases de connaissances.
Récupération rapide : Lorsqu’une requête est saisie dans le système, Milvus effectue une recherche sémantique pour récupérer les embeddings les plus pertinents, qui sont ensuite utilisés pour fournir du contexte au modèle générateur.
Évolutivité : Milvus garantit que même à mesure que la taille de la base de connaissances augmente, le processus de récupération reste performant, permettant aux systèmes RAG de s’adapter aux exigences des entreprises.
Présentation de DBRX
DBRX est le nouveau LLM de Databricks publié en mars 2024, en tant que première contribution open-source de l’entreprise à l’écosystème croissant des technologies d’IA avancées. Il se décline en deux versions : le modèle de base (DBRX Base) et le modèle affiné (DBRX Instruct). Construit sur une architecture basée sur les transformeurs, à décodeur seul, DBRX utilise une conception à mélange d’experts (MoE) à granularité fine qui le distingue de nombreux modèles existants. Cette architecture innovante permet à DBRX d’allouer dynamiquement des ressources de calcul à différentes tâches ou requêtes, ce qui le rend très efficace et adaptable à divers cas d’utilisation. Avant d’examiner DBRX en profondeur, apprenons quelques notions de base de l’architecture Mixture of Expert (MoE) .
Architecture Mixture of Experts (MoE)
Le mélange d’experts est une architecture de réseau de neurones qui répartit les charges de calcul entre plusieurs sous-modèles spécialisés, ou « experts ». Contrairement aux modèles traditionnels qui activent toutes les couches et tous les paramètres de manière uniforme lors de l’inférence, MoE sélectionne et active dynamiquement uniquement un sous-ensemble d’experts les plus pertinents pour une entrée donnée. Cette activation sélective introduit à la fois efficacité et spécialisation.
L’architecture MoE comprend les composants clés ci-dessous :
Réseaux d’experts : Plusieurs modules de réseaux de neurones, chacun entraîné à se spécialiser dans différents types d’entrées ou de tâches. Ces experts développent des capacités uniques pour traiter des domaines de données spécifiques ou résoudre des types de problèmes particuliers.
Mécanisme de routage : Un mécanisme de sélection sophistiqué choisit et active dynamiquement les experts les plus appropriés pour une entrée donnée. Ce système de routage utilise des paramètres apprenables pour déterminer quels experts sont les plus pertinents pour une tâche donnée.
Activation parcimonieuse : N’active qu’un sous-ensemble d’experts pour chaque entrée, réduisant considérablement la complexité computationnelle tout en maintenant des performances élevées. Cette approche garantit que tous les paramètres du modèle ne sont pas sollicités simultanément.
Figure 2 : couche Mixture of Experts (MoE)
Figure 2 : couche Mixture of Experts (MoE) | Source
L’architecture MoE présente divers avantages, notamment :
Efficacité computationnelle : N’active qu’un sous-ensemble d’experts pour chaque entrée, réduisant les besoins computationnels globaux.
Spécialisation approfondie : Permet aux réseaux d’experts individuels de développer des capacités très ciblées.
Architecture évolutive : Facilite l’extension des capacités du modèle en ajoutant davantage d’experts.
Allocation dynamique des ressources : Oriente intelligemment les entrées vers les ressources computationnelles les plus appropriées.
Principaux avantages de DBRX
DBRX a obtenu d’excellents résultats dans des benchmarks clés :
MMLU (Massive Multitask Language Understanding) : Démontre ses vastes connaissances générales et ses capacités de raisonnement.
Tâches de programmation (HumanEval) : Excelle dans la génération et la compréhension de code, ce qui le rend idéal pour le support au développement logiciel.
Tâches mathématiques (GSM8K) : Montre de solides aptitudes à résoudre des problèmes mathématiques complexes.
Figure 3 : benchmarks DBRX
Figure 3 : benchmarks DBRX (Source)
Évolutivité et efficacité :
DBRX est optimisé à la fois pour les déploiements à grande échelle et les environnements à ressources limitées, grâce à sa conception MoE qui garantit une vitesse élevée en termes de tokens traités par seconde.
Son évolutivité garantit son adéquation à un large éventail d’applications, des systèmes de niveau entreprise aux configurations plus petites et spécifiques à un domaine.
Figure 4 : inférence DBRX
Figure 4 : inférence DBRX (Source)
Accessibilité open-source :
En tant que modèle open-source, DBRX permet aux développeurs et aux organisations d’expérimenter, d’adapter et d’innover sans être liés à des écosystèmes propriétaires.
La transparence de son développement encourage une approche communautaire de l’amélioration et de l’intégration du modèle.
DBRX dans les systèmes RAG
DBRX est bien adapté aux systèmes de génération augmentée par récupération (Retrieval-Augmented Generation, RAG) grâce à sa capacité à générer des réponses contextuellement exactes et cohérentes à partir d’informations récupérées. Les principaux avantages incluent :
Adaptabilité contextuelle : DBRX intègre de manière fluide le contexte récupéré dans ses sorties génératives, garantissant que les réponses sont très pertinentes et spécifiques à la requête.
Affinage spécifique au domaine : Bien que DBRX offre des performances exceptionnelles prêt à l’emploi, il peut également être affiné avec des données spécifiques au domaine afin d’améliorer encore sa précision et sa pertinence pour des applications spécialisées.
Efficacité dans les tâches complexes :.Avec son architecture MoE, DBRX peut traiter des requêtes complexes et multidimensionnelles en exploitant efficacement ses experts spécialisés, ce qui le rend idéal pour les systèmes RAG exigeants.
Application RAG avec Milvus et DBRX
Ce tutoriel de notebook montre comment implémenter un pipeline de génération augmentée par récupération (RAG) à l’aide de Milvus comme magasin vectoriel, de DBRX comme modèle de langage et de LangChain comme framework. Compte tenu de la taille du modèle, cette implémentation s’appuie sur un endpoint de service d’un espace de travail Databricks. Le modèle peut également être téléchargé via Ollama ou la bibliothèque Hugging Face Transformers, bien que cela nécessite un GPU haute performance.
Étape 1 : Charger les données
La source de données de ce tutoriel est le blog officiel de publication de Databricks DBRX. Le document est chargé et divisé en fragments gérables à l’aide d’une méthode récursive de découpage du texte.
# 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)
Étape 2 : Charger les embeddings
Ensuite, nous utilisons des embeddings open source de Hugging Face pour encoder le contenu du document à des fins de récupération.
# Load embeddings
embeddings = HuggingFaceBgeEmbeddings(
model_name = "BAAI/bge-small-en-v1.5")
Étape 3 : Créer le récupérateur Milvus
Milvus est configuré comme magasin vectoriel, permettant des recherches de similarité efficaces. Une fois configuré, le récupérateur est testé avec une requête d’exemple.
# 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
```
Étape 4 : Implémenter le pipeline RAG
Le pipeline RAG intègre le modèle Databricks DBRX pour les tâches de questions-réponses. Pour utiliser le modèle en dehors d’un espace de travail Databricks, vous devez définir l’URL de l’hôte Databricks et le jeton. Le pipeline inclut également un modèle de prompt pour des réponses concises et spécifiques au contexte.
# 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)
Enfin, la chaîne RAG est construite pour gérer le processus de récupération et de génération. La chaîne traite les requêtes à l’aide du récupérateur, formate les résultats et génère des réponses à l’aide du modèle 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 est un grand modèle de langage (LLM) à décodeur uniquement basé sur les transformers, qui a été entraîné à l’aide de la prédiction du prochain token. Il utilise une architecture de mélange d’experts (MoE) à granularité fine avec un total de 132 Md de paramètres, dont 36 Md de paramètres sont actifs pour toute entrée donnée. DBRX a été préentraîné sur 12 T de tokens de données textuelles et de code, et il utilise des encodages de position rotatifs (RoPE), des unités linéaires à portes (GLU) et l’attention par requêtes groupées (GQA). Il utilise également le tokenizer GPT-4. DBRX est connu pour son efficacité, l’inférence étant jusqu’à 2 fois plus rapide que LLaMA2-70B, et il représente environ 40 % de la taille de Grok-1 en termes de nombre total et actif de paramètres. Il surpasse GPT-3.5 et rivalise avec Gemini 1.0 Pro, et il est particulièrement performant en tant que modèle de code, surpassant des modèles spécialisés comme CodeLLaMA-70B sur les tâches de programmation.'
```
Ce tutoriel se trouve dans le notebook suivant.
Conclusion
La combinaison de l’architecture innovante de mélange d’experts (MoE) de DBRX et de la base de données vectorielle scalable de Milvus établit une base robuste pour construire des systèmes d’IA intelligents et sensibles au contexte. La conception MoE à granularité fine de DBRX lui permet de s’adapter dynamiquement à diverses tâches, garantissant une efficacité computationnelle et des performances exceptionnelles dans une variété de cas d’utilisation. Cette capacité est particulièrement essentielle dans les systèmes de Retrieval Augmented Generation (RAG), où la capacité à générer des réponses contextuellement exactes et spécifiques à un domaine est primordiale.
Milvus complète cette architecture en permettant aux systèmes RAG de gérer facilement d’immenses bases de connaissances. Cette combinaison renforce les applications dans des domaines tels que la gestion des connaissances, le support client, la création de contenu et la recherche scientifique, en fournissant des résultats pertinents fondés sur les informations les plus exactes et les plus à jour. Pour les développeurs et les organisations, cela représente une avancée technologique et une opportunité de construire des systèmes plus intelligents, réactifs et sensibles au contexte.
Ressources connexes
Que sont les bases de données vectorielles et comment fonctionnent-elles ?
Modèles d’IA les plus performants pour vos applications GenAI | Zilliz
Créer des applications d’IA avec Milvus : tutoriels et notebooks
Livrer des applications RAG 10 fois plus rapidement avec Zilliz et Vectorize
Concevoir un RAG multi-tenant avec Milvus : bonnes pratiques
Continuer à lire

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.



