Comment installer un RAG pour Ollama 3.2 afin de permettre la lecture des documents qui sont dans ce RAG et quel code faut¡-il faire ?
Il n'est pas possible d'installer un RAG directement dans Ollama. Ollama est un moteur qui exécute les modèles de langage (LLM). Le système RAG est une architecture qui se construit autour d'Ollama.
Pour créer un RAG avec Ollama, vous devez développer un script ou une application qui coordonne plusieurs composants :
1. Une base de données vectorielle (Vector Database) pour stocker les documents.
2. Un moteur d'embeddings pour convertir le texte en vecteurs numériques.
3. Ollama pour exécuter le LLM qui générera la réponse finale.
Installation et configuration
Voici les étapes et les outils pour mettre en place ce système :
1. Installer les dépendances
Vous aurez besoin de Python et des bibliothèques suivantes :
Bash
pip install ollama chromadb langchain langchain-community
• Ollama : Le client Python pour interagir avec le moteur Ollama.
• ChromaDB : Une base de données vectorielle légère et facile à utiliser.
• LangChain : Un framework très utile pour orchestrer les différents composants d'une application RAG.
2. Démarrer Ollama et télécharger un modèle
Assurez-vous que le serveur Ollama est en cours d'exécution. Si ce n'est pas déjà fait, téléchargez un modèle compatible. llama3 est un bon choix.
Bash
ollama pull llama3
Code d'exemple
Ce script Python illustre comment les composants interagissent pour créer un flux RAG simple.
Python
import ollama
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings
from langchain.chains import RetrievalQA
from langchain_community.llms import Ollama
# 1. Charger et diviser un document
loader = TextLoader("exemple.txt") # Créez un fichier "exemple.txt" avec du texte dedans
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = text_splitter.split_documents(documents)
# 2. Créer les embeddings et la base de données vectorielle
# Le modèle d'embeddings est aussi exécuté par Ollama
embeddings = OllamaEmbeddings(model="llama3")
vectordb = Chroma.from_documents(documents=docs, embedding=embeddings, persist_directory="./chroma_db")
vectordb.persist()
# 3. Créer la chaîne de récupération et de génération (RAG)
# Cette chaîne va chercher les documents et les passer au LLM
llm = Ollama(model="llama3")
qa_chain = RetrievalQA.from_chain_type(llm=llm,
chain_type="stuff", # "stuff" met tous les documents dans le prompt
retriever=vectordb.as_retriever())
# 4. Poser une question et obtenir une réponse
query = "Quelle est l'information principale de ce document ?"
response = qa_chain.invoke(query)
print(response)
# Exemple d'exécution
# > {"query": "Quelle est l'information principale de ce document ?", "result": "Selon le document, l'information principale est que l'entreprise XYZ a lancé un nouveau produit révolutionnaire..."}
Explications du code
• TextLoader : Charge votre document (ici, exemple.txt). Pour des documents plus complexes (PDF, etc.), vous utiliseriez un autre loader de langchain_community.document_loaders.
• RecursiveCharacterTextSplitter : Divise le document en petits morceaux (chunks). C'est essentiel, car les LLM ont une limite de tokens.
• OllamaEmbeddings : Utilise un modèle d'embedding (comme llama3 ou un autre modèle plus petit) pour convertir chaque morceau de texte en un vecteur.
• Chroma : Stocke ces vecteurs et les associe à leur texte d'origine. C'est votre base de données RAG.
• Ollama(model="llama3") : Crée une instance du LLM que vous avez téléchargé.
• RetrievalQA.from_chain_type : C'est le cœur du RAG. Quand vous posez une question :
1. Il transforme la question en vecteur.
2. Il recherche les vecteurs les plus proches dans la base de données Chroma.
3. Il insère les morceaux de texte correspondants dans le prompt du LLM.
4. Il envoie le tout à Ollama et renvoie la réponse générée.
-----------------------------
Pierre Erol GIRAUDY.
https://www.erolgiraudy.eu/
https://uga-ia.blogspot.com/
https://www.erolgiraudy.eu/2024/10/mes-15-livres.html
https://and500.blogspot.com/
https://www.ugaia.eu/
Pour Info : Mon livre https://amzn.eu/d/eTuHn56 sur AMAZON
Users Group Artificial Intelligence Andorra (U.G.A.I.A.) : Liste des Certificats PDF Microsoft Learn