IA locale avec mémoire - sans cloud, sans abonnement, sans détour
Dans un article précédent j'ai expliqué comment utiliser Ollama sur Mac install. Ceux qui ont déjà franchi cette étape disposent maintenant d'un modèle de langage local performant - par exemple Mistral, LLaMA3 ou un autre modèle compatible auquel il est possible de s'adresser via l'API REST.
Mais de lui-même, le modèle ne "sait" que ce qui est écrit dans le prompt actuel. Il ne se souvient pas des conversations précédentes. Ce qui manque, c'est la mémoire.
C'est précisément pour cela que nous utilisons Qdrant, une base de données sémantique vectorielle moderne.
Dans cet article, je montre étape par étape
- comment installer Qdrant sur Mac install (via Docker)
- comment créer des embeddings avec Python
- comment sauvegarder, rechercher et intégrer du contenu dans le flux de travail Ollama
- et à quoi ressemble un prompt→mémoire→réponse complet
Pourquoi Qdrant ?
Qdrant ne stocke pas de textes classiques, mais des vecteurs qui représentent la signification d'un texte sous forme de code numérique. Il est ainsi possible de retrouver des contenus non seulement exacts, mais aussi sémantiquement similaires, même si les mots varient.
Ollama + Qdrant donne donc
Un modèle linguistique local avec une mémoire à long terme - sûr, contrôlable et extensible.
Conditions préalables
- Ollama est installiert et fonctionne (→ par ex. ollama run mistral)
- Docker est installiert : https://www.docker.com/products/docker-desktop
- Python 3.9+
Paquetinstallation de Qdrant :
pip install qdrant-client sentence-transformers
Démarrer Qdrant (Docker)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
Qdrant se met alors en marche :
http://localhost:6333 (API REST)
http://localhost:6334 (gRPC, pas nécessaire pour cet article)

Exemple en Python pour Ollama + Qdrant
Nous allons maintenant écrire un script de base simple qui :
- reçoit l'invite de l'utilisateur
- génère un vecteur d'intégration
- recherche des souvenirs sémantiquement similaires dans Qdrant
- la réponse avec contexte générée par Ollama
- enregistre la nouvelle conversation comme un souvenir
Python-Script: ollama_memory.py
import requests
from sentence_transformers import SentenceTransformer
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
# Einstellungen
OLLAMA_URL = "http://localhost:11434/api/generate"
COLLECTION_NAME = "memory"
VECTOR_SIZE = 384 # für 'all-MiniLM-L6-v2'
# Lade Embedding-Modell
embedder = SentenceTransformer("all-MiniLM-L6-v2")
# Verbinde mit Qdrant
qdrant = QdrantClient(host="localhost", port=6333)
# Erstelle Collection (einmalig)
def create_collection():
if COLLECTION_NAME not in qdrant.get_collections().collections:
qdrant.recreate_collection(
collection_name=COLLECTION_NAME,
vectors_config=VectorParams(size=VECTOR_SIZE, distance=Distance.COSINE)
)
# Füge Eintrag ins Gedächtnis hinzu
def add_to_memory(text: str):
vector = embedder.encode(text).tolist()
point = PointStruct(id=hash(text), vector=vector, payload={"text": text})
qdrant.upsert(collection_name=COLLECTION_NAME, points=[point])
# Suche im Gedächtnis
def search_memory(query: str, top_k=3):
vector = embedder.encode(query).tolist()
hits = qdrant.search(
collection_name=COLLECTION_NAME,
query_vector=vector,
limit=top_k
)
return [hit.payload["text"] for hit in hits]
# Sende Anfrage an Ollama
def query_ollama(context: list[str], user_prompt: str):
prompt = "\n\n".join(context + [user_prompt])
response = requests.post(OLLAMA_URL, json={
"model": "mistral",
"prompt": prompt,
"stream": False
})
return response.json()["response"]
# Ablauf
def main():
create_collection()
print("Frage an die KI:")
user_prompt = input("> ")
context = search_memory(user_prompt)
answer = query_ollama(context, user_prompt)
print("\nAntwort von Ollama:")
print(answer.strip())
# Speichern der Konversation
full_entry = f"Frage: {user_prompt}\nAntwort: {answer.strip()}"
add_to_memory(full_entry)
if __name__ == "__main__":
main()
Indications sur la pratique
Tu peux aussi utiliser tes propres modèles d'intégration, par exemple via Ollama (par exemple nomic-embed-text) ou les modèles Hugging Face
Qdrant supporte les filtres de charge utile, les périodes et les champs (très utile pour une extension ultérieure !)
L'ID hash(text) suffit pour les tests simples, pour les applications professionnelles, tu devrais utiliser des UUIDs
L'IA locale avec mémoire - et tout ce qu'on peut en faire
Dans les chapitres précédents, j'ai montré comment créer une véritable mémoire d'IA locale sur un Mac avec Ollama et Qdrant. Une configuration qui se passe de cloud, d'abonnement et de serveurs étrangers - rapide, sûre, privée.
Mais que faire maintenant ?
Quelle est l'utilisation concrète de cette technologie ? Qu'est-ce qu'elle permet de faire, aujourd'hui, demain, après-demain ?
La réponse : beaucoup de choses.
Car ce que tu as là est bien plus qu'un chatbot. C'est une machine à penser indépendante de la plate-forme et dotée d'une mémoire à long terme. Et cela ouvre des portes.
🔍 1. base de connaissances personnelle
Tu peux utiliser Ollama + Qdrant comme ta mémoire personnelle à long terme.
Documents, notes de conversation, idées - tout ce que tu lui dis peut être stocké sémantiquement et retrouvé.
exemple :
"Quelle était mon idée d'entreprise de jeudi dernier ?"
"Quels clients ont demandé une mise à niveau en mars ?"
Au lieu de chercher dans des dossiers, tu demandes simplement à ton système. Particulièrement intéressant : cela fonctionne même si la question n'est pas précise, car Qdrant effectue une recherche sémantique et pas seulement par mots-clés.
📄 2. journalisation et résumé automatiques
En combinaison avec une entrée audio ou texte, le système peut enregistrer en continu :
- Notes de discussion en réunion
- Appels avec les clients
- Protocoles journaliers ou déroulement de projets
Ces données sont automatiquement introduites dans la mémoire Qdrant et peuvent ainsi être interrogées ultérieurement, comme un assistant :
"Qu'a dit M. Meier sur la livraison, déjà ?"
"Comment s'est déroulé le projet XY ?"
🧠 3. coach personnel ou assistant de journal intime
En notant régulièrement tes pensées, tes humeurs ou tes décisions, tu peux créer un compagnon de réflexion :
"Quelle a été ma plus grande avancée ce mois-ci ?"
"Comment ai-je réagi aux échecs à l'époque ?"
Le système apprend à te connaître au fil du temps - et devient un véritable miroir, pas seulement un chatbot.
💼 4. applications commerciales avec FileMaker
Ceux qui, comme moi, utilisent FileMaker, peuvent directement connecter cette configuration :
- Envoyer des invites depuis FileMaker
- Récupérer et enregistrer automatiquement les réponses
- Contrôler les accès à la mémoire directement via l'API REST ou un script shell
Il en résulte une combinaison extrêmement puissante :
- FileMaker = Frontend, interface utilisateur, centrale de commande
- Ollama = Intelligence linguistique
- Qdrant = mémoire sémantique à long terme
Le résultat : un véritable composant d'IA pour les solutions FileMaker, local, sécurisé, personnalisé.
🛠️ 5. Soutien au quotidien : souvenirs, idées, recommandations
"Rappelle-moi cette idée la semaine prochaine"
"Quels livres t'ai-je déjà recommandés ?"
"Que pourrais-je proposer ensuite à M. Müller ?"
Avec une logique de stockage ciblée (horodatage, catégories, utilisateurs), tu peux structurer la mémoire de manière ciblée et l'utiliser dans de nombreux domaines de la vie et de l'entreprise.
🤖 6. base d'un système d'agents
Pour ceux qui voient plus loin, cette configuration permet également de construire des systèmes de type agent :
- L'IA prend en charge des tâches simples
- L'IA reconnaît des modèles dans le temps
- L'IA donne des indications proactives
exemple :
"Tu as posé 4 fois la même question cette semaine - veux-tu enregistrer une note à ce sujet ?"
"Un nombre remarquablement élevé de clients ont mentionné ce produit - veux-tu que je te fasse un résumé ?"
🌐 7. intégration avec d'autres outils
Le système peut être facilement relié à d'autres outils :
- Neo4jpour représenter graphiquement les relations sémantiques
- Fichiers & PDFpour indexer automatiquement le contenu
- Analyseur de courrierpour analyser et mémoriser les e-mails
- Assistants vocauxpour interagir par la voix
🔐 8. tout reste local - et sous contrôle
Le plus grand avantage : tu décides de ce qui doit être sauvegardé. Tu décides de la durée de stockage. Et : cela ne quitte jamais ton ordinateur si tu ne le souhaites pas. Dans un monde où beaucoup s'en remettent aveuglément à l'IA en nuage, c'est un contrepoids puissant - notamment pour les indépendants, les développeurs, les auteurs, les entrepreneurs.
Dernière enquête sur l'utilisation des systèmes d'IA locaux
Ollama + Apprivoiser Qdrant : Comment donner une structure, des règles et un réglage fin à l'IA locale
Celui qui s'est donné la peine de Ollama et de Qdrant en local sur son Mac a déjà fait un grand travail. Tu as maintenant
- Une IA linguistique locale
- Une mémoire sémantique
- Et un pipeline fonctionnel qui mappe prompt → mémoire → Ollama → réponse
Mais ceux qui l'utilisent s'aperçoivent vite qu'il faut des règles. De la structure. De l'ordre.
Car sans commande, ton assistant devient vite un bavard qui retient trop de choses, se répète sans cesse ou fait appel à des souvenirs non pertinents.
🧭 Que manque-t-il encore ?
Un orchestre a aussi un chef d'orchestre. Et c'est précisément ta mission à présent : piloter au lieu de simplement utiliser.
Module 1 : Un "routeur" pour la logique de la mémoire
Au lieu de tout sauvegarder ou de tout rechercher, tu devrais d'abord décider si quelque chose doit être sauvegardé ou chargé. Cela peut se faire par exemple avec un simple routeur de pertinence que tu places entre l'invite et la mémoire :
ExempleVérifier la pertinence par prompt à Ollama lui-même
def is_relevant_for_memory(prompt, response):
prüf_prompt = f"""
Nutzer hat gefragt: "{prompt}"
Die KI hat geantwortet: "{response}"
Sollte man sich diesen Dialog langfristig merken? Antworte nur mit 'Ja' oder 'Nein'.
"""
result = query_ollama([], prüf_prompt).strip().lower()
return result.startswith("ja")
Tu donnes donc toi-même à Ollama la tâche d'évaluer sa réponse - et ce n'est que si elle est jugée pertinente que tu l'enregistres dans Qdrant.
Module 2 : Exclure les messages plus anciens (limitation du contexte)
C'est justement lors de longues sessions que cela devient problématique lorsque d'anciens messages reviennent sans cesse dans le contexte. Le modèle n'oublie pas - il s'éparpille.
Solution: limiter la fenêtre de contexte.
Tu peux le faire de deux manières :
Méthode 1: limite le nombre de résultats
context = search_memory(user_prompt, top_k=3)
Ici, seul ce qui est sémantiquement pertinent est chargé - pas tout.
Méthode 2: Limite le temps
# Nur Nachrichten der letzten 7 Tage now = datetime.utcnow() filter = Filter( must=[ FieldCondition(key="timestamp", range=Range(gte=now - timedelta(days=7))) ] )
Tu peux donc "couper" dans le temps si le système s'étend trop loin dans le passé.
Module 3 : Introduire les poids contextuels et les labels
Toutes les entrées de la mémoire n'ont pas la même valeur. Tu peux leur donner du poids ou des catégories :
- Fixe (p. ex. "L'utilisateur s'appelle Markus")
- Temporaire (p. ex. "Aujourd'hui, c'est mardi")
- En situation (par exemple, "Chat d'aujourd'hui 10h30")
Qdrant supporte ce que l'on appelle les charges utiles, c'est-à-dire des informations supplémentaires par entrée. Cela te permet de filtrer ou d'établir des priorités par la suite.
Module 4 : Réglage fin via le prompt
Le prompt lui-même est une puissante unité de contrôle.
Voici quelques astuces pour l'utiliser et rendre Ollama plus intelligent :
Exemple d'invite avec des instructions :
Tu es un assistant local avec une mémoire sémantique. Si tu trouves plusieurs rappels, n'utilise que les trois plus pertinents. Ne te réfère pas à des informations datant de plus de 10 jours, à moins qu'elles ne soient explicitement marquées. Ignore les rappels triviaux comme "bonjour" ou "merci". Réponds de manière précise et dans le style d'un conseiller expérimenté.
Tu peux ainsi effectuer toi-même des réglages fins directement dans le prompt - sans nouveaux modèles, sans formation.
Et : tu peux générer l'invite de manière dynamique - selon la situation.
Module 5 : Hygiène de la mémoire
Quand la mémoire grandit, elle devient confuse.
Un simple script de maintenance qui supprime les contenus non pertinents ou en double vaut son pesant d'or.
exemple :
"Oublie tout ce qui a trait au 'temps'".
"Supprimer les entrées datant de plus de 3 mois et qui n'ont jamais été consultées".
Qdrant supporte cela via l'API - et tu peux l'automatiser, par exemple une fois par semaine.
Module 6 : FileMaker comme pupitre de commande
Si tu travailles - comme moi - avec FileMaker, tu peux contrôler tout cela à distance via l'API REST :
- Envoyer un prompt
- Récupérer le contexte
- Recevoir une réponse
- Faire procéder à une évaluation
- Enregistrer ou faire oublier
Pour cela, tu n'as besoin que d'un petit module REST dans FileMaker (Insert from URL avec JSON) et de quelques scripts.
Résultat : une interface qui te permet de contrôler ton IA comme un carnet de notes vivant - mais avec intelligence.
🔚 Conclusion : la qualité de l'IA dépend de son leadership
Ollama est puissant. Qdrant est flexible. Mais sans règles claires, les deux deviennent un amas de données non structurées. L'art ne consiste pas à tout stocker - mais à ne garder à disposition que ce qui est pertinent et à penser de manière ciblée au lieu de simplement se souvenir.
Nouvelle série d'articles : les historiques ChatGPT comme base de connaissances pour ton IA
Si tu as déjà construit ta propre mémoire d'IA avec Ollama et Qdrant, cela vaut la peine de jeter un coup d'œil à une nouvelle série d'articles qui commence précisément ici. Il y est question de la manière dont la Intégrer l'exportation de données ChatGPT dans ce système permet. De nombreux utilisateurs ne savent même pas qu'ils peuvent exporter l'historique complet de leurs discussions - et que ces données constituent une source de connaissances précieuse. Dans cette série, je montre comment ces conversations peuvent être analysées, transformées en embeddings et ensuite importées dans une base de données vectorielle. Cela permet à ton IA locale d'accéder plus tard à des conversations antérieures et de les utiliser comme contexte pour les réponses. C'est ainsi que les dialogues individuels se transforment peu à peu en archives de connaissances personnelles.
Foire aux questions
- Pourquoi une IA locale a-t-elle besoin d'une „mémoire“ ? Le modèle linguistique ne suffit-il pas ?
Un modèle linguistique ne travaille en principe qu'avec l'invite actuelle et le contexte que tu lui donnes à ce moment-là. Il ne se souvient donc pas durablement des conversations, documents ou informations antérieurs. C'est précisément là qu'intervient une mémoire locale. Grâce à une base de données supplémentaire, l'IA peut enregistrer des contenus antérieurs et les rappeler en cas de besoin. En répondant, le modèle reçoit alors non seulement ta question actuelle, mais aussi des informations pertinentes provenant de cette mémoire. Il en résulte des réponses beaucoup plus cohérentes et informées. Sans un tel système, un modèle linguistique reste en fait un simple générateur de texte sans connaissance à long terme de tes propres données ou projets. - Qu'est-ce que Qdrant exactement - et pourquoi est-il utilisé dans ce système ?
Qdrant est une base de données vectorielle moderne, spécialement conçue pour la recherche sémantique. Contrairement aux bases de données classiques, elle ne stocke pas les informations uniquement sous forme de texte, mais sous forme de "vecteurs" - des représentations mathématiques de la signification. Cela lui permet de rechercher des contenus non seulement en fonction de mots identiques, mais aussi en fonction de la proximité du contenu. Ainsi, lorsque tu poses une question, Qdrant peut trouver des passages appropriés de ton stock de connaissances, même si les termes n'y sont pas exactement les mêmes. En combinaison avec un modèle linguistique, il en résulte une sorte de mémoire intelligente pour l'IA. - Que signifie le terme „RAG“, souvent utilisé dans ce contexte ?
RAG est l'abréviation de „Retrieval Augmented Generation“. Il s'agit d'une technique dans laquelle un modèle linguistique extrait des informations supplémentaires d'une base de données avant de donner une réponse. Le modèle ne génère donc pas sa réponse uniquement à partir de l'entraînement, mais la complète avec des informations appropriées provenant d'une source de connaissances. Cette méthode résout un problème typique des modèles linguistiques : Ils ne connaissent que ce qui a été appris pendant la formation. Grâce à RAG, ils peuvent à la place accéder à des données actuelles ou personnelles - par exemple de la documentation, des pages web ou leurs propres notes. - Comment la Ollama et Qdrant travaillent-ils concrètement ensemble ?
Dans cette configuration, Ollama joue le rôle de modèle linguistique, tandis que Qdrant fait office de mémoire sémantique. Lorsque tu poses une question, Qdrant recherche d'abord des fragments de texte pertinents. Ces résultats sont ensuite transmis au modèle linguistique en même temps que ta question. Le modèle utilise ces informations supplémentaires pour formuler une réponse fondée. La séquence typique est donc la suivante : invite → recherche dans la mémoire → élargir le contexte → générer une réponse. - Quels types de données puis-je inclure dans cette mémoire de l'IA ?
En principe, presque tout ce qui peut être transformé en texte. Cela comprend les documentations, les pages web, les fichiers Markdown, les PDF, les entrées de base de données ou encore les notes personnelles. Il est simplement important que les contenus puissent être décomposés en petites sections de texte avant d'être enregistrés dans la base de données. Ces „chunks“ constituent ensuite la base de la recherche sémantique. L'IA peut ainsi accéder de manière ciblée à des sections individuelles pertinentes au lieu de devoir rechercher des documents complets. - Pourquoi utiliser une base de données vectorielles plutôt qu'une recherche textuelle normale ?
Les moteurs de recherche classiques travaillent généralement avec des mots-clés. Cela signifie qu'ils ne trouvent que des résultats contenant exactement les mêmes termes. Une base de données vectorielle, en revanche, recherche la signification. Elle peut donc aussi trouver des textes dont le contenu est similaire, même si d'autres mots ont été utilisés. C'est crucial pour les systèmes d'IA, car les questions sont souvent formulées différemment des documents originaux. Grâce à la recherche sémantique, le lien entre la question et la réponse est nettement plus fiable. - Comment les textes sont-ils convertis en vecteurs ?
Pour ce faire, on utilise ce que l'on appelle des modèles d'intégration. Ces modèles analysent les textes et les transforment en vecteurs numériques qui représentent leur signification. Chaque partie de texte reçoit donc une représentation mathématique dans ce que l'on appelle l'espace vectoriel. Des contenus similaires sont ainsi plus proches les uns des autres que des thèmes totalement différents. Si une question est posée ultérieurement, elle est également convertie en un vecteur. Qdrant peut alors trouver très rapidement les entrées les plus similaires en mémoire. - Pourquoi Qdrant est-il souvent géré par Docker install ?
Docker simplifie considérablement l'installation de logiciels complexes. Au lieu de mettre en place manuellement de nombreuses dépendances individuelles, Qdrant fonctionne simplement dans un conteneur. L'installation fonctionne ainsi de manière fiable sur différents systèmes et peut être facilement démarrée ou arrêtée. Cette méthode est particulièrement pratique sur Mac, car elle permet de garder le système propre tout en fournissant un environnement stable pour la base de données. - Puis-je utiliser ce système entièrement hors ligne ?
Oui, c'est l'un des principaux avantages de cette architecture. Tant le modèle linguistique que la base de données vectorielles fonctionnent localement sur ton propre ordinateur. Aucune donnée n'est donc envoyée à des serveurs externes. Il en résulte un environnement d'IA entièrement privé. C'est un avantage décisif par rapport aux systèmes en nuage, en particulier pour les données sensibles ou les documents internes de l'entreprise. - Quelle peut être la taille d'une telle mémoire locale d'IA ?
Cela dépend surtout de l'espace mémoire dont tu disposes et de la puissance de ton système. Les bases de données vectorielles modernes peuvent facilement gérer des millions de fragments de texte. Pour de nombreux projets personnels, quelques milliers de documents suffisent toutefois à constituer un système de connaissances très performant. L'important est davantage la qualité de la structure des données que la simple quantité d'informations. - L'IA peut-elle vraiment „apprendre“ avec ce système ?
Pas au sens classique du terme. Le modèle linguistique lui-même n'est pas réentraîné. Au lieu de cela, les connaissances sont stockées en dehors du modèle et rappelées en cas de besoin. L'IA semble ainsi capable d'apprendre, mais en réalité, elle ne fait qu'accéder à une mémoire de connaissances toujours plus grande. Cette approche présente un grand avantage : de nouvelles informations peuvent être ajoutées à tout moment sans devoir entraîner à nouveau le modèle. - Quelles applications pratiques découlent d'une telle mémoire locale de l'IA ?
Les possibilités sont étonnamment variées. Tu peux par exemple créer une base de connaissances personnelle, rendre une documentation technique consultable ou faire analyser des documents internes à l'entreprise. Les auteurs, développeurs ou chercheurs en profitent également, car ils peuvent rendre accessibles de grandes quantités d'informations de manière structurée. En fait, il en résulte une sorte d'assistant de recherche personnel qui comprend tes propres données. - Puis-je intégrer plusieurs sources de données en même temps ?
Oui, Qdrant permet d'ajouter des métadonnées supplémentaires à chaque fragment de texte, comme la source, la catégorie ou la langue. Cela permet de gérer ensemble différents ensembles de données. Lors de la recherche, ces métadonnées peuvent même être filtrées de manière ciblée. Ainsi, l'IA peut par exemple ne prendre en compte que les contenus d'une certaine documentation ou d'un certain projet. - En quoi ce système diffère-t-il des chatbots classiques ?
La plupart des chatbots travaillent exclusivement avec les connaissances de leur enregistrement de formation. Ils ne peuvent donc pas fournir d'informations spécifiques sur ton propre contenu. Un système RAG, en revanche, associe un modèle linguistique à une base de connaissances individuelle. L'IA peut ainsi fournir des réponses directement adaptées à tes propres données. Cela les rend nettement plus utiles pour le travail productif. - Quel est le rôle de Python dans cette configuration ?
Python est souvent utilisé pour contrôler la connexion entre le modèle de langage et la base de données. Quelques scripts suffisent pour lire des textes, les convertir en vecteurs et les enregistrer dans Qdrant. De plus, Python peut effectuer des recherches et transmettre les résultats trouvés au modèle de langage. Il en résulte un pipeline flexible qui peut être adapté à ses propres exigences. - La mise en place d'un tel système est-elle réservée aux développeurs ?
Pas nécessairement. Certes, la mise en place nécessite une certaine compréhension technique, mais de nombreux outils nécessaires sont devenus beaucoup plus simples. Avec un peu de patience, il est possible de mettre en place un système fonctionnel même sans connaissances approfondies en programmation. Une fois que l'on s'y est mis, on se rend vite compte de l'énorme potentiel de telles infrastructures locales d'IA. - Quelles sont les limites de la mémoire locale de l'IA ?
La principale limitation réside dans la puissance de calcul de son propre ordinateur. Les grands modèles ou les énormes bases de connaissances peuvent nécessiter davantage de mémoire et de puissance CPU. En outre, la qualité des réponses dépend fortement de la structure des données. Si les documents sont mal préparés, même l'IA ne peut fournir de bons résultats que de manière limitée. - Pourquoi cette combinaison de Ollama et de Qdrant est-elle considérée comme une architecture particulièrement intéressante pour l'IA locale ?
Parce qu'elle réunit deux composants essentiels : un modèle linguistique performant et une base de données sémantique rapide. Ensemble, ils créent un environnement de travail IA complet qui peut être exploité entièrement en local. Il est ainsi possible de mettre en place des systèmes de connaissances personnels, des moteurs de recherche intelligents ou des assistants spécialisés - sans dépendre du cloud et avec un contrôle total sur ses propres données.









