En los artículos anteriores hemos construido poco a poco las capacidades de un agente de IA. Comenzamos explicando qué es un agente y cómo se diferencia de un chatbot. Después vimos cómo puede razonar, planificar y utilizar herramientas para interactuar con el mundo real.
También aprendimos que un agente puede conectarse a APIs, buscar información en internet, ejecutar código con Python, consultar bases de datos y procesar documentos. Más recientemente vimos cómo los agentes multimodales pueden trabajar con imágenes y otros tipos de información.
Sin embargo, existe una pregunta importante: ¿cómo puede un agente recordar información después de que termina una conversación?
Durante una conversación, un modelo puede utilizar el contexto que tiene disponible para mantener cierta continuidad. Pero ese contexto tiene límites. Si queremos construir un agente que pueda trabajar durante semanas, meses o incluso años con diferentes usuarios y documentos, necesitamos una forma de almacenar información externamente.
Aquí es donde aparecen las bases de datos vectoriales.
Estas tecnologías permiten almacenar representaciones numéricas de información y posteriormente recuperar los elementos que sean más relevantes para una determinada pregunta. Son una pieza fundamental de muchas arquitecturas modernas de memoria y recuperación de información para agentes de IA.
1. ¿Qué es la memoria persistente?
En el artículo sobre memoria de los agentes vimos que no toda la información que utiliza un agente tiene que permanecer solamente dentro de la conversación actual.
La memoria persistente significa que cierta información puede mantenerse almacenada después de que finaliza una interacción.
Por ejemplo, imaginemos un agente utilizado como asistente para un proyecto de programación.
Durante una conversación, el usuario puede decir:
"Mi proyecto utiliza Flask y SQLite."
Si el agente solamente conserva el contexto de esa conversación, posiblemente tendrá que recibir nuevamente esa información en una sesión posterior.
Pero si el sistema dispone de memoria persistente, puede almacenar ese dato y recuperarlo posteriormente.
Días después, el usuario podría preguntar:
"¿Cómo agrego una nueva tabla a mi proyecto?"
El agente puede recuperar el contexto relacionado con el proyecto y entender que está trabajando con Flask y SQLite.
La memoria persistente permite construir agentes que mantienen continuidad a través del tiempo.
2. ¿Por qué no utilizar simplemente una base de datos tradicional?
Una pregunta lógica sería: si queremos guardar información, ¿por qué no utilizar una base de datos SQL convencional?
En muchos casos, sí podemos utilizarla.
Por ejemplo, una base de datos tradicional es excelente para almacenar información estructurada:
| Usuario | Edad | Ciudad | Tipo |
|---|---|---|---|
| Ana | 25 | CDMX | Cliente |
| Luis | 31 | Puebla | Técnico |
Si queremos encontrar todos los usuarios de cierta ciudad, una base de datos tradicional funciona perfectamente.
Pero los agentes de IA muchas veces necesitan buscar información por significado, no únicamente por coincidencia exacta.
Ahí es donde las bases de datos vectoriales adquieren importancia.
3. ¿Qué es un vector?
Un vector, en este contexto, es una representación numérica de información.
Puede parecer extraño convertir una frase en números, pero esta representación permite comparar diferentes fragmentos de información.
Por ejemplo, imaginemos estas frases:
"El motor presenta una temperatura elevada."
y:
"El motor se está calentando demasiado."
Aunque las palabras no son exactamente iguales, sus significados son muy parecidos.
Un sistema de embeddings puede convertir ambas frases en representaciones numéricas que se encuentren relativamente cerca entre sí.
Esto permite realizar búsquedas basadas en similitud.
4. ¿Qué son los embeddings?
Los embeddings son representaciones numéricas generadas a partir de información como texto, imágenes u otros tipos de datos.
La idea general es transformar información compleja en vectores que puedan compararse matemáticamente.
Por ejemplo, podemos tener tres documentos:
Documento A:
"El sensor registra temperaturas entre 0 y 100 °C."
Documento B:
"El dispositivo puede medir hasta cien grados Celsius."
Documento C:
"El sistema utiliza comunicación Ethernet."
Si realizamos una búsqueda relacionada con el rango de temperatura de un sensor, los primeros dos documentos deberían considerarse más relevantes que el tercero.
Los embeddings permiten representar esta relación de manera numérica.
No significa que el vector "contenga" literalmente el significado como una frase. Es una representación que permite calcular relaciones de similitud entre diferentes elementos.
5. ¿Cómo funciona una base de datos vectorial?
Una base de datos vectorial está diseñada para almacenar y buscar vectores de manera eficiente.
Podemos imaginar el proceso de una forma sencilla.
Primero tenemos información, como documentos o conversaciones.
Después generamos embeddings de esa información.
Los embeddings se almacenan en una base de datos vectorial.
Cuando el usuario realiza una pregunta, también podemos generar un embedding para esa pregunta.
Después buscamos los vectores más similares.
Finalmente recuperamos la información asociada a esos vectores y se la proporcionamos al agente.
El agente utiliza esa información para construir su respuesta.
Este proceso suele conocerse como búsqueda semántica.
6. Un ejemplo sencillo
Imaginemos que tenemos una colección de documentos sobre electrónica.
Uno de ellos contiene:
"El regulador LM7805 proporciona una salida regulada de 5 V."
Otro dice:
"El LM7812 está diseñado para entregar aproximadamente 12 V."
Y otro documento habla sobre microcontroladores.
El usuario pregunta:
"¿Qué regulador puedo utilizar para obtener 5 voltios?"
El sistema puede convertir la pregunta en un embedding.
Después busca los fragmentos más similares.
El contenido relacionado con el LM7805 tendrá una mayor relevancia.
El agente recibe ese fragmento y puede responder utilizando la información recuperada.
El usuario nunca tuvo que conocer el nombre del documento donde estaba almacenada la información.
7. Memoria frente a almacenamiento
Es importante distinguir estos conceptos.
Una base de datos almacena información.
La memoria de un agente es un concepto más amplio.
Para que un sistema tenga memoria útil, debe decidir:
- qué información almacenar;
- cómo representarla;
- cuándo recuperarla;
- qué información es relevante;
- cuándo actualizarla;
- cuándo dejar de utilizarla.
Por eso, simplemente instalar una base de datos vectorial no crea automáticamente una memoria inteligente.
La base vectorial es una herramienta que puede formar parte de la arquitectura de memoria.
El agente necesita además una lógica que determine cómo utilizarla.
8. Memoria de conversaciones
Una de las aplicaciones más comunes consiste en almacenar conversaciones anteriores.
Supongamos que un usuario trabaja constantemente con un agente.
Durante diferentes conversaciones puede hablar sobre:
su proyecto,
sus objetivos,
problemas anteriores,
decisiones tomadas,
documentación,
preferencias relacionadas con el proyecto.
El sistema puede almacenar determinados fragmentos.
Después, cuando el usuario realiza una nueva pregunta, el agente puede recuperar información relevante.
Esto evita tener que introducir nuevamente todo el contexto.
Sin embargo, almacenar absolutamente todas las conversaciones tampoco es necesariamente una buena estrategia.
Es necesario seleccionar qué información realmente vale la pena conservar.
9. ¿Qué debería guardar un agente?
La respuesta depende de la aplicación.
En un agente empresarial podría ser útil almacenar información relacionada con procesos, documentación y proyectos.
En un asistente técnico podría ser importante conservar procedimientos y problemas anteriores.
En un agente de soporte podría ser útil recordar el historial de un caso.
Pero algunos datos pueden ser innecesarios o incluso inconvenientes de almacenar.
Por eso, la memoria debe diseñarse intencionalmente.
Un sistema bien diseñado no intenta recordar absolutamente todo.
Busca conservar la información que pueda mejorar futuras interacciones.
10. Memoria semántica
Una de las formas más interesantes de memoria es la memoria semántica.
Se refiere a información general que el sistema puede recuperar posteriormente.
Por ejemplo:
"El proyecto utiliza un ESP32."
"El servidor utiliza Ubuntu."
"La aplicación utiliza una base de datos SQLite."
Estos datos pueden ser útiles en conversaciones posteriores.
Cuando el usuario realiza una pregunta relacionada, el agente puede recuperar esa información.
La búsqueda semántica permite encontrarla incluso si la pregunta utiliza palabras diferentes.
11. Memoria episódica
También podemos hablar de memoria episódica.
En este caso se almacenan eventos o experiencias concretas.
Por ejemplo:
"El 5 de septiembre se detectó una pérdida de conexión con el sensor."
"Durante la última prueba, el motor presentó una temperatura superior al límite."
Este tipo de información puede ser especialmente útil para sistemas de monitoreo.
El agente puede recuperar acontecimientos anteriores y utilizarlos para comprender una situación actual.
12. Memoria para sistemas IoT
Las aplicaciones industriales e IoT son un excelente ejemplo.
Supongamos que tenemos sensores que registran temperatura y presión.
Los datos pueden almacenarse en una base de datos tradicional.
Pero además podemos almacenar eventos importantes.
Por ejemplo:
"El sensor 3 presentó una temperatura anormal durante 15 minutos."
Posteriormente, un operador podría preguntar:
"¿Ha ocurrido algo parecido anteriormente?"
El agente puede buscar eventos relacionados y presentar información relevante.
Aquí podemos combinar dos tipos de almacenamiento.
La base de datos tradicional conserva los valores numéricos.
La memoria semántica puede conservar eventos, observaciones o información contextual.
13. Bases vectoriales y documentos
Otra aplicación importante consiste en crear una memoria basada en documentos.
Supongamos que una empresa tiene cientos de manuales.
Cada documento puede dividirse en fragmentos.
Después se generan embeddings para esos fragmentos.
Los vectores y la información correspondiente se almacenan.
Cuando un usuario realiza una pregunta, el sistema recupera los fragmentos más relevantes.
Esto permite construir sistemas conocidos como RAG, o Retrieval-Augmented Generation.
La idea general de RAG es recuperar información externa y utilizarla como contexto para generar una respuesta.
De esta forma, el modelo no tiene que contener todo el conocimiento dentro de sus parámetros.
Puede consultar información externa cuando la necesita.
14. ¿Qué es RAG?
RAG significa Retrieval-Augmented Generation, que puede traducirse como generación aumentada mediante recuperación.
Aunque el concepto puede parecer complicado, la idea es bastante sencilla.
Primero el usuario realiza una pregunta.
Después el sistema busca información relacionada.
Luego recupera los fragmentos relevantes.
Esos fragmentos se proporcionan al modelo.
Finalmente el modelo genera una respuesta utilizando ese contexto.
Esto permite conectar un modelo de lenguaje con información externa.
RAG es especialmente útil cuando necesitamos que un agente trabaje con información específica de una empresa, proyecto o conjunto de documentos.
15. Memoria y conocimiento actualizado
Una ventaja importante de utilizar almacenamiento externo es que podemos actualizar la información.
Imaginemos una empresa que tiene un manual de procedimientos.
Después de algunos meses se publica una nueva versión.
Si el sistema depende únicamente del conocimiento interno del modelo, actualizar esa información puede ser complicado.
Pero si el agente consulta una base de conocimiento externa, podemos reemplazar o actualizar los documentos.
La próxima vez que alguien realice una pregunta, el agente puede recuperar la versión actualizada.
Esto permite mantener separado el modelo de IA del conocimiento específico de la organización.
16. ¿Qué ocurre cuando existen datos contradictorios?
Este es uno de los problemas más importantes.
Imaginemos que tenemos dos documentos.
El primero dice que un dispositivo funciona a 12 V.
El segundo, publicado posteriormente, indica que una nueva versión funciona a 24 V.
Si el sistema recupera ambos documentos, el agente debe ser capaz de distinguir cuál corresponde al modelo correcto.
Por eso, almacenar información no es suficiente.
También debemos conservar metadatos.
Por ejemplo:
- fecha del documento;
- versión;
- autor;
- categoría;
- modelo;
- departamento;
- permisos.
Estos datos pueden ayudar al sistema a seleccionar la información correcta.
17. Metadatos y filtros
Los metadatos permiten añadir contexto a los elementos almacenados.
Por ejemplo, un fragmento de documentación podría tener:
Documento: Manual_Sensor_X Versión: 3.0 Fecha: 2026 Categoría: Sensores Modelo: X200
Cuando el usuario pregunta por el modelo X200, el sistema puede utilizar estos datos para limitar la búsqueda.
Esto puede mejorar considerablemente la precisión.
La búsqueda semántica y los filtros tradicionales pueden trabajar juntos.
No tenemos que elegir necesariamente entre uno u otro.
18. Memoria híbrida
Una arquitectura avanzada puede combinar diferentes tipos de memoria.
Por ejemplo:
Una base de datos SQL almacena información estructurada.
Una base vectorial almacena embeddings y permite búsquedas semánticas.
Un sistema de archivos conserva documentos originales.
El historial de conversaciones almacena eventos relevantes.
El agente puede utilizar cada fuente dependiendo de la tarea.
Esta combinación puede producir sistemas mucho más completos.
Por ejemplo, para una consulta sobre un sensor, el agente podría:
- Buscar el historial numérico en SQL.
- Buscar información contextual en la base vectorial.
- Recuperar el manual correspondiente.
- Analizar los resultados.
- Responder al usuario.
19. El agente decide qué recordar
Un agente avanzado no debería guardar automáticamente todo lo que encuentra.
Puede existir una lógica que determine si determinada información es importante.
Por ejemplo, una conversación podría contener:
"Hoy está lloviendo."
Probablemente no sea información importante para la memoria permanente del agente.
Pero si el usuario dice:
"El proyecto utiliza un ESP32 y comunicación MQTT."
esa información puede ser útil durante mucho tiempo.
El agente puede clasificarla como información relevante para el proyecto.
Esta selección puede realizarse mediante reglas, modelos de IA o una combinación de ambos.
20. Evitar una memoria descontrolada
Una memoria demasiado grande también puede convertirse en un problema.
Si un agente almacena miles o millones de elementos sin organización, las búsquedas pueden devolver información irrelevante.
También puede aumentar el costo y el tiempo de procesamiento.
Por eso es importante implementar estrategias como:
eliminar información obsoleta,
actualizar registros,
agrupar información,
utilizar metadatos,
limitar resultados,
establecer fechas de expiración cuando sea apropiado.
La memoria debe ser útil, no simplemente grande.
21. Seguridad y privacidad
La memoria persistente introduce una responsabilidad adicional.
Si un agente almacena información, debemos preguntarnos:
¿Quién puede acceder a ella?
¿Cuánto tiempo se conserva?
¿Puede eliminarse?
¿Está protegida?
¿Puede un usuario acceder accidentalmente a información de otro usuario?
Estas preguntas son especialmente importantes en aplicaciones empresariales.
La información almacenada en una base vectorial debe tener controles de acceso apropiados.
No debemos asumir que porque los datos están almacenados en vectores dejan de ser sensibles.
El contenido original sigue siendo información que necesita protección.
22. Una arquitectura práctica
Imaginemos un agente para soporte técnico.
El usuario pregunta:
"Mi equipo volvió a presentar el mismo problema."
El agente puede buscar en su memoria.
Encuentra que hace dos semanas ocurrió un problema similar.
Recupera el evento.
Después consulta el manual.
Finalmente revisa los registros actuales del equipo.
Con toda esa información puede responder:
"Este problema ya se presentó anteriormente en el mismo equipo. En aquella ocasión se encontró una pérdida de comunicación con el sensor. Los registros actuales muestran un comportamiento similar."
Este ejemplo muestra por qué la memoria puede mejorar considerablemente un agente.
El sistema no comienza desde cero en cada conversación.
23. Memoria persistente no significa aprendizaje automático
Existe una confusión común.
Si un agente recuerda algo, no significa necesariamente que el modelo haya aprendido esa información de manera permanente.
La memoria externa y el entrenamiento del modelo son mecanismos diferentes.
En la memoria persistente, la información se almacena fuera del modelo y posteriormente se recupera cuando es necesaria.
El modelo no necesariamente cambia sus parámetros.
Esto permite actualizar información rápidamente sin volver a entrenar todo el sistema.
24. Bases vectoriales populares
Existen diferentes tecnologías que pueden utilizarse para almacenar y consultar vectores.
Entre las opciones conocidas se encuentran sistemas especializados en búsqueda vectorial y bases de datos que han incorporado capacidades para trabajar con embeddings.
La elección depende de factores como:
cantidad de información,
velocidad requerida,
costo,
infraestructura,
lenguaje de programación,
integración con el resto del sistema.
Para aprender, lo importante inicialmente no es memorizar todas las herramientas disponibles, sino comprender el concepto de búsqueda semántica y cómo encaja dentro de la arquitectura de un agente.
25. ¿Cuándo necesitas realmente una base vectorial?
No todos los proyectos necesitan una.
Si tienes una aplicación pequeña con pocos datos estructurados, una base de datos tradicional puede ser suficiente.
Si tienes documentos y necesitas encontrar información por significado, una base vectorial puede ser útil.
Si estás construyendo un agente que debe consultar cientos de documentos, mantener una base de conocimiento o recordar grandes cantidades de información contextual, entonces esta tecnología puede resultar especialmente interesante.
La arquitectura debe comenzar por el problema, no por la herramienta.
26. Un ejemplo aplicado a un proyecto de ingeniería
Imaginemos un proyecto que controla diferentes dispositivos mediante un sistema IoT.
Tenemos:
sensores,
base de datos,
manuales,
historial de eventos,
agente de IA.
El usuario pregunta:
"¿Por qué el sensor 4 está generando tantas alertas?"
El agente puede consultar primero los datos actuales.
Después puede buscar eventos similares en su memoria.
Luego puede recuperar el manual del sensor.
Finalmente puede analizar toda la información.
Podría responder:
"El sensor 4 ha generado más alertas durante las últimas 24 horas que durante la semana anterior. Los eventos almacenados muestran que un comportamiento similar ocurrió después de una pérdida intermitente de comunicación. El manual recomienda revisar la conexión y alimentación del dispositivo."
Aquí tenemos memoria, documentos, datos estructurados y razonamiento trabajando juntos.
27. El verdadero valor de la memoria
La memoria no convierte automáticamente a un agente en inteligente.
Su verdadero valor está en proporcionar continuidad y contexto.
Un agente sin memoria puede ser útil para resolver una tarea aislada.
Un agente con memoria puede trabajar sobre procesos que se extienden en el tiempo.
Puede recordar decisiones anteriores.
Puede recuperar experiencias.
Puede consultar conocimiento acumulado.
Puede adaptar sus respuestas al contexto del proyecto.
Esto resulta especialmente importante cuando el agente se utiliza repetidamente.
28. El siguiente paso: hacer que el agente actúe
Hasta ahora hemos visto cómo un agente puede recuperar información.
Pero todavía falta una parte fundamental.
Un agente avanzado no solamente debe poder recordar y consultar información.
También debe utilizar esa información para decidir qué hacer.
Por ejemplo:
recuperar un evento anterior,
analizar los datos actuales,
determinar una posible causa,
consultar documentación,
ejecutar una herramienta,
registrar el resultado.
Este tipo de flujo nos acerca cada vez más a los agentes capaces de realizar tareas complejas de principio a fin.
Y para construir estos sistemas necesitamos patrones que permitan combinar razonamiento y acciones de manera organizada.
Conclusiones
Las bases de datos vectoriales son una herramienta fundamental para construir sistemas de memoria y recuperación de información para agentes de IA. Permiten almacenar representaciones vectoriales de documentos, conversaciones y otros contenidos, y posteriormente encontrar información relevante mediante búsquedas semánticas.
También vimos que una base vectorial por sí sola no constituye una memoria completa. Un agente necesita decidir qué información almacenar, cuándo recuperarla, cómo filtrarla y cómo gestionar datos obsoletos o contradictorios.
Cuando combinamos bases vectoriales con bases de datos tradicionales, documentos, APIs y otras herramientas, podemos construir agentes capaces de mantener contexto durante largos periodos y utilizar grandes cantidades de conocimiento externo.
En el siguiente artículo veremos uno de los patrones más importantes para construir agentes capaces de razonar y actuar: ReAct, y analizaremos cómo combinar razonamiento, herramientas y observaciones para resolver tareas paso a paso.