Ollama incontra Qdrant: una memoria locale per la vostra AI su Mac

IA locale con memoria - senza cloud, senza abbonamento, senza distrazioni

In un articoli precedenti Ho spiegato come configurare l'Ollama sul Mac install. Se avete già completato questo passaggio, ora disponete di un potente modello di lingua locale, come Mistral, LLaMA3 o un altro modello compatibile che può essere indirizzato tramite API REST.

Tuttavia, il modello "sa" solo cosa c'è nel prompt corrente. Non ricorda le conversazioni precedenti. Ciò che manca è la memoria.


Argomenti attuali sull'intelligenza artificiale

È proprio per questo che utilizziamo Qdrant, un moderno database vettoriale semantico.
In questo articolo vi mostrerò passo dopo passo:

  • come installier Qdrant su Mac (via Docker)
  • come creare embeddings con Python
  • come salvare, cercare e integrare i contenuti nel flusso di lavoro Ollama
  • e come appare una sequenza completa di prompt→memoria→risposta

Perché Qdrant?

Qdrant non memorizza testi tradizionali, ma vettori che rappresentano il significato di un testo come codice numerico. Ciò significa che il contenuto non solo può essere trovato esattamente, ma anche semanticamente simile, anche se le parole variano.

Ollama + Qdrant risulta quindi:

Un modello linguistico locale con memoria a lungo termine - sicuro, controllabile ed espandibile.

Prerequisiti

Pacchettoinstallazione da Qdrant:

pip install qdrant-client sentence-transformers

Avviare Qdrant (Docker)

docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

Qdrant si avvia quindi:

http://localhost:6333 (API REST)

http://localhost:6334 (gRPC, non necessario per questo articolo)

Qdrant su Docker sotto Apple macOS

Esempio di Python per Ollama + Qdrant

Scriviamo ora un semplice script di base che:

  • accetta il prompt dell'utente
  • genera un vettore di incorporamento a partire da questo
  • ricerca di memorie semanticamente simili in Qdrant
  • la risposta viene generata con il contesto tramite Ollama
  • salva la nuova conversazione come promemoria
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()

Note sulla pratica

È anche possibile utilizzare i propri modelli di incorporamento, ad esempio tramite Ollama (ad esempio nomic-embed-text) o i modelli Hugging Face.

Qdrant supporta filtri per il carico utile, periodi di tempo e campi (molto utile per un'espansione successiva!)

L'hash(text)-ID è sufficiente per semplici test, per applicazioni professionali si dovrebbero usare gli UUID.

L'intelligenza artificiale locale con la memoria e le sue possibilità di utilizzo

Nei capitoli precedenti vi ho mostrato come costruire una vera memoria AI locale su un Mac con Ollama e Qdrant. Una configurazione che funziona senza cloud, senza abbonamento e senza server esterni - veloce, sicura e privata.

E adesso?

A cosa può servire questa tecnologia? Cosa è possibile fare con essa - oggi, domani, dopodomani?

La risposta è: molto.

Perché quello che avete qui è più di un semplice chatbot. È una macchina pensante indipendente dalla piattaforma con una memoria a lungo termine. E questo apre le porte.

🔍 1. database di conoscenze personali

È possibile utilizzare Ollama + Qdrant come memoria personale a lungo termine.
Documenti, appunti di conversazioni, idee: tutto ciò che gli dite può essere archiviato e recuperato in modo semantico.

Esempio:

"Qual era la mia idea imprenditoriale di giovedì scorso?".

"Quali clienti hanno voluto un aggiornamento a marzo?".

Invece di cercare tra le cartelle, basta chiedere al sistema. L'aspetto particolarmente interessante è che funziona anche con domande imprecise, perché Qdrant effettua ricerche semantiche, non solo per parole chiave.

📄 2. registrazione e riepilogo automatici

In combinazione con l'input audio o di testo, il sistema può tenere un registro di funzionamento:

  • Note durante le riunioni
  • Chiamate con i clienti
  • Diari giornalieri o cronologie di progetto

Questi dati vengono inseriti automaticamente nella memoria di Qdrant e possono quindi essere interrogati in seguito come un assistente:

"Cosa ha detto il signor Meier a proposito della consegna?".

"Com'è stato il processo del progetto XY?".

🧠 3. personal coach o assistente di agenda

Annotando regolarmente pensieri, stati d'animo o decisioni, si può creare un compagno di riflessioni:

"Qual è stato il mio più grande progresso di questo mese?".

"Come reagivo allora alle battute d'arresto?".

Il sistema impara a conoscervi nel tempo e diventa un vero e proprio specchio, non solo un chatbot.

💼 4. applicazioni aziendali con FileMaker

Se, come me, utilizzate l'FileMaker, potete collegare direttamente questa configurazione:

  • Inviare messaggi da FileMaker
  • Recupero e salvataggio automatico delle risposte
  • Controllo dell'accesso alla memoria direttamente tramite API REST o script di shell

Questo crea una combinazione estremamente potente:

  • FileMaker = Front-end, interfaccia utente, centro di controllo
  • Ollama = Intelligenza linguistica
  • Qdrant = memoria semantica a lungo termine

Il risultato: una vera e propria componente AI per le soluzioni FileMaker - locale, sicura e personalizzata.

🛠️ 5. Sostegno nella vita quotidiana: promemoria, idee, raccomandazioni

"Ricordatemi questa idea la prossima settimana".

"Quali libri le ho già consigliato?".

"Cosa potrei offrire al signor Müller dopo?".

Con una logica di memoria mirata (orari, categorie, utenti), è possibile strutturare la memoria in modo mirato e utilizzarla in molti ambiti della vita e del lavoro.

🤖 6. base per un sistema ad agenti

Se si pensa al futuro, è possibile costruire sistemi simili ad agenti con questa configurazione:

  • L'intelligenza artificiale si occupa di compiti semplici
  • L'intelligenza artificiale riconosce i modelli nel tempo
  • L'intelligenza artificiale fornisce suggerimenti proattivi

Esempio:

"Questa settimana hai fatto la stessa domanda quattro volte: vuoi salvare una nota?".

"Un numero impressionante di clienti ha parlato di questo prodotto: posso riassumerlo per voi?".

🌐 7. integrazione con altri strumenti

Il sistema può essere facilmente collegato ad altri strumenti:

  • Neo4jper rappresentare graficamente le relazioni semantiche
  • File e PDFper indicizzare automaticamente i contenuti
  • Parser della postaanalizzare e memorizzare le e-mail
  • Assistenti vocaliinteragire con la voce

🔐 8. tutto rimane locale - e sotto controllo

Il vantaggio più grande: siete voi a decidere cosa salvare. Decidete voi per quanto tempo deve essere salvato. E: non lascia mai il vostro computer se non lo volete. In un mondo in cui molte persone si affidano ciecamente all'intelligenza artificiale del cloud, questo è un potente contrappeso, soprattutto per freelance, sviluppatori, autori e imprenditori.


Indagine in corso sull'uso dei sistemi di intelligenza artificiale locali

Cosa ne pensate del software di intelligenza artificiale in esecuzione locale, come MLX o Ollama?

Addomesticare Ollama + Qdrant: Come dare alla propria IA locale struttura, regole e regolazione fine

Chiunque si sia preso la briga di installare Ollama e Qdrant in locale sul Mac ha già ottenuto grandi risultati. Ora avete:

  • Una lingua locale AI
  • Una memoria semantica
  • E una pipeline funzionante che mappa Prompt → Memoria → Ollama → Risposta

Ma chi ci lavora si rende subito conto che ha bisogno di regole. Di struttura. Di ordine.
Perché senza controllo, il vostro assistente si trasformerà rapidamente in un chiacchierone che ricorda troppe cose, si ripete continuamente o tira fuori ricordi irrilevanti.

🧭 Cosa manca ancora?

Un'orchestra ha anche un direttore. Ed è proprio questo il vostro compito: controllare e non solo utilizzare.

Modulo 1: Un "router" per la logica della memoria

Invece di salvare tutto o cercare tutto, si dovrebbe decidere in anticipo se salvare o caricare qualcosa. È possibile farlo, ad esempio, con un semplice router di rilevanza da collocare tra il prompt e la memoria:

EsempioVerificare la pertinenza tramite la richiesta all'Ollama stesso

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")

Quindi si dà a Ollama il compito di valutare la sua risposta e solo se viene classificata come rilevante la si salva in Qdrant.

Modulo 2: Escludere i messaggi più vecchi (limitazione del contesto)

In particolare, con le sessioni più lunghe, diventa problematico se i vecchi messaggi continuano a riapparire nel contesto. Il modello non dimentica, ma si impantana.

SoluzioneLimitare la finestra di contesto.

È possibile farlo in due modi:

Metodo 1Limitare il numero di riscontri

context = search_memory(user_prompt, top_k=3)

Qui viene caricato solo ciò che è semanticamente rilevante, non tutto.

Metodo 2Limitare il tempo

# Nur Nachrichten der letzten 7 Tage
now = datetime.utcnow()
filter = Filter(
must=[
FieldCondition(key="timestamp", range=Range(gte=now - timedelta(days=7)))
]
)

È quindi possibile "tagliare" il tempo se il sistema si spinge troppo nel passato.

Modulo 3: Introduzione ai pesi e alle etichette del contesto

Non tutte le voci della memoria hanno lo stesso valore. Potete attribuire loro un peso o delle categorie:

  • Fisso (ad esempio "L'utente si chiama Markus")
  • Temporaneo (ad es. "Oggi è martedì")
  • Situazione (ad es. "Chat da oggi 10:30")

Qdrant supporta i cosiddetti payload, ossia informazioni aggiuntive per ogni voce. Ciò consente di filtrare o assegnare priorità in un secondo momento.

Modulo 4: Messa a punto attraverso il prompt

Il prompt stesso è una potente unità di controllo.
Ecco alcuni trucchi per rendere più intelligente Ollama:

Esempio di prompt con istruzioni:

Siete un assistente locale con una memoria semantica. Se trovate diverse memorie, utilizzate solo le tre più rilevanti. Non fate riferimento a informazioni più vecchie di 10 giorni, a meno che non siano esplicitamente segnalate. Ignorate promemoria banali come "Buongiorno" o "Grazie". Rispondete in modo preciso e con lo stile di un consulente esperto.

Ciò consente di effettuare la messa a punto direttamente nel prompt stesso, senza nuovi modelli e senza formazione.

E: è possibile generare il prompt in modo dinamico, a seconda della situazione.

Modulo 5: Igiene della conservazione

Man mano che la memoria cresce, diventa confusa.
Un semplice script di manutenzione che cancelli i contenuti irrilevanti o duplicati vale tanto oro quanto pesa.

Esempio:

"Dimenticate tutto ciò che ha a che fare con il 'tempo'".

"Eliminare le voci più vecchie di 3 mesi che non sono mai state recuperate".

Qdrant supporta questa operazione tramite API e può essere automatizzata, ad esempio, una volta alla settimana.

Modulo 6: FileMaker come pannello di controllo

Se, come me, lavorate con FileMaker, potete controllare tutto questo da remoto tramite REST-API:

  • Inviare tempestivamente
  • Recuperare il contesto
  • Risposta ricevuta
  • Effettuare una valutazione
  • Salvare o dimenticare

Tutto ciò che serve è un piccolo modulo REST in FileMaker (inserimento da URL con JSON) e alcuni script.

Il risultato: un'interfaccia che consente di controllare l'IA come un notebook vivente, ma con intelligenza.

🔚 Conclusione: l'IA è buona solo quanto la sua leadership

Ollama è potente. Qdrant è flessibile. Ma senza regole chiare, entrambi diventano un mucchio di dati non strutturati. Il trucco non consiste nell'archiviare tutto, ma nel tenere a disposizione solo ciò che è rilevante e nel pensare in modo mirato anziché limitarsi a ricordare.

Lascia un commento