Image par auteur | À mi-parcours et Canva
Vous souhaitez configurer un RAG local facilement ? Vous avez une collection de documents à utiliser comme base de connaissances pour enrichir un modèle de langage ? Vous voulez créer un chatbot qui comprend exactement ce que vous lui apprenez ?
Voici probablement la méthode la plus simple pour y parvenir.
Bien que ce système ne soit peut-être pas le plus optimisé en termes de vitesse d’inférence, de précision vectorielle ou de stockage, il est extrêmement simple à mettre en place. Vous pouvez apporter des ajustements si nécessaire, mais même sans cela, ce tutoriel vous permettra de rendre votre système RAG local pleinement opérationnel. Et avec Llama 3, vous pouvez espérer obtenir de bons résultats.
Quels outils allons-nous utiliser aujourd’hui ? Trois lamas : Ollama pour la gestion des modèles, Llama 3 comme modèle de langage, et LlamaIndex comme framework RAG. Lama, lama, lama.
Commençons.
Étape 1 : Ollama pour la gestion des modèles
Ollama peut être utilisé pour gérer et interagir avec des modèles de langage. Aujourd’hui, nous l’utiliserons pour la gestion des modèles et, puisque LlamaIndex peut interagir directement avec les modèles gérés par Ollama, également pour l’interaction. Cela simplifiera notre processus global.
Installez Ollama en suivant les instructions spécifiques à votre système sur la page d’accueil de l’application. Dépôt GitHub.
Une fois installé, lancez Ollama depuis le terminal et spécifiez le modèle que vous souhaitez utiliser.
Étape 2 : Llama 3, le modèle linguistique
Une fois Ollama installé et opérationnel, téléchargez l’un des modèles répertoriés sur son dépôt GitHub, ou créez votre propre modèle compatible Ollama à partir d’autres implémentations de modèles de langage existants. Utilisez la commande Ollama run pour télécharger le modèle spécifié s’il n’est pas déjà présent sur votre système. Par exemple, pour télécharger Llama 3 8B, utilisez la ligne suivante :
Assurez-vous simplement d’avoir suffisamment de stockage local pour accueillir le téléchargement de 4,7 Go.
Une fois que l’application terminal Ollama démarre avec le modèle Llama 3 comme backend, vous pouvez la minimiser. Nous utiliserons LlamaIndex à partir de notre propre script pour interagir.
Étape 3 : LlamaIndex, le framework RAG
La dernière pièce du puzzle est LlamaIndex, notre framework RAG. Pour utiliser LlamaIndex, assurez-vous qu’il est installé sur votre système. Consultez la documentation officielle pour les instructions d’installation.
Une fois opérationnel, et avec Ollama exécuté avec le modèle Llama 3 actif, enregistrez le script suivant dans un fichier (adapté de ici) :
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama
# Mes documents locaux
documents = SimpleDirectoryReader("data").load_data()
# Modèle d'intégration
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-base-en-v1.5")
# Modèle de langage
Settings.llm = Ollama(model="llama3", request_timeout=360.0)
# Créer l'index
index = VectorStoreIndex.from_documents(documents)
# Effectuer une requête RAG
query_engine = index.as_query_engine()
response = query_engine.query("What are the 5 stages of RAG?")
print(response)
Ce script effectue les opérations suivantes :
- Les documents sont stockés dans le dossier « data ».
- Le modèle d’intégration utilisé pour créer les intégrations de vos documents RAG est une variante BGE de Hugging Face.
- Le modèle de langage est le Llama 3, accessible via Ollama.
- La requête posée à nos données (« Quelles sont les 5 étapes de RAG ? ») est appropriée car j’ai déposé un certain nombre de documents liés à RAG dans le dossier de données.
Et le résultat de notre requête :
The five key stages within RAG are: Loading, Indexing, Storing, Querying, and Evaluation.
Notez que vous voudrez probablement optimiser le script de plusieurs manières pour faciliter une recherche plus rapide et maintenir certains états (intégrations, par exemple), mais je laisse cela au lecteur intéressé.
Dernières pensées
Eh bien, nous l’avons fait. Nous avons réussi à configurer une application RAG basée sur LlamaIndex utilisant Llama 3, servie localement par Ollama, en seulement trois étapes simples. Vous pouvez faire beaucoup plus avec cela, notamment optimiser, étendre, ajouter une interface utilisateur, etc., mais nous avons pu construire notre modèle de base avec seulement quelques lignes de code et un ensemble minimal d’applications et de bibliothèques.
J’espère que vous avez apprécié le processus.
Matthew Mayo (@mattmayo13) est titulaire d’une maîtrise en informatique et d’un diplôme d’études supérieures en fouille de données. En tant que rédacteur en chef, Matthew vise à rendre accessibles les concepts complexes de la science des données. Ses intérêts professionnels incluent le traitement du langage naturel, les algorithmes d’apprentissage automatique et l’exploration de l’IA émergente. Il est animé par la mission de démocratiser les connaissances dans la communauté de la science des données. Matthew code depuis l’âge de 6 ans.