Préserver l’intégrité des données : déploiement RAG sur site avec LLMware et Milvus
Lors de notre dernière session de l’Unstructured Data Meetup, nous avons eu le privilège d’accueillir Darren Oberst, CEO d’AI Blocks. Il est diplômé de l’UC Berkeley en physique et en philosophie et se concentre actuellement sur la transformation du développement des applications de grands modèles de langage (LLM) pour les services financiers et juridiques. Lors de ce meetup, Darren a expliqué pourquoi la Retrieval Augmented Generation (RAG) devrait être déployée sur site pour les grandes entreprises de services financiers et juridiques.
Dans ce blog, nous allons non seulement récapituler les points clés de Darren, mais aussi fournir un exemple pratique de création d’une RAG sur un cloud privé à l’aide de LLMware et de la base de données vectorielle Milvus. Cet exemple est conçu pour vous inspirer et vous motiver à appliquer ces connaissances à vos projets. Nous vous recommandons également de regarder la session complète sur YouTube.
Principaux défis du déploiement de la RAG
Les grands modèles de langage peuvent être incohérents. Parfois, ils offrent des réponses précises, mais peuvent aussi produire des informations non pertinentes. Cette incohérence survient parce que les LLM comprennent les relations statistiques entre les mots sans réellement en saisir le sens. De plus, les LLM sont pré-entraînés sur des données obsolètes et accessibles au public, ce qui limite leur capacité à fournir des réponses précises propres à vos données privées ou aux informations les plus récentes.
La Retrieval Augmented Generation (RAG) est une technique populaire pour remédier à cette limitation en améliorant les réponses du LLM avec des sources de connaissances externes stockées dans une base de données vectorielle comme Milvus, améliorant ainsi la qualité du contenu. Bien que la RAG soit une technique exceptionnelle, son déploiement présente des défis.
Lors de son intervention, Darren ****a partagé les défis courants auxquels de nombreuses entreprises sont confrontées.
Préoccupations relatives à la confidentialité et à la sécurité des données : De nombreuses entreprises, en particulier celles des secteurs financier et juridique, hésitent à utiliser des services de cloud public en raison de préoccupations liées à la confidentialité et à la sécurité. De nombreuses solutions existantes se concentrent également sur les clouds publics plutôt que sur le déploiement sur site, ce qui pose des défis aux entreprises qui doivent garantir la sécurité des données et la conformité.
Coûts élevés : L’infrastructure de cloud public utilisant fréquemment des modèles à grande échelle peut faire grimper les factures. Payer une facture aussi lourde tout en manquant de contrôle total et de propriété sur l’infrastructure, les données et les applications aboutit à une situation perdant-perdant.
Négliger les stratégies de récupération : Un aspect crucial souvent négligé est l’importance des stratégies de récupération dans le déploiement de la RAG. Bien que les équipes IA aient tendance à se concentrer sur les capacités de l’IA générative, la qualité des documents récupérés est tout aussi essentielle.
Déploiement de la RAG sur site
Les défis évoqués ci-dessus peuvent être résolus efficacement grâce à une solution commune : déployer la RAG sur un cloud privé. Cette approche répond aux problèmes de la manière suivante :
- Meilleure sécurité des données : Les documents métier sensibles, les informations réglementaires et autres données propriétaires doivent rester dans les limites sécurisées d’un cloud privé afin de respecter les normes de conformité et de sécurité. Si tout se déroule de manière privée, il n’y aura pas de violations.
- Coût réduit : Le déploiement de modèles d’IA sur une infrastructure de cloud privé peut offrir une solution plus rentable que les services de cloud public, en particulier lorsqu’une utilisation fréquente est requise. Le coût diminue encore lorsque nous utilisons des modèles plus petits, car ils obtiennent des résultats pratiques plus efficacement que les modèles plus grands et plus gourmands en ressources. Grâce à leur innovation rapide et à leurs capacités de personnalisation, les LLM et technologies open source sont une excellente option pour votre RAG.
- Améliorer la génération avec la recherche dans un cloud privé : Un meilleur moteur de recherche peut compléter un modèle plus petit aux compétences génératives limitées. Ce n’est qu’en créant un meilleur système de recherche que la précision et l’efficacité des applications d’IA, telles que l’analyse de documents, le découpage de texte et l’interrogation sémantique, peuvent être améliorées de manière significative.
En résumé, Darren préconise l’adoption de solutions de cloud privé pour l’IA, en particulier les LLM, afin de répondre aux préoccupations liées à la confidentialité des données, aux coûts et aux résultats. Ensuite, nous aborderons les modèles Dragon conçus et optimisés pour le RAG dans la bibliothèque Huggingface Transformers.
Modèles dRAGon (Delivering RAG On)🐉
Dragon est une série de modèles lancée par AI Blocks et conçue spécifiquement pour la génération augmentée par récupération (RAG). Il s’agit d’une série de sept modèles open source affinés sur des ensembles de données propriétaires tels que des contrats, des documents réglementaires et des informations financières complexes. Il existe trois catégories de modèles :
Classes de modèles et leur description
Classes de modèles et leur description
- Modèles Bling : Modèles compacts, affinés par instructions, optimisés pour le prototypage rapide et capables de fonctionner sur CPU, ce qui les rend idéaux pour les phases initiales de test et de développement. Ils sollicitent moins la mémoire, car ils ne regroupent que 1 à 3 milliards de paramètres.
- Modèles Dragon RAG : Versions affinées de modèles de fondation de premier plan à 6 et 7 milliards de paramètres comme Llama, Mistral, Red-pajama, Falcon et Deci. Adaptés à des tâches telles que la réponse à des questions fondée sur des faits et l’analyse de documents réglementaires.
- Modèles ****BERT**** Industry : Spécialisés pour des applications propres à certains secteurs, les modèles Industry BERT sont des sentence transformers affinés, adaptés à des tâches telles que l’analyse de contrats.
En outre, ces modèles ont été rigoureusement évalués à l’aide de benchmarks de structure RAG de sens commun. Contrairement aux modèles open source qui s’appuient sur des métriques scientifiques comme MMLU et ARC, les modèles Dragon sont testés pour leur précision en conditions réelles et des cas d’utilisation pratiques. Cette collection de modèles est disponible sur HuggingFace comme illustré ci-dessous :
Modèles LLMware hébergés sur HuggingFace
Modèles LLMware hébergés sur HuggingFace
Les principaux avantages de l’utilisation de ces modèles sont les suivants :
Précision améliorée : Affinés sur de vastes ensembles de données, ces modèles offrent une grande précision dans l’analyse de documents, le découpage de texte et l’interrogation sémantique.
Rentables : Optimisés pour une utilisation sur une infrastructure de cloud privé, ces modèles offrent une solution économique par rapport aux modèles plus volumineux et gourmands en ressources sur les clouds publics.
Open source et personnalisables : Disponibles sur Hugging Face, ces modèles open source permettent une innovation rapide et une personnalisation pour répondre aux besoins spécifiques des entreprises.
Performances de niveau production : Évalués pour leur fiabilité, ces modèles fournissent des performances constantes et fiables dans divers workflows.
Intégration fluide : Grâce à un support complet et à des scripts de génération faciles à utiliser, l’intégration de ces modèles dans les workflows existants est simple.
Ces modèles ne compromettent ni le coût, ni la précision, ni la personnalisabilité ; leur intégration dans LLMware les rend faciles d’accès.
Un aperçu de LLMware
LLMware est une bibliothèque conçue pour les applications basées sur les LLM de niveau entreprise. Elle utilise de petits modèles spécialisés qui peuvent être déployés en privé, intégrés de manière sécurisée aux sources de connaissances de l’entreprise et adaptés de façon rentable à tout processus métier. Cette boîte à outils est comparable à LangChain ****ou LlamaIndex, mais elle est adaptée à une forte évolutivité et à une gestion robuste des documents dans les environnements d’entreprise.
Composants de LLMware :
Pipeline RAG : Fournit des composants intégrés pour l’ensemble du cycle de vie de la connexion des sources de connaissances aux modèles d’IA générative.
Modèles spécialisés : Comprend plus de 50 petits modèles affinés pour des tâches d’entreprise telles que la réponse aux questions fondée sur des faits, la classification, la synthèse et l’extraction. Ces modèles incluent également ceux abordés ci-dessus ; nous en utiliserons un dans notre implémentation dans la section suivante.
Fonctionnalités de LLMware :
Ingestion massive de documents :
Évolutivité : Conçu pour gérer l’ingestion de centaines de milliers de documents, LLMware prend en charge le traitement parallèle et la distribution entre plusieurs workers.
Analyse des documents : Met en œuvre des spécifications complètes pour l’analyse des PDF, documents Word, PowerPoint et fichiers Excel à l’aide d’analyseurs personnalisés basés sur C.
Modèle de données de bout en bout :
Magasins de données persistants : S’intègre à MongoDB pour le stockage persistant des données, permettant un découpage et une indexation efficaces des collections de texte.
Intégration en entreprise : Conçu pour s’intégrer de manière transparente aux workflows de données d’entreprise, garantissant une gestion des données sécurisée et évolutive.
Framework pour les applications basées sur les LLM :
Compatibilité open source : Cette fonctionnalité privilégie la prise en charge d’un large éventail de modèles open source et Hugging Face, ce qui facilite la création et le déploiement d’applications LLM.
Environnement riche en fonctionnalités : Développé en continu pour inclure de nouvelles fonctionnalités et capacités prenant en charge divers cas d’utilisation dans les environnements d’entreprise.
Facilité d’utilisation :
Exemples et documentation : Fournit des exemples et une documentation complets pour aider les utilisateurs à démarrer rapidement et efficacement.
Orientation entreprise : Spécifiquement conçu pour répondre aux besoins uniques des déploiements LLM de niveau entreprise, de la gestion des documents au traitement évolutif.
Génération augmentée par récupération dans un cloud privé avec Milvus et LLMware
Cette section expliquera et mettra en œuvre une solution RAG sur site. Examinons l’architecture de RAG utilisant LLMware et la base de données vectorielle Milvus.
L’architecture
Ce schéma d’architecture illustre le workflow de RAG sur site à l’aide de LLMware et Milvus.
Schéma d’architecture de RAG sur site utilisant LLMware et Milvus
Schéma d’architecture de RAG sur site utilisant LLMware et Milvus
Voici une explication de chaque composant :
Documents : Les données d’entrée se composent de divers documents à traiter. Dans cet exemple, les ~80 documents d’exemple sont extraits du bucket S3.
Pipeline d’ingestion : Il s’agit de l’étape initiale au cours de laquelle les documents sont ingérés dans le système. Ce pipeline prépare les documents pour un traitement ultérieur en extrayant les informations pertinentes et, éventuellement, en effectuant des tâches de prétraitement comme le nettoyage ou le formatage des données.
Générer les embeddings : Après l’ingestion, les documents sont transmis à un modèle d’embedding. Dans ce cas, un modèle Industry BERT convertit les documents en représentations numériques (embeddings vectoriels) qui capturent la signification sémantique du texte.
Base de données vectorielle** :** Les embeddings générés par le modèle Industry BERT sont stockés dans une base de données vectorielle, Milvus, avec les documents. Cette base de données vectorielle spécialisée est conçue pour gérer et rechercher efficacement dans des données vectorielles à grande échelle.
Requête : Un utilisateur soumet une requête au système.
Embeddings de requête : Cette requête est également convertie en embedding afin de la comparer aux embeddings des documents stockés dans Milvus.
Recherche de documents : La similarité entre les embeddings de la requête et des documents est calculée, les documents étant mieux classés en fonction d’une plus grande similarité.
Documents récupérés : Les documents pertinents présentant une forte similarité sont récupérés. Le nombre de documents récupérés et le seuil de similarité peuvent être personnalisés.
LLM : Les documents récupérés et la requête seront envoyés au LLM ; dans notre cas, le LLM est Bling 7B.
Résultat : La réponse du LLM est fournie à l’utilisateur.
La section suivante montrera l’implémentation de l’application RAG dans le cloud privé.
Implémentation
Dans cette implémentation, nous allons créer l’application RAG en ingérant environ 80 documents juridiques dans la base de données vectorielle Milvus et en posant des questions à l’aide d’un LLM. Nous supposons que l’utilisateur a déjà installé Milvus pour ce blog et peut démarrer le service.
Imports
Nous allons d’abord installer les bibliothèques requises et les importer dans notre environnement. Nous aurons besoin de llmware et de PyMilvus. Voici comment l’installer :
pip install llmware
Pip install pymilvus>=2.4.2
Après cette étape, importons les modules requis depuis llmware.
import os
from llmware.library import Library
from llmware.retrieval import Query
from llmware.setup import Setup
from llmware.status import Status
from llmware.prompts import Prompt
from llmware.configs import LLMWareConfig, MilvusConfig
Après avoir importé les données, nous allons configurer les paramètres.
Configuration
L’étape de configuration est assez simple. À cette étape, nous stockons les noms du modèle d’embedding, de la base de données vectorielle et du LLM.
embedding_model = "industry-bert-contracts"
vector_db = "milvus"
llm = "llmware/bling-1b-0.1"
La configuration inclut le modèle d’embedding industry-bert-contracts, Milvus pour la base de données vectorielle, et le modèle de langage llmware/bling-1b-0.1 pour un traitement et une analyse de documents optimisés par l’IA.
Configuration de Milvus
Grâce à son intégration, il est très simple de configurer Milvus à l’aide de llmware. Après l’installation de PyMilvus, nous devons définir vector_db sur Milvus tandis que active_db est défini sur sqlite, comme indiqué ci-dessous :
LLMWareConfig().set_active_db("sqlite")
MilvusConfig().set_config("lite", True) # Aucune dépendance
LLMWareConfig().set_vector_db("milvus")
llmware prend en charge Milvus-lite, qui est autonome et ne nécessite aucune autre dépendance.
Création d’une bibliothèque
Dans llmware, une bibliothèque est la structure principale d’organisation des informations non structurées. Les utilisateurs peuvent créer une grande bibliothèque avec du contenu diversifié ou plusieurs bibliothèques, chacune dédiée à un sujet, un projet, un cas, une transaction, un compte, un utilisateur ou un département spécifique.
Pour créer une bibliothèque, nous pouvons simplement appeler la fonction create_new_library depuis la classe Library, qui nécessite un nom arbitraire comme argument. Jetons un œil.
Library_name = "contracts-Rag"
library = Library().create_new_library(library_name)
Ingestion de documents
La classe Setup dans LLMware télécharge des fichiers d’exemple depuis un bucket AWS S3, notamment divers documents d’exemple comme des contrats, des factures, des rapports financiers, etc. Vous pouvez toujours obtenir la dernière version de ces exemples en utilisant load_sample_files. Dans cet exemple, nous allons téléverser les “Agreements”.
sample_files_path = Setup().load_sample_files(over_write=False)
contracts_path = os.path.join(sample_files_path, "Agreements")
Llmware dispose d’une fonction utile nommée add_files, un outil d’ingestion universel. Pointez-la vers un dossier local contenant des types de fichiers mixtes, et elle acheminera automatiquement les fichiers selon leur extension vers l’analyseur approprié. Les fichiers sont ensuite analysés, le texte découpé en segments, puis indexés dans la base de données de collection de texte.
library.add_files(input_folder_path=contracts_path)
Les documents sont chargés. Créons leurs embeddings.
Créer des embeddings
Tout dans cette implémentation s’exécute de manière privée. Par conséquent, le modèle d’embedding est téléchargé sur site. Comme mentionné, le modèle d’embedding est industry-bert-contracts, tandis que Milvus est la base de données vectorielle.
library.install_new_embedding(embedding_model_name=embedding_model, vector_db=vector_db)
Après avoir installé les embeddings dans la bibliothèque, vous pouvez vérifier le statut des embeddings afin de contrôler les embeddings mis à jour et de confirmer que le modèle a été correctement capturé.
Status().get_embedding_status(library_name, embedding_model)
Voyons comment invoquer un appel LLM dans les sections suivantes.
Charger le grand modèle de langage
Nous utiliserons la fonction load_model pour charger le modèle Bling. Ceux-ci sont petits et adaptés aux tests rapides.
prompter = Prompt().load_model(llm)
Rechercher des documents
Dans Llmware, la classe Query est utilisée pour la recherche et la récupération, nécessitant une Library comme paramètre obligatoire. Cette approche permet aux récupérations de tirer parti de l’abstraction Library, en prenant en charge plusieurs bases de connaissances distinctes alignées sur différents cas d’utilisation, utilisateurs, comptes et autorisations.
Cette classe permet de nombreuses fonctions de recherche, comme la recherche textuelle et la recherche sémantique. Nous utiliserons la recherche sémantique pour notre exemple.
query = "what is the executive's base annual salary"
results = Query(library).semantic_query(query, result_count=50, embedding_distance_threshold=1.0)
Assembler toutes les pièces
Cette section parcourra tous les contrats, filtrera les résultats pertinents et générera les réponses à l’aide du LLM. Voici l’extrait de code :
for i, contract in enumerate(os.listdir(contracts_path)):
qr = []
for j, entries in enumerate(results):
if entries["file_source"] == contract:
print("Top Retrieval: ", j, entries["distance"], entries["text"])
qr.append(entries)
source = prompter.add_source_query_results(query_results=qr)
response = prompter.prompt_with_source(query, prompt_name="default_with_context", temperature=0.3)
for resp in response:
if "llm_response" in resp:
print("\nupdate: llm answer - ", resp["llm_response"])
# start fresh for next document
prompter.clear_source_materials()
Voici le guide correspondant.
Parcourir les contrats : Pour chaque fichier de contrat dans le répertoire, il initialise une liste pour stocker les résultats de requête pertinents.
Filtrer les résultats pertinents : Il filtre les résultats qui correspondent au contrat actuel et affiche les principales récupérations.
Générer des réponses : Les résultats filtrés génèrent une réponse avec un modèle de langage et affichent les réponses générées.
Réinitialiser pour le contrat suivant : Il efface les matériaux sources pour préparer le contrat suivant.
Le résultat de la requête est fourni comme suit :
>>> Contract Name: Rhea EXECUTIVE EMPLOYMENT AGREEMENT.pdf
Top Retrieval: 1 0.6237360223214722
The Board (or its compensation committee) will annually review the Executive's base salary following the Employer's standard compensation and performance review policies for senior executives. While the salary may be increased, it cannot be decreased. The specific amount of any yearly increase will be determined based on these policies. For the purposes of this Agreement, "Base Salary" refers to the Executive's base salary as periodically established in accordance with Section 2.2.
Notez que seule la première récupération est affichée ici.
Ci-dessus, nous avons réussi à créer une application RAG pour des documents juridiques à l’aide de Milvus et de LLMware. Le meilleur, c’est qu’aucune donnée n’est envoyée à des fournisseurs externes ; tout, y compris la base de données vectorielle, le modèle d’embedding et le LLM, est sur site
Conclusion
Avec l’adoption croissante de l’IA, interagir avec les données est devenu plus facile que jamais. Cependant, de nombreuses entreprises hésitent encore à envoyer leurs données vers le cloud, et à juste titre. LLMware fournit une solution pour construire des systèmes d’IA sur site plutôt que sur le cloud public. Cette solution garantit la confidentialité des données, réduit les coûts et offre davantage de contrôle.
En utilisant LLMware et la base de données vectorielle Milvus, nous pouvons combiner la puissance de la recherche par similarité vectorielle et des LLM pour poser des questions sur nos documents privés. Milvus est une base de données vectorielle open source robuste qui stocke, traite et recherche des données vectorielles à l’échelle du milliard. Une fois que Milvus récupère les top-K résultats les plus pertinents pour le LLM, les LLM disposeront du contexte nécessaire pour répondre à vos requêtes.
Continuer à lire

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Why AI Databases Don't Need SQL
Whether you like it or not, here's the truth: SQL is destined for decline in the era of AI.



