Ollama se reúne con Qdrant: una memoria local para tu IA en el Mac

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.


Cuestiones sociales de actualidad

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

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)

Qdrant en Docker bajo macOS Apple

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.


Encuesta actual sobre el uso de sistemas locales de IA

¿Qué opina de la ejecución local de programas de IA como MLX o Ollama?

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.

Nueva serie de artículos: Los historiales de ChatGPT como base de conocimientos para su IA

Exportación de datos ChatGPTSi ya has construido tu propia memoria de IA con Ollama y Qdrant, merece la pena que eches un vistazo a una nueva serie de artículos que empieza aquí mismo. Trata de cómo la Integrar la exportación de datos ChatGPT en este sistema permite. Muchos usuarios ni siquiera se dan cuenta de que pueden exportar todo su historial de chats, y de que estos datos son una valiosa fuente de conocimiento. En esta serie, te mostraré cómo analizar estas conversaciones, convertirlas en incrustaciones y luego importarlas a una base de datos vectorial. Esto permite a tu IA local acceder posteriormente a conversaciones anteriores y utilizarlas como contexto para las respuestas. De este modo, un archivo de conocimiento personal crece paso a paso a partir de diálogos individuales.


Artículos de actualidad sobre inteligencia artificial

Preguntas más frecuentes

  1. ¿Por qué necesita una IA local una „memoria“? ¿No basta con el modelo lingüístico?
    Un modelo lingüístico sólo funciona con la petición actual y el contexto que le estás dando en ese momento. Por lo tanto, no recuerda permanentemente conversaciones, documentos o información anteriores. Aquí es donde entra en juego la memoria local. Una base de datos adicional permite a la IA guardar contenidos anteriores y recuperarlos cuando sea necesario. De este modo, el modelo no sólo recibe su pregunta actual al responder, sino también la información pertinente de esta memoria. El resultado son respuestas mucho más coherentes y fundamentadas. Sin un sistema de este tipo, un modelo lingüístico sigue siendo básicamente un puro generador de texto sin ningún conocimiento a largo plazo de tus propios datos o proyectos.
  2. ¿Qué es exactamente Qdrant y por qué se utiliza en este sistema?
    Qdrant es una moderna base de datos vectorial especialmente desarrollada para búsquedas semánticas. A diferencia de las bases de datos tradicionales, almacena la información no sólo como texto, sino como los llamados vectores, representaciones matemáticas del significado. Esto le permite buscar contenido no sólo por palabras idénticas, sino también por proximidad de contenido. Así, si se formula una pregunta, Qdrant puede encontrar pasajes de texto adecuados de su base de conocimientos, aunque no contengan exactamente los mismos términos. En combinación con un modelo lingüístico, esto crea una especie de memoria inteligente para la IA.
  3. ¿Qué significa el término „GAR“, que se utiliza a menudo en este contexto?
    RAG son las siglas de „Retrieval Augmented Generation“ (generación aumentada de recuperación). Se trata de una técnica en la que un modelo lingüístico recupera información adicional de una base de datos antes de dar una respuesta. Así, el modelo no sólo genera su respuesta a partir del entrenamiento, sino que la complementa con información adecuada procedente de una fuente de conocimiento. Este método resuelve un problema típico de los modelos lingüísticos: Sólo conocen lo aprendido durante el entrenamiento. En cambio, RAG les permite acceder a datos actuales o personales, como documentación, sitios web o sus propias notas.
  4. ¿Cómo funcionan juntos Ollama y Qdrant?
    En esta configuración, Ollama asume el papel de modelo lingüístico, mientras que Qdrant actúa como memoria semántica. Cuando haces una pregunta, Qdrant busca primero fragmentos de texto relevantes. Los resultados se transmiten al modelo lingüístico junto con la pregunta. El modelo utiliza esta información adicional para formular una respuesta fundamentada. Por lo tanto, la secuencia típica es: Pregunta → Búsqueda en la memoria → Ampliar contexto → Generar respuesta.
  5. ¿Qué tipos de datos puedo incluir en esta memoria de IA?
    Básicamente, casi cualquier cosa que pueda convertirse en texto. Esto incluye documentación, sitios web, archivos Markdown, PDF, entradas de bases de datos o incluso notas personales. Lo único importante es que el contenido pueda dividirse en secciones de texto más pequeñas antes de guardarlo en la base de datos. Estos „trozos“ constituyen la base de la búsqueda semántica. Esto permite a la IA acceder específicamente a secciones individuales relevantes en lugar de tener que buscar en documentos enteros.
  6. ¿Por qué se utiliza una base de datos vectorial en lugar de una búsqueda de texto normal?
    Los motores de búsqueda clásicos suelen trabajar con palabras clave. Esto significa que sólo encuentran resultados que contengan exactamente los mismos términos. En cambio, una base de datos vectorial busca por significado. Por tanto, también puede encontrar textos similares en contenido, aunque se hayan utilizado otras palabras. Esto es crucial para los sistemas de IA, porque las preguntas suelen formularse de forma diferente a los documentos originales. Las búsquedas semánticas hacen que el vínculo entre pregunta y respuesta sea mucho más fiable.
  7. ¿Cómo se convierten los textos en vectores?
    Para ello se utilizan los llamados modelos de incrustación. Estos modelos analizan los textos y los convierten en vectores numéricos que representan su significado. Cada sección del texto recibe así una representación matemática en lo que se conoce como espacio vectorial. Los contenidos similares están más cerca unos de otros que los temas completamente diferentes. Si posteriormente se formula una pregunta, ésta también se convierte en un vector. Qdrant puede entonces encontrar muy rápidamente las entradas más similares en la memoria.
  8. ¿Por qué se suele utilizar Qdrant a través de Docker installiert?
    Docker simplifica considerablemente la instalación de software complejo. En lugar de configurar manualmente muchas dependencias individuales, Qdrant simplemente se ejecuta en un contenedor. Esto significa que la instalación funciona de forma fiable en diferentes sistemas y se puede iniciar o detener fácilmente. Este método es particularmente práctico en Mac porque mantiene el sistema limpio y proporciona un entorno estable para la base de datos al mismo tiempo.
  9. ¿Puedo utilizar este sistema completamente desconectado?
    Sí, ésa es una de las mayores ventajas de esta arquitectura. Tanto el modelo lingüístico como la base de datos vectorial se ejecutan localmente en su propio ordenador. Esto significa que no se envían datos a servidores externos. Esto crea un entorno de IA completamente privado. Se trata de una ventaja decisiva frente a los sistemas en la nube, especialmente para datos sensibles o documentos internos de la empresa.
  10. ¿Cómo de grande puede llegar a ser esa memoria local de la IA?
    Esto depende sobre todo del espacio de almacenamiento y del rendimiento del sistema. Las bases de datos vectoriales modernas pueden gestionar fácilmente millones de fragmentos de texto. Para muchos proyectos personales, sin embargo, bastan unos pocos miles de documentos para crear un sistema de conocimiento muy potente. La calidad de la estructura de datos es más importante que la cantidad de información.
  11. ¿Puede la IA „aprender“ realmente con este sistema?
    No en el sentido clásico. El modelo lingüístico en sí no se vuelve a entrenar. El conocimiento se almacena fuera del modelo y se recupera cuando es necesario. De este modo, la inteligencia artificial parece capaz de aprender, pero en realidad sólo accede a un almacén de conocimientos cada vez mayor. Este enfoque tiene una gran ventaja: se puede añadir nueva información en cualquier momento sin tener que volver a entrenar el modelo.
  12. ¿Qué aplicaciones prácticas se derivan de una memoria local de IA de este tipo?
    Las posibilidades son increíblemente diversas. Por ejemplo, puede crear una base de datos de conocimientos personales, hacer que la documentación técnica sea consultable o que se analicen documentos internos de la empresa. Autores, desarrolladores o investigadores también se benefician de ello porque pueden hacer accesibles grandes cantidades de información de forma estructurada. Básicamente, se crea una especie de asistente personal de investigación que entiende sus propios datos.
  13. ¿Puedo integrar varias fuentes de datos al mismo tiempo?
    Sí, Qdrant permite dotar a cada fragmento de texto de metadatos adicionales, como fuente, categoría o idioma. Esto permite gestionar conjuntamente diferentes bases de datos. Estos metadatos pueden incluso filtrarse específicamente durante la búsqueda. Por ejemplo, la IA sólo puede tener en cuenta el contenido de una documentación específica o de un proyecto concreto.
  14. ¿En qué se diferencia este sistema de los chatbots clásicos?
    La mayoría de los chatbots trabajan exclusivamente con el conocimiento de su conjunto de datos de entrenamiento. Por tanto, no pueden proporcionar información específica sobre su propio contenido. Un sistema RAG, en cambio, combina un modelo lingüístico con una base de conocimientos individual. Esto permite a la IA ofrecer respuestas directamente adaptadas a sus propios datos. Esto la hace mucho más útil para el trabajo productivo.
  15. ¿Qué papel desempeña Python en esta configuración?
    Python se utiliza a menudo para controlar la conexión entre el modelo lingüístico y la base de datos. Con unos pocos scripts se pueden leer textos, convertirlos en vectores y guardarlos en Qdrant. Python también puede realizar la búsqueda y transferir los resultados encontrados al modelo lingüístico. De este modo se crea un proceso flexible que puede adaptarse a las necesidades del usuario.
  16. ¿Crear un sistema de este tipo es sólo cosa de desarrolladores?
    No necesariamente. Aunque la configuración del sistema requiere ciertos conocimientos técnicos, muchas de las herramientas necesarias son ahora mucho más sencillas. Con un poco de paciencia, se puede montar un sistema que funcione incluso sin tener conocimientos profundos de programación. Cualquiera que se haya ocupado de ello alguna vez reconocerá rápidamente el enorme potencial de estas infraestructuras locales de IA.
  17. ¿Cuáles son los límites de la memoria local de la IA?
    La limitación más importante es la potencia de cálculo de tu propio ordenador. Los grandes modelos o las enormes bases de datos de conocimientos pueden requerir más memoria y potencia de CPU. La calidad de las respuestas también depende en gran medida de la estructura de los datos. Si los documentos están mal preparados, la IA sólo puede ofrecer buenos resultados hasta cierto punto.
  18. ¿Por qué se considera que esta combinación de Ollama y Qdrant es una arquitectura especialmente interesante para la IA local?
    Porque reúne dos componentes cruciales: un potente modelo lingüístico y una rápida base de datos semántica. Juntos, crean un entorno de trabajo de IA completo que puede funcionar de forma totalmente local. Esto permite crear sistemas de conocimiento personales, motores de búsqueda inteligentes o asistentes especializados, sin depender de la nube y con pleno control sobre sus propios datos.

Artículos de actualidad sobre arte y cultura

Deja un comentario