IA local con memoria: sin nube, sin suscripción, sin distracciones
En un artículos anteriores He explicado cómo configurar Ollama en el Mac install. Si ya has completado este paso, ahora tienes un potente modelo de lenguaje local - como Mistral, LLaMA3 u otro modelo compatible que se puede abordar a través de REST API.
Sin embargo, el modelo sólo "sabe" lo que hay en la solicitud actual. No recuerda conversaciones anteriores. Lo que falta es un recuerdo.
Precisamente por eso utilizamos Qdrant, una moderna base de datos semántica de vectores.
En este artículo te lo mostraré paso a paso:
- cómo installier Qdrant en el Mac (vía Docker)
- Cómo crear incrustaciones con Python
- cómo guardar, buscar e integrar contenidos en el flujo de trabajo Ollama
- y cómo es una secuencia completa de pregunta→memoria→respuesta
¿Por qué Qdrant?
Qdrant no almacena textos tradicionales, sino vectores que representan el significado de un texto como un código numérico. Esto significa que el contenido no solo puede encontrarse con exactitud, sino también con similitud semántica, aunque las palabras varíen.
Ollama + Qdrant por lo tanto resulta:
Un modelo de lenguaje local con memoria a largo plazo: seguro, controlable y ampliable.
Requisitos previos
- Ollama es installiert y se ejecuta (→ por ejemplo, ollama ejecutar mistral).
- Docker es installiert: https://www.docker.com/products/docker-desktop
- Python 3.9+
Paqueteinstallación de Qdrant:
pip install qdrant-client sentence-transformers
Iniciar Qdrant (Docker)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
A continuación, Qdrant se ejecuta:
http://localhost:6333 (API REST)
http://localhost:6334 (gRPC, no es necesario para este artículo)

Ejemplo en Python para Ollama + Qdrant
Ahora escribimos un sencillo script básico que:
- acepta la solicitud del usuario
- genera un vector de incrustación a partir de este
- busca memorias semánticamente similares en Qdrant
- la respuesta se genera con contexto a través de Ollama
- guarda la nueva conversación como recordatorio
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()
Notas sobre la práctica
También puede utilizar sus propios modelos de incrustación, por ejemplo, a través de Ollama (por ejemplo, nomic-embed-text) o los modelos Hugging Face
Qdrant admite filtros de carga útil, periodos de tiempo y campos (¡muy útil para ampliaciones posteriores!)
El hash(text)-ID es suficiente para pruebas sencillas, para aplicaciones profesionales debería utilizar UUIDs
IA local con memoria - y lo que puede hacer con ella
En los capítulos anteriores, te mostré cómo construir una memoria de IA real y local en un Mac con Ollama y Qdrant. Una configuración que funciona sin la nube, sin suscripción y sin servidores externos: rápida, segura y privada.
¿Y ahora qué?
¿Para qué puede utilizarse realmente esta tecnología? ¿Qué se puede hacer con ella hoy, mañana y pasado mañana?
La respuesta: bastante.
Porque lo que tenemos aquí es algo más que un chatbot. Es una máquina de pensar independiente de la plataforma y con memoria a largo plazo. Y eso abre puertas.
🔍 1. base de datos de conocimientos personales
Puedes utilizar Ollama + Qdrant como tu memoria personal a largo plazo.
Documentos, notas de conversaciones, ideas... todo lo que le cuentes puede almacenarse y recuperarse semánticamente.
Ejemplo:
"¿Cuál era mi idea de negocio del jueves pasado?"
"¿Qué clientes querían una actualización en marzo?"
En lugar de buscar en carpetas, basta con preguntar al sistema. Lo más interesante es que también funciona con preguntas imprecisas porque Qdrant busca semánticamente, no solo por palabras clave.
📄 2. registro y resumen automáticos
En combinación con la entrada de audio o de texto, el sistema puede mantener un registro continuo:
- Notas en las reuniones
- Llamadas con clientes
- Registros diarios o historiales de proyectos
Estos datos se introducen automáticamente en la memoria de Qdrant, por lo que pueden consultarse posteriormente como un asistente:
"¿Qué dijo el Sr. Meier sobre la entrega de nuevo?"
"¿Cómo fue el proceso en el proyecto XY?"
🧠 3. entrenador personal o asistente de agenda
Si anotas regularmente tus pensamientos, estados de ánimo o decisiones, podrás crear un compañero de reflexión:
"¿Cuál ha sido mi mayor progreso este mes?"
"¿Cómo reaccionaba entonces ante los contratiempos?".
El sistema llega a conocerte con el tiempo y se convierte en un espejo real, no sólo en un chatbot.
💼 4. aplicaciones empresariales con FileMaker
Si, como yo, utilizas FileMaker, puedes conectar esta configuración directamente:
- Enviar mensajes desde FileMaker
- Recuperar y guardar respuestas automáticamente
- Controle el acceso a la memoria directamente a través de REST API o shell script
Esto crea una combinación extremadamente potente:
- FileMaker = Front end, interfaz de usuario, centro de control
- Ollama = Inteligencia lingüística
- Qdrant = memoria semántica a largo plazo
El resultado: un auténtico componente de IA para las soluciones FileMaker: local, seguro y personalizado.
🛠️ 5. Apoyo en la vida cotidiana: recordatorios, ideas, recomendaciones
"Recuérdame esta idea la semana que viene"
"¿Qué libros te he recomendado ya?"
"¿Qué podría ofrecerle al Sr. Müller a continuación?"
Con una lógica de memoria específica (marcas de tiempo, categorías, usuarios), puedes estructurar tu memoria de forma específica y utilizarla para muchos ámbitos de la vida y los negocios.
🤖 6. bases para un sistema de agentes
Si piensas en el futuro, también puedes construir sistemas similares a los agentes con esta configuración:
- La IA se encarga de tareas sencillas
- La IA reconoce patrones a lo largo del tiempo
- La IA da pistas proactivas
Ejemplo:
"Ha hecho la misma pregunta cuatro veces esta semana: ¿quiere guardar una nota?".
"Un llamativo número de clientes ha mencionado este producto: ¿se lo resumo?".
🌐 7. integración con otras herramientas
El sistema puede conectarse fácilmente con otras herramientas:
- Neo4jrepresentar gráficamente las relaciones semánticas
- Archivos y PDFpara indexar contenidos automáticamente
- Analizador de correoanalizar y memorizar correos electrónicos
- Asistentes de vozinteractuar por voz
🔐 8. todo sigue siendo local - y bajo control
La mayor ventaja: tú decides lo que se guarda. Tú decides cuánto tiempo se guarda. Y: nunca sale de tu ordenador si tú no quieres. En un mundo en el que mucha gente confía ciegamente en la IA en la nube, esto es un poderoso contrapeso, especialmente para autónomos, desarrolladores, autores y emprendedores.
Doma Ollama + Qdrant: Cómo dotar a tu IA local de estructura, reglas y ajuste
Cualquiera que se haya tomado la molestia de instalar Ollama y Qdrant localmente en el Mac ya ha conseguido grandes cosas. Ahora tienes:
- Una IA en lengua local
- Una memoria semántica
- Y una cadena de procesos que asigne Preguntar → Memoria → Ollama → Respuesta.
Pero cualquiera que trabaje con ella se da cuenta enseguida: necesita normas. Estructura. Orden.
Porque sin control, su asistente se convertirá rápidamente en un charlatán que recuerda demasiado, se repite constantemente o saca a relucir recuerdos irrelevantes.
🧭 ¿Qué falta todavía?
Una orquesta también tiene un director. Y ese es exactamente tu trabajo ahora: controlar en lugar de solo utilizar.
Módulo 1: Un "router" para la lógica de la memoria
En lugar de guardarlo todo o buscarlo todo sin más, deberías decidir de antemano si algo debe guardarse o cargarse. Puedes hacerlo, por ejemplo, con un simple enrutador de relevancia que colocas entre el prompt y la memoria:
EjemploCompruebe la relevancia a través de la consulta al propio Ollama
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")
Así que le das a Ollama la tarea de evaluar su respuesta - y sólo si es clasificada como relevante la guardas en Qdrant.
Módulo 2: Excluir mensajes antiguos (limitación de contexto)
Sobre todo en las sesiones más largas, resulta problemático que los mensajes antiguos sigan reapareciendo en el contexto. El modelo no olvida, sino que se atasca.
SoluciónLimitar la ventana contextual.
Puede hacerlo de dos maneras:
Método 1Limitar el número de aciertos
context = search_memory(user_prompt, top_k=3)
Aquí sólo se carga lo que es semánticamente relevante, no todo.
Método 2: Limitar el tiempo
# Nur Nachrichten der letzten 7 Tage now = datetime.utcnow() filter = Filter( must=[ FieldCondition(key="timestamp", range=Range(gte=now - timedelta(days=7))) ] )
Por tanto, puede "cortar" el tiempo si el sistema llega demasiado lejos en el pasado.
Módulo 3: Introducción a los pesos contextuales y las etiquetas
No todas las entradas de tu memoria tienen el mismo valor. Puedes darles peso o categorías:
- Fijo (por ejemplo, "El usuario se llama Markus")
- Temporal (por ejemplo, "Hoy es martes")
- Situacional (por ejemplo, "Chat a partir de hoy a las 10:30 horas")
Qdrant admite las llamadas cargas útiles, es decir, información adicional por entrada. Esto permite filtrar o priorizar posteriormente.
Módulo 4: Puesta a punto mediante el prompt
El propio indicador es una potente unidad de control.
Aquí tienes algunos trucos que puedes utilizar para que Ollama sea más inteligente:
Ejemplo de aviso con instrucciones:
Eres un asistente local con memoria semántica. Si encuentra varios recuerdos, utilice sólo los tres más relevantes. No haga referencia a información de más de 10 días de antigüedad a menos que esté explícitamente marcada. Ignore los recordatorios triviales como "Buenos días" o "Gracias". Responda con precisión y con el estilo de un consejero experimentado.
Esto le permite realizar el ajuste fino directamente en el propio prompt, sin nuevos modelos, sin formación.
Y: puede generar el aviso dinámicamente, en función de la situación.
Módulo 5: Higiene del almacenamiento
A medida que la memoria crece, se vuelve confusa.
Un simple script de mantenimiento que elimine contenido irrelevante o duplicado vale su peso en oro.
Ejemplo:
"Olvida todo lo que tenga que ver con el 'tiempo'".
"Borrar entradas que tengan más de 3 meses y nunca se hayan recuperado".
Qdrant lo soporta vía API - y puedes automatizarlo una vez a la semana, por ejemplo.
Módulo 6: FileMaker como panel de control
Si, como yo, trabajas con FileMaker, puedes controlar todo esto de forma remota a través de REST-API:
- Enviar puntualmente
- Recuperar contexto
- Respuesta recibida
- Realizar una valoración
- Guardar u olvidar
Todo lo que necesita es un pequeño módulo REST en FileMaker (Insertar desde URL con JSON) y algunos scripts.
El resultado: una interfaz que te permite controlar tu IA como si fuera un cuaderno viviente, pero con inteligencia.
🔚 Conclusión: la IA es tan buena como su liderazgo
Ollama es potente. Qdrant es flexible. Pero sin reglas claras, ambos se convierten en un montón de datos desestructurados. El truco no está en almacenarlo todo, sino en conservar sólo lo que es relevante y pensar de forma específica en lugar de limitarse a recordar.


