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.
È 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
- Ollama è installiert e corre (→ es. ollama run mistral)
- Docker è installiert: https://www.docker.com/products/docker-desktop
- Python 3.9+
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)

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
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.
Nuova serie di articoli: le cronologie di ChatGPT come base di conoscenza per la vostra AI
Se avete già costruito la vostra memoria AI con Ollama e Qdrant, vale la pena di dare un'occhiata a una nuova serie di articoli che inizia proprio qui. Si tratta di come la Integrare l'esportazione dei dati di ChatGPT in questo sistema lascia. Molti utenti non si rendono conto di poter esportare l'intera cronologia delle chat e che questi dati sono una preziosa fonte di conoscenza. In questa serie, vi mostrerò come analizzare queste conversazioni, convertirle in embeddings e quindi importarle in un database vettoriale. In questo modo l'intelligenza artificiale locale può accedere alle conversazioni precedenti e utilizzarle come contesto per le risposte. In questo modo, un archivio di conoscenze personali cresce passo dopo passo a partire dai singoli dialoghi.
Domande frequenti
- Perché un'intelligenza artificiale locale ha bisogno di una „memoria“? Il modello linguistico non è sufficiente?
Un modello linguistico funziona solo con la richiesta corrente e il contesto che gli si sta fornendo. Non ricorda quindi in modo permanente conversazioni, documenti o informazioni precedenti. È proprio qui che entra in gioco la memoria locale. Un database aggiuntivo consente all'intelligenza artificiale di salvare i contenuti precedenti e di recuperarli quando necessario. In questo modo, il modello non solo riceve la domanda corrente, ma anche le informazioni pertinenti da questa memoria. In questo modo si ottengono risposte molto più coerenti e informate. Senza questo sistema, un modello linguistico rimane fondamentalmente un puro generatore di testo senza alcuna conoscenza a lungo termine dei dati o dei progetti dell'utente. - Che cos'è esattamente Qdrant e perché viene utilizzato in questo sistema?
Qdrant è un moderno database vettoriale sviluppato appositamente per le ricerche semantiche. A differenza dei database tradizionali, memorizza le informazioni non solo come testo, ma come cosiddetti vettori - rappresentazioni matematiche del significato. Ciò consente di ricercare i contenuti non solo per parole identiche, ma anche per prossimità di contenuti. Così, se si pone una domanda, Qdrant è in grado di trovare passaggi di testo adatti dalla propria base di conoscenze, anche se non contengono esattamente gli stessi termini. In combinazione con un modello linguistico, questo crea una sorta di memoria intelligente per l'IA. - Che cosa significa il termine „RAG“, spesso utilizzato in questo contesto?
RAG è l'acronimo di „Retrieval Augmented Generation“. Si tratta di una tecnica in cui un modello linguistico recupera informazioni aggiuntive da un database prima di fornire una risposta. Il modello, quindi, non solo genera la sua risposta a partire dall'addestramento, ma la integra anche con informazioni adeguate provenienti da una fonte di conoscenza. Questo metodo risolve un problema tipico dei modelli linguistici: Essi conoscono solo ciò che è stato appreso durante l'addestramento. RAG permette invece di accedere a dati attuali o personali, come la documentazione, i siti web o i propri appunti. - In che modo Ollama e Qdrant lavorano insieme?
In questa configurazione, Ollama assume il ruolo di modello linguistico, mentre Qdrant funge da memoria semantica. Quando l'utente pone una domanda, Qdrant cerca innanzitutto i frammenti di testo pertinenti. Questi risultati vengono poi passati al modello linguistico insieme alla domanda. Il modello utilizza queste informazioni aggiuntive per formulare una risposta fondata. La sequenza tipica è quindi: Prompt → Ricerca nella memoria → Espansione del contesto → Generazione della risposta. - Quali tipi di dati posso includere in questa memoria AI?
In pratica quasi tutto ciò che può essere convertito in testo. Si tratta di documentazione, siti web, file Markdown, PDF, voci di database o persino appunti personali. L'unica cosa importante è che il contenuto possa essere suddiviso in sezioni di testo più piccole prima di essere salvato nel database. Questi cosiddetti „pezzi“ costituiscono poi la base per la ricerca semantica. In questo modo l'intelligenza artificiale può accedere in modo specifico a singole sezioni rilevanti, invece di dover cercare in interi documenti. - Perché si utilizza un database vettoriale invece di una normale ricerca testuale?
I motori di ricerca classici lavorano di solito con le parole chiave. Ciò significa che trovano solo risultati che contengono esattamente gli stessi termini. Un database vettoriale, invece, cerca il significato. Può quindi trovare anche testi simili nel contenuto, anche se sono state usate altre parole. Questo è fondamentale per i sistemi di intelligenza artificiale, perché le domande sono spesso formulate in modo diverso dai documenti originali. Le ricerche semantiche rendono il collegamento tra domanda e risposta molto più affidabile. - Come vengono convertiti i testi in vettori?
A questo scopo si utilizzano i cosiddetti modelli di embedding. Questi modelli analizzano i testi e li convertono in vettori numerici che ne rappresentano il significato. Ogni sezione di testo riceve quindi una rappresentazione matematica nel cosiddetto spazio vettoriale. Contenuti simili sono più vicini tra loro rispetto ad argomenti completamente diversi. Se in seguito viene posta una domanda, anche questa viene convertita in un vettore. Qdrant può quindi trovare molto rapidamente le voci più simili nella memoria. - Perché Qdrant viene spesso utilizzato tramite Docker installiert?
Docker semplifica notevolmente l'installazione di software complessi. Invece di impostare manualmente molte singole dipendenze, Qdrant viene eseguito semplicemente in un container. Ciò significa che l'installazione funziona in modo affidabile su sistemi diversi e può essere avviata o interrotta facilmente. Questo metodo è particolarmente pratico su Mac perché mantiene il sistema pulito e fornisce allo stesso tempo un ambiente stabile per il database. - Posso utilizzare questo sistema completamente offline?
Sì, questo è uno dei maggiori vantaggi di questa architettura. Sia il modello linguistico che il database vettoriale vengono eseguiti localmente sul vostro computer. Ciò significa che nessun dato viene inviato a server esterni. Questo crea un ambiente di IA completamente privato. Si tratta di un vantaggio decisivo rispetto ai sistemi cloud, soprattutto per i dati sensibili o i documenti aziendali interni. - Quanto può diventare grande la memoria locale dell'intelligenza artificiale?
Ciò dipende soprattutto dallo spazio di archiviazione e dalle prestazioni del sistema. I moderni database vettoriali possono gestire facilmente milioni di frammenti di testo. Per molti progetti personali, tuttavia, sono sufficienti poche migliaia di documenti per creare un sistema di conoscenza molto potente. La qualità della struttura dei dati è più importante della quantità di informazioni. - L'intelligenza artificiale può davvero „imparare“ con questo sistema?
Non nel senso classico del termine. Il modello linguistico stesso non viene riqualificato. La conoscenza viene invece immagazzinata al di fuori del modello e recuperata quando necessario. Anche se in questo modo l'intelligenza artificiale sembra in grado di apprendere, in realtà accede solo a un archivio di conoscenze in continua crescita. Questo approccio ha un grande vantaggio: è possibile aggiungere nuove informazioni in qualsiasi momento senza dover riqualificare il modello. - Quali sono le applicazioni pratiche che derivano da una memoria AI locale di questo tipo?
Le possibilità sono incredibilmente varie. Ad esempio, è possibile creare un database di conoscenze personali, rendere ricercabile la documentazione tecnica o far analizzare i documenti interni dell'azienda. Anche autori, sviluppatori o ricercatori ne traggono vantaggio, perché possono rendere accessibili grandi quantità di informazioni in modo strutturato. In pratica, si crea una sorta di assistente di ricerca personale che comprende i vostri dati. - Posso integrare più fonti di dati contemporaneamente?
Sì, Qdrant consente di assegnare a ciascun frammento di testo metadati aggiuntivi, come la fonte, la categoria o la lingua. Ciò consente di gestire insieme database diversi. Questi metadati possono anche essere filtrati in modo specifico durante la ricerca. Ad esempio, l'intelligenza artificiale può considerare solo i contenuti di una specifica documentazione o di uno specifico progetto. - In cosa si differenzia questo sistema dai classici chatbot?
La maggior parte dei chatbot lavora esclusivamente con la conoscenza del set di dati di addestramento. Non possono quindi fornire informazioni specifiche sui contenuti dell'utente. Un sistema RAG, invece, combina un modello linguistico con una base di conoscenza individuale. Ciò consente all'IA di fornire risposte direttamente adattate ai dati dell'utente. Questo lo rende molto più utile per il lavoro produttivo. - Che ruolo ha Python in questa configurazione?
Python viene spesso utilizzato per controllare la connessione tra il modello linguistico e il database. Con pochi script è possibile leggere i testi, convertirli in vettori e salvarli in Qdrant. Python può anche eseguire la ricerca e trasferire i risultati trovati al modello linguistico. In questo modo si crea una pipeline flessibile che può essere personalizzata in base alle proprie esigenze. - La creazione di un sistema di questo tipo è riservata agli sviluppatori?
Non necessariamente. Sebbene la configurazione del sistema richieda una certa conoscenza tecnica, molti degli strumenti necessari sono diventati molto più semplici. Con un po' di pazienza, è possibile creare un sistema funzionante anche senza conoscenze approfondite di programmazione. Chiunque abbia avuto a che fare con questo sistema riconoscerà rapidamente l'enorme potenziale di queste infrastrutture di IA locali. - Quali sono i limiti di una memoria AI locale?
La limitazione più importante è la potenza di calcolo del proprio computer. Modelli di grandi dimensioni o enormi database di conoscenze possono richiedere più memoria e potenza di calcolo. La qualità delle risposte dipende anche dalla struttura dei dati. Se i documenti sono mal preparati, l'IA può fornire buoni risultati solo in misura limitata. - Perché questa combinazione di Ollama e Qdrant è considerata un'architettura particolarmente interessante per l'IA locale?
Perché riunisce due componenti fondamentali: un potente modello linguistico e un veloce database semantico. Insieme, creano un ambiente di lavoro AI completo che può essere gestito interamente a livello locale. Ciò consente di creare sistemi di conoscenza personali, motori di ricerca intelligenti o assistenti specializzati, senza dipendere dal cloud e con il pieno controllo dei propri dati.










