Lokale KI mit Erinnerungsvermögen – ohne Cloud, ohne Abo, ohne Umweg
In einem früheren Artikel habe ich erklärt, wie man Ollama auf dem Mac installiert. Wer diesen Schritt bereits hinter sich hat, verfügt nun über ein leistungsfähiges lokales Sprachmodell – etwa Mistral, LLaMA3 oder ein anderes kompatibles Modell, das per REST-API ansprechbar ist.
Doch von allein „weiß“ das Modell nur das, was im aktuellen Prompt steht. Es erinnert sich nicht an frühere Konversationen. Was fehlt, ist ein Gedächtnis.
Genau dafür nutzen wir Qdrant, eine moderne semantische Vektor-Datenbank.
In diesem Artikel zeige ich Schritt für Schritt:
- wie man Qdrant auf dem Mac installiert (per Docker)
- wie man mit Python Embeddings erzeugt
- wie man Inhalte speichert, sucht und in den Ollama-Workflow einbindet
- und wie ein vollständiger Prompt→Gedächtnis→Antwort-Ablauf aussieht
Warum Qdrant?
Qdrant speichert keine klassischen Texte, sondern Vektoren, die die Bedeutung eines Texts als Zahlencode darstellen. So lassen sich Inhalte nicht nur exakt, sondern auch semantisch ähnlich wiederfinden – selbst wenn die Worte variieren.
Ollama + Qdrant ergibt also:
Ein lokales Sprachmodell mit Langzeitgedächtnis – sicher, steuerbar und erweiterbar.
Voraussetzungen
- Ollama ist installiert und läuft (→ z.B. ollama run mistral)
- Docker ist installiert: https://www.docker.com/products/docker-desktop
- Python 3.9+
Paketinstallation von Qdrant:
pip install qdrant-client sentence-transformers
Qdrant starten (Docker)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
Qdrant läuft dann auf:
http://localhost:6333 (REST API)
http://localhost:6334 (gRPC, nicht benötigt für diesen Artikel)

Python-Beispiel für Ollama + Qdrant
Wir schreiben nun ein einfaches Basis-Skript, das:
- den Nutzerprompt entgegennimmt
- daraus einen Embedding-Vektor erzeugt
- in Qdrant nach semantisch ähnlichen Erinnerungen sucht
- die Antwort mit Kontext über Ollama generiert
- die neue Konversation als Erinnerung abspeichert
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()
Hinweise zur Praxis
Du kannst auch eigene Embedding-Modelle nutzen, z. B. über Ollama (z. B. nomic-embed-text) oder Hugging Face Modelle
Qdrant unterstützt Payload-Filter, Zeiträume und Felder (für spätere Erweiterung sehr nützlich!)
Die hash(text)-ID reicht für einfache Tests, für professionelle Anwendungen solltest Du UUIDs verwenden
Lokale KI mit Gedächtnis – und was man damit alles machen kann
In den vorherigen Kapiteln habe ich gezeigt, wie man auf einem Mac mit Ollama und Qdrant ein echtes, lokales KI-Gedächtnis aufbauen kann. Ein Setup, das ohne Cloud, ohne Abo und ohne fremde Server auskommt – schnell, sicher, privat.
Doch was nun?
Wofür lässt sich diese Technologie eigentlich konkret nutzen? Was ist damit möglich – heute, morgen, übermorgen?
Die Antwort: eine ganze Menge.
Denn was Du hier hast, ist mehr als ein Chatbot. Es ist eine plattformunabhängige Denkmaschine mit Langzeitgedächtnis. Und das öffnet Türen.
🔍 1. Persönliche Wissensdatenbank
Du kannst Ollama + Qdrant als Dein persönliches Langzeitgedächtnis verwenden.
Dokumente, Gesprächsnotizen, Ideen – alles, was Du ihm sagst, kann semantisch gespeichert und wiedergefunden werden.
Beispiel:
„Wie lautete nochmal meine Geschäftsidee vom letzten Donnerstag?“
„Welche Kunden wollten im März ein Upgrade?“
Statt Ordner zu durchsuchen, fragst Du einfach Dein System. Besonders spannend: Es funktioniert auch bei ungenauer Fragestellung, weil Qdrant semantisch sucht, nicht nur nach Schlüsselwörtern.
📄 2. Automatische Protokollierung und Zusammenfassung
In Kombination mit Audio- oder Text-Input kann das System laufend mitprotokollieren:
- Gesprächsnotizen in Meetings
- Anrufe mit Kunden
- Tagesprotokolle oder Projektverläufe
Diese Daten werden automatisch in das Qdrant-Gedächtnis eingespeist und sind damit später fragbar wie ein Assistent:
„Was hat Herr Meier nochmal zur Lieferung gesagt?“
„Wie war der Ablauf im Projekt XY?“
🧠 3. Persönlicher Coach oder Tagebuch-Assistent
Indem Du regelmäßig Gedanken, Stimmungen oder Entscheidungen notierst, kannst Du einen reflektierenden Begleiter erschaffen:
„Was war mein größter Fortschritt diesen Monat?“
„Wie habe ich damals auf Rückschläge reagiert?“
Das System lernt Dich über die Zeit kennen – und wird zu einem echten Spiegel, nicht nur zu einem Chatbot.
💼 4. Geschäftsanwendungen mit FileMaker
Wer – wie ich – FileMaker nutzt, kann dieses Setup direkt anbinden:
- Prompts aus FileMaker senden
- Antworten automatisch abrufen und speichern
- Gedächtniszugriffe direkt per REST-API oder Shell-Skript steuern
Dadurch entsteht eine extrem mächtige Kombination:
- FileMaker = Frontend, Benutzeroberfläche, Steuerzentrale
- Ollama = Sprachintelligenz
- Qdrant = semantisches Langzeitgedächtnis
Das Ergebnis: Eine echte KI-Komponente für FileMaker-Lösungen, lokal, sicher, individuell.
🛠️ 5. Unterstützung im Alltag: Erinnerungen, Ideen, Empfehlungen
„Erinnere mich nächste Woche an diese Idee“
„Welche Bücher habe ich Dir schon empfohlen?“
„Was könnte ich Herrn Müller als Nächstes anbieten?“
Mit gezielter Speicherlogik (Zeitstempel, Kategorien, Nutzer) kannst Du das Gedächtnis gezielt strukturieren und für viele Lebens- und Geschäftsbereiche nutzen.
🤖 6. Basis für ein Agentensystem
Wer weiter denkt, kann mit diesem Setup auch agentenähnliche Systeme bauen:
- KI übernimmt einfache Aufgaben
- KI erkennt Muster über Zeit
- KI gibt proaktiv Hinweise
Beispiel:
„Du hast diese Woche 4x dasselbe gefragt – willst Du Dir dazu eine Notiz speichern?“
„Auffällig viele Kunden haben dieses Produkt erwähnt – soll ich Dir das zusammenfassen?“
🌐 7. Integration mit anderen Tools
Das System lässt sich problemlos mit weiteren Werkzeugen verknüpfen:
- Neo4j, um semantische Beziehungen grafisch abzubilden
- Dateien & PDFs, um Inhalte automatisch zu indizieren
- Mailparser, um E-Mails zu analysieren und ins Gedächtnis zu schreiben
- Sprachassistenten, um via Sprache zu interagieren
🔐 8. Alles bleibt lokal – und unter Kontrolle
Der größte Vorteil: Du entscheidest, was gespeichert wird. Du entscheidest, wie lange es gespeichert bleibt. Und: Es verlässt niemals Deinen Rechner, wenn Du das nicht willst. In einer Welt, in der sich viele blind auf Cloud-KI verlassen, ist das ein starkes Gegengewicht – gerade für Selbständige, Entwickler, Autoren, Unternehmer.
Ollama + Qdrant zähmen: Wie man der lokalen KI Struktur, Regeln und Feintuning gibt
Wer sich die Mühe gemacht hat, Ollama und Qdrant lokal auf dem Mac zu installieren, der hat bereits Großes geleistet. Du hast jetzt:
- Eine lokale Sprach-KI
- Ein semantisches Gedächtnis
- Und eine funktionierende Pipeline, die Prompt → Gedächtnis → Ollama → Antwort abbildet
Doch wer damit arbeitet, merkt schnell: Es braucht Regeln. Struktur. Ordnung.
Denn ohne Steuerung wird aus Deinem Assistenten schnell ein Schwätzer, der sich zu viel merkt, sich ständig wiederholt oder irrelevante Erinnerungen heranzieht.
🧭 Was fehlt noch?
Ein Orchester hat auch einen Dirigenten. Und genau das ist jetzt Deine Aufgabe: Steuern statt nur nutzen.
Baustein 1: Ein „Router“ für die Gedächtnis-Logik
Statt stumpf alles zu speichern oder stumpf alles zu suchen, solltest Du vorab entscheiden, ob überhaupt etwas gespeichert oder geladen werden soll. Das geht zum Beispiel mit einem einfachen Relevanz-Router, den Du zwischen Prompt und Speicher setzt:
Beispiel: Relevanz prüfen per Prompt an Ollama selbst
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")
Du gibst Ollama also selbst die Aufgabe, seine Antwort zu bewerten – und nur wenn sie als relevant eingestuft wird, speicherst Du sie in Qdrant.
Baustein 2: Ältere Nachrichten ausschließen (Kontextbegrenzung)
Gerade bei längeren Sessions wird es problematisch, wenn alte Nachrichten immer wieder im Kontext auftauchen. Das Modell vergisst nicht – es verzettelt sich.
Lösung: Kontextfenster begrenzen.
Das kannst Du auf zwei Arten tun:
Methode 1: Begrenze die Anzahl der Treffer
context = search_memory(user_prompt, top_k=3)
Hier wird nur das semantisch Relevante geladen – nicht alles.
Methode 2: Begrenze die Zeit
# Nur Nachrichten der letzten 7 Tage now = datetime.utcnow() filter = Filter( must=[ FieldCondition(key="timestamp", range=Range(gte=now - timedelta(days=7))) ] )
Du kannst also zeitlich „abschneiden“, wenn das System zu weit in die Vergangenheit greift.
Baustein 3: Kontextgewichte und Labels einführen
Nicht jeder Eintrag im Gedächtnis ist gleichwertig. Du kannst ihnen Gewicht geben oder Kategorien:
- Fixiert (z. B. „Nutzer heißt Markus“)
- Temporär (z. B. „Heute ist Dienstag“)
- Situativ (z. B. „Chat von heute 10:30 Uhr“)
Qdrant unterstützt sogenannte Payloads – also zusätzliche Informationen pro Eintrag. Damit kannst Du später filtern oder priorisieren.
Baustein 4: Feintuning über den Prompt
Der Prompt selbst ist eine mächtige Steuerungseinheit.
Hier ein paar Tricks, wie Du ihn nutzen kannst, um Ollama klüger zu machen:
Beispiel-Prompt mit Anweisungen:
Du bist ein lokaler Assistent mit semantischem Gedächtnis. Wenn Du mehrere Erinnerungen findest, nutze nur die drei relevantesten. Beziehe Dich nicht auf Informationen, die älter als 10 Tage sind, es sei denn, sie sind explizit markiert. Ignoriere triviale Erinnerungen wie „Guten Morgen“ oder „Danke“. Antworte präzise und im Stil eines erfahrenen Beraters.
Damit kannst Du Feintuning direkt im Prompt selbst durchführen – ohne neue Modelle, ohne Training.
Und: Du kannst den Prompt dynamisch generieren – je nach Situation.
Baustein 5: Speicher-Hygiene
Wenn das Gedächtnis wächst, wird es unübersichtlich.
Ein einfaches Wartungsskript, das irrelevante oder doppelte Inhalte löscht, ist Gold wert.
Beispiel:
„Vergiss alles, was mit ‚Wetter‘ zu tun hat.“
„Lösche Einträge, die älter als 3 Monate sind und nie wieder abgerufen wurden.“
Qdrant unterstützt dies per API – und Du kannst es z. B. einmal pro Woche automatisieren.
Baustein 6: FileMaker als Steuerpult
Wenn Du – wie ich – mit FileMaker arbeitest, kannst Du all das per REST-API fernsteuern:
- Prompt senden
- Kontext abrufen
- Antwort empfangen
- Bewertung vornehmen lassen
- Speichern oder vergessen lassen
Dazu brauchst Du nur ein kleines REST-Modul in FileMaker (Insert from URL mit JSON) und ein paar Skripte.
Ergebnis: Eine Oberfläche, mit der Du Deine KI wie ein lebendiges Notizbuch kontrollierst – aber eben mit Intelligenz.
🔚 Fazit: KI ist nur so gut wie ihre Führung
Ollama ist mächtig. Qdrant ist flexibel. Aber ohne klare Regeln wird aus beidem ein unstrukturierter Haufen an Daten. Die Kunst besteht nicht darin, alles zu speichern – sondern darin, nur das Relevante verfügbar zu halten und gezielt zu denken statt nur zu erinnern.