Système d'exploitation : WSL Ubuntu 24.04 sous Windows 11
Code source : https://github.com/HackTechDev/ragdoc_ollama
~ $ sudo apt update
~ $ sudo apt install python3 python3-pip python3-venv git -y
~ $ python3 --version
Python 3.12.3
~ $
Site offficiel : https://ollama.com/
~ $ 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.
~ $ ollama --version
ollama version is 0.9.6
~ $
~ $ 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)
>>> 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)
~ $ mkdir madoc
~ $ cd madoc/
~/madoc $
~/madoc $ python3 -m venv venv
~/madoc $ source venv/bin/activate
(venv) ~/madoc $
(venv) ~/madoc $ pip install langchain langchain-community chromadb
pip install pypdf
pip install python-docx
(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 $
(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 $
(venv) ~/madoc $ pip install -U langchain-ollama
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], "...")
(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 ?
(venv) ~/madoc $ ollama pull llama3
(venv) ~/madoc $ pip install unstructured python-docx pypdf
(venv) ~/madoc $ pip install duckduckgo-search
(venv) ~/madoc $ pip install ddgs
Script : rag_local_web.py
De la branche : master