Installation de Ollama

Système d'exploitation : WSL Ubuntu 24.04 sous Windows 11

Code source : https://github.com/HackTechDev/ragdoc_ollama

I/ Installation de Python3.

~ $ sudo apt update
~ $ sudo apt install python3 python3-pip python3-venv git -y
~ $ python3 --version
Python 3.12.3
~ $

II/ Installation de Ollama.

Site offficiel : https://ollama.com/

1/ Installation.

~ $ curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.

2/ Vérification.

~ $ ollama --version
ollama version is 0.9.6
~ $

3/ Initialiser le LLM 'llama2'.

~ $ ollama run llama2
pulling manifest
pulling 8934d96d3f08: 100% ▕██████████████████████████████████████████████████████████▏ 3.8 GB
pulling 8c17c2ebb0ea: 100% ▕██████████████████████████████████████████████████████████▏ 7.0 KB
pulling 7c23fb36d801: 100% ▕██████████████████████████████████████████████████████████▏ 4.8 KB
pulling 2e0493f67d0c: 100% ▕██████████████████████████████████████████████████████████▏   59 B
pulling fa304d675061: 100% ▕██████████████████████████████████████████████████████████▏   91 B
pulling 42ba7f8a01dd: 100% ▕██████████████████████████████████████████████████████████▏  557 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)

4/ Test.

>>> Quels sont les ingrédients d'une quiche Lorraine ?

Une quiche Lorraine est un fromage frais, généralement du Gruyère ou de l'Emmental, associé à des œufs et à du
lait. Voici les ingrédients classiques pour une quiche Lorraine :

* 6 œufs
* 200 g de Gruyère ou d'Emmental râpé
* 150 g de beurre fondu
* 1 cuillère à soupe de farine
* 1/2 tasse de lait
* Sel et poivre

Vous pouvez également ajouter d'autres ingrédients à votre quiche Lorraine, tels que du porc gras ou du jambon,
des champignons, des légumes tels que de l'oignon ou des épinards, ou encore du vin blanc. Voici une recette
classique pour une quiche Lorraine :

Ingrédients :

* 6 œufs
* 200 g de Gruyère ou d'Emmental râpé
* 150 g de beurre fondu
* 1 cuillère à soupe de farine
* 1/2 tasse de lait
* Sel et poivre
* 1 oignon ou 1 petit champignon, haché
* 100 g de jambon ou de porc gras, coupé en petits morceaux
* 1 cuillère à soupe de vin blanc (optional)

Instructions :

1. Préchauffez le four à 180°C (350°F).
2. Mettez les œufs, le Gruyère ou l'Emmental, le beurre fondu, la farine et le lait dans un saladier. Mélangez
bien pour que les feuilletés soient homogènes.
3. Ajoutez l'oignon ou le champignon haché, le jambon ou le porc gras, et le vin blanc (si utilisé). Mélangez
jusqu'à ce les ingrédients soient bien mélangés.
4. Versez la quiche dans un bol de formes rectangulaires ou cercles.
5. Enfournez pendant environ 30-40 minutes, hasta que le bouton est chaud et l'intérieur soit fermier.
6. Laissez refroidir avant de servir.

Bon appétit !

>>> Send a message (/? for help)

III/ Création d'un Retrieval-augmented generation (RAG).

1/ Création d'un répertoire de travail.

~ $ mkdir madoc
~ $ cd madoc/
~/madoc $

2/ Initilisation d'un environnement Python.

~/madoc $ python3 -m venv venv
~/madoc $ source venv/bin/activate
(venv) ~/madoc $

3/ Installation d'un connecteur IA avec des sources externes de données et d'une base de données vectorielles.

(venv) ~/madoc $ pip install langchain langchain-community chromadb

4/ Installation de module pour le supports de document pdf et docx.

pip install pypdf
pip install python-docx 
5/ Installation d'un modéle d'embedding.
(venv) ~/madoc $ ollama pull nomic-embed-text
pulling manifest
pulling 970aa74c0a90: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 274 MB
pulling c71d239df917: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  11 KB
pulling ce4a164fc046: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   17 B
pulling 31df23ea7daa: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  420 B
verifying sha256 digest
writing manifest
success
(venv) ~/madoc $

6/ Installation de llama2 :

(venv) ~/madoc $ ollama pull llama2
pulling manifest
pulling 8934d96d3f08: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 3.8 GB
pulling 8c17c2ebb0ea: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 7.0 KB
pulling 7c23fb36d801: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.8 KB
pulling 2e0493f67d0c: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   59 B
pulling fa304d675061: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   91 B
pulling 42ba7f8a01dd: 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  557 B
verifying sha256 digest
writing manifest
success
(venv) ~/madoc $

7/ Installation du module Python LangChain.

(venv) ~/madoc $ pip install -U langchain-ollama

8/ Test.

Créer :

rag_test.py

Ajouter :

from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
from langchain_ollama import OllamaEmbeddings, OllamaLLM
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA

# Loader & splitter comme avant
loader = TextLoader("ma_doc.txt", encoding="utf-8")
documents = loader.load()

splitter = CharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separator="\n"
)
docs = splitter.split_documents(documents)

# Embeddings via Ollama
embeddings = OllamaEmbeddings(model="nomic-embed-text")

# ChromaDB
vectordb = Chroma.from_documents(docs, embeddings, persist_directory="./chroma_db")

# Nouveau LLM Ollama
llm = OllamaLLM(model="llama2", stream=False)

# Chaîne RAG
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectordb.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True
)

# Utilisation avec invoke
query = "Comment récupérer les clefs ssh de Windows ?"
result = qa_chain.invoke({"query": query})

print("Réponse :", result["result"])
print("\nExtraits utilisés :")
for doc in result["source_documents"]:
    print("-", doc.page_content[:200], "...")

9/ Ajouter des documents dans le répertoire : mes_docs

10/ Lancer le script.

(venv) ~/madoc $ python rag_test.py

Au bout de quelques second, s'affiche la réponse à la question, ici : Comment récupérer les clefs ssh de Windows ?

IV/ Chargement de plusieurs types de fichier.

  • Installer le LLM : llama3
(venv) ~/madoc $ ollama pull llama3
  • Installer les modules Python pour la prise en charge des formats docx et pdf :
(venv) ~/madoc $ pip install unstructured python-docx pypdf

V/ Ajouter des résultats de recherche sur le web

(venv) ~/madoc $ pip install duckduckgo-search
(venv) ~/madoc $ pip install ddgs

Script : rag_local_web.py
De la branche : master