Llevo un tiempo intentando construir una memoria para una inteligencia artificial.
Al principio pensé que el problema era bastante sencillo.
Guardar conversaciones, partir documentos, crear embeddings, buscar aquello que se parece a la pregunta actual, recuperarlo, meterlo en contexto y responder.
Funciona.
De hecho, funciona sorprendentemente bien.
El problema empezó cuando dejé de preguntarme si el sistema podía recuperar información y empecé a preguntarme si realmente recordaba.
Una base vectorial puede contener años de conversaciones y documentos. Puede encontrar fragmentos relacionados con una consulta en milisegundos. Podemos añadir fechas, personas, proyectos y metadatos.
Pero sigue apareciendo una pregunta incómoda:
¿tener acceso a todo lo que te ha ocurrido significa tener memoria?
Creo que no.
Al menos no en el sentido que me interesa.
Porque recordar no parece consistir únicamente en encontrar el pasado.
El pasado también cambia la manera en que interpretamos lo siguiente.
Y ahí el problema deja de parecerse a almacenamiento.
Una biblioteca no recuerda sus libros
Una biblioteca puede conservar miles de historias.
No recuerda ninguna.
La diferencia parece obvia porque no esperamos que una biblioteca haga algo con aquello que contiene.
Con una IA la intuición se vuelve más confusa.
Le damos acceso a veinte mil conversaciones. Preguntamos por una decisión de hace seis meses. Encuentra el fragmento correcto y responde.
Decimos:
tiene memoria.
No tengo problema con utilizar la palabra de manera práctica.
Pero si queremos construir sistemas que aprendan durante meses o años, quizá necesitemos distinguir mejor.
Imaginemos que durante tres años he dicho cosas distintas sobre la misma cuestión.
Primero:
Prefiero sistemas simples aunque pierdan funcionalidad.
Meses después:
En este proyecto necesito priorizar control aunque aumente la complejidad.
Y dos años más tarde:
Hemos complicado demasiado el sistema. Hay que volver a simplificar.
Una búsqueda puede recuperar las tres frases.
La memoria empieza después.
¿Me contradigo? ¿He cambiado de opinión? ¿Hablaba de contextos diferentes? ¿La última frase sustituye a la primera? ¿Existe una idea más general detrás de las tres?
Quizá mi criterio real no sea «simplicidad» ni «control».
Quizá sea evitar complejidad que no produce una capacidad suficientemente valiosa.
Eso no estaba escrito literalmente en ninguna frase.
Ha aparecido al relacionarlas.
Almacenar conserva información. Aprender exige que las experiencias modifiquen alguna estructura que utilizaremos después.
Recordar no es lo mismo que reproducir
Creo que la metáfora del disco duro nos engaña porque es demasiado buena.
Un archivo está o no está.
Lo abrimos.
El contenido permanece igual.
Podemos copiarlo sin modificarlo.
Nuestra memoria no se siente así.
Recordamos cosas que nunca podríamos transcribir exactamente. Olvidamos detalles, conservamos otros, mezclamos acontecimientos, relacionamos episodios, construimos hábitos y generalizaciones. A veces incluso estamos muy seguros de algo que recordamos mal.
No soy neurocientífico y no quiero convertir una descripción intuitiva de la memoria humana en una arquitectura de software.
Precisamente por eso me interesa usar la neurociencia como provocación, no como manual de implementación.
La teoría de los sistemas de aprendizaje complementarios, planteada por McClelland, McNaughton y O’Reilly en los noventa y revisada posteriormente por Kumaran, Hassabis y McClelland, propone —simplificando bastante— una separación entre el aprendizaje rápido de experiencias concretas y la incorporación más gradual de regularidades a estructuras de conocimiento. Los propios autores posteriores señalan además su relevancia para pensar agentes artificiales.
No necesito convertir el hipocampo en una tabla de PostgreSQL.
Me interesa una diferencia mucho más pequeña:
«esto ocurrió» no es lo mismo que «esto suele ocurrir».
La primera frase puede ser un episodio.
La segunda ya es una interpretación de varios episodios.
Y muchos sistemas actuales tratan ambas cosas como texto.
Una frase no debería perder su historia al convertirse en memoria
Supongamos que un cliente dice:
Creo que el problema es el precio.
Guardamos la frase.
Meses después otra persona escribe:
Los clientes de este segmento son muy sensibles al precio.
Ambas frases se parecen.
Pero no son epistemológicamente iguales.
La primera es una observación atribuida a una persona concreta en un momento concreto.
La segunda puede ser una hipótesis.
O una conclusión.
O una generalización producida por una IA después de leer varias conversaciones.
Si convertimos ambas en texto + embedding y dejamos que el modelo descubra el resto, estamos pidiendo que reconstruya constantemente algo que el sistema podría conservar de forma explícita.
¿Quién lo dijo? ¿Cuándo? ¿En qué contexto? ¿Era un hecho, una opinión o una inferencia? ¿Sigue vigente? ¿Qué otras memorias la contradicen? ¿De qué evidencias deriva?
Cada una de esas preguntas cambia lo que significa recordar la frase.
Por eso he empezado a pensar que la unidad de una memoria artificial quizá no debería parecerse a:
texto + embedding
sino a algo más parecido a:
contenido + origen + momento + tipo + confianza + relaciones + estado + evidencia
No es una arquitectura estándar.
Es mi manera provisional de ordenar el problema.
El embedding sigue siendo útil.
Muchísimo.
Pero es una manera de encontrar la memoria.
No la memoria misma.
El pasado debería poder cambiar el presente
Dos trabajos de 2023 me ayudaron a ver mejor esta diferencia desde la ingeniería.
Generative Agents almacena experiencias, las recupera y construye reflexiones de nivel superior que después participan en la planificación del agente. MemGPT, desde otro enfoque, trata explícitamente el límite del contexto y gestiona diferentes niveles de memoria para decidir qué información debe estar disponible en cada momento.
No creo que ninguno resuelva «la memoria» en sentido general.
Ni falta que hace.
Lo importante es el cambio de pregunta.
Ya no es únicamente:
¿cómo recuperamos el fragmento correcto?
Empieza a ser:
¿qué parte del pasado debería influir ahora y de qué manera?
Eso introduce selección.
Y la selección es incómoda.
Porque si un sistema lo recuerda todo con el mismo peso, en realidad no ha decidido nada.
Recordar podría ser activar relaciones, no documentos
Cuando pienso en algo, rara vez siento que mi cabeza haya ejecutado una búsqueda de los diez recuerdos más similares.
Una cosa llama a otra.
Un lugar trae una persona. Una persona trae una conversación. La conversación trae una decisión. La decisión trae el error que vino después.
No quiero decir que el cerebro funcione como un grafo de conocimiento.
Sería otra metáfora demasiado literal.
Lo que quiero conservar es la intuición de que un recuerdo puede activar otros recuerdos por razones distintas a la similitud textual.
Una memoria sobre WordPress puede estar relacionada con un cliente, un proyecto, un error, una regla que nació de ese error, una decisión posterior que sustituyó la regla o una conversación en la que descubrimos que el problema nunca había sido WordPress.
Una búsqueda puramente semántica puede encontrar algunas de esas cosas.
Una arquitectura que conserve relaciones puede recorrer otras.
Pero aquí aparece inmediatamente mi tendencia natural:
si hacen falta relaciones, construyamos un grafo.
Personas. Proyectos. Conceptos. Decisiones. Documentos. Reglas. Todo conectado.
Parece precioso.
Hasta que dentro de tres años tenemos quince millones de relaciones y nadie sabe cuáles siguen significando algo.
Hemos sustituido un trastero de documentos por un trastero de nodos.
El problema no es conectar todo.
Es decidir qué conexiones siguen mereciendo influir.
Una memoria que no cambia acaba siendo un archivo
La investigación sobre memoria también sugiere algo que me resulta especialmente provocador: las memorias pueden cambiar con el tiempo y relacionarse con estructuras de conocimiento más generales.
Krenz y sus colaboradores estudiaron transformaciones temporales de la representación de recuerdos. Spens y Burgess propusieron en 2024 un modelo computacional donde episodios y conocimiento general interactúan, permitiendo tanto generalización como determinadas distorsiones.
Otra vez: no quiero copiar el cerebro.
Quiero quedarme con la pregunta.
¿Qué pasa con una experiencia después de guardarla?
Nuestros sistemas suelen capturar, indexar, almacenar y esperar.
La memoria crece.
Pero el sistema que la utiliza puede seguir siendo exactamente el mismo.
¿Y si necesitáramos una fase diferente?
Un momento en el que el sistema no se limite a esperar nuevas entradas, sino que vuelva sobre lo ocurrido.
Detecte repeticiones. Encuentre contradicciones. Compruebe qué reglas siguen vigentes. Observe patrones. Construya una hipótesis. Reduzca la importancia de una excepción antigua.
No sé si llamarlo consolidación es técnicamente la mejor elección en ingeniería.
Me sirve porque distingue dos operaciones:
incorporar experiencia y reorganizar lo experimentado.
Y esa distinción cambia completamente la arquitectura.
Aprender exige poder cambiar de opinión
Un sistema que únicamente añade información puede acumular contradicciones sin resolverlas.
Un cliente prefiere A.
Después prefiere B.
Una norma dice X.
Se actualiza y ahora dice Y.
Un proyecto tiene una prioridad.
Tres meses después deja de tenerla.
Si todo permanece con la misma vigencia, el sistema no tiene historia.
Tiene capas.
La temporalidad importa.
Pero cambiar una memoria también da miedo.
Porque en cuanto permitimos que el sistema resuma, generalice o sustituya, puede equivocarse.
Imaginemos:
Quizá deberíamos cambiar de proveedor.
Después una IA resume:
Se está considerando un cambio de proveedor.
Meses más tarde otra capa condensa varias conversaciones:
Existe insatisfacción con el proveedor actual.
Otro agente utiliza eso como evidencia:
El equipo quiere cambiar de proveedor.
Y finalmente alguien pregunta qué se decidió.
El sistema responde:
Se decidió cambiar de proveedor.
Nunca ocurrió.
Ninguna transformación individual era completamente absurda.
El problema apareció acumulándose.
Si una memoria puede aprender, también puede aprender mal.
Aquí dejo de querer una memoria humana
En este punto la metáfora biológica deja de ser mi objetivo.
No quiero construir una máquina que recuerde como nosotros.
Quiero que pueda hacer algunas cosas que nosotros hacemos y otras que nosotros hacemos fatal.
Una de ellas es conservar procedencia.
Yo no puedo abrir un panel y reconstruir con precisión por qué mantengo una convicción que empezó a formarse hace quince años.
Una máquina podría.
Si diseñamos el sistema para ello.
Una memoria artificial podría distinguir:
esto fue observado;
esto estaba escrito en este documento;
esto lo dijo esta persona;
esto fue inferido;
esto resume estas experiencias;
esto contradice aquello;
esto dejó de estar vigente;
esto todavía no está confirmado.
Y, sobre todo:
esto deriva de aquí.
No es una conclusión de neurociencia.
Es una decisión de arquitectura.
Y me parece una oportunidad enorme.
Podemos permitir que el sistema reorganice conocimiento sin destruir el camino hasta las evidencias originales.
Podemos tener abstracción con procedencia, cambios de opinión con historial, inferencias con nivel de confianza, contradicciones que siguen abiertas y olvido funcional sin destrucción.
No necesitamos fabricar una memoria humana.
Podríamos intentar construir una memoria auditable.
Olvidar no debería significar borrar
Esta parte me cuesta.
He pasado muchos años construyendo sistemas para no perder información.
Guardar, versionar, hacer copias, registrar logs, no borrar.
Desde la perspectiva de una base de datos es bastante sensato.
Desde la perspectiva de una memoria, no estoy tan seguro.
Si cada experiencia conserva para siempre la misma probabilidad de influir, el pasado termina ocupando todo.
Una conversación irrelevante de hace cuatro años puede competir con una decisión confirmada ayer.
Una regla obsoleta puede reaparecer porque semánticamente se parece mucho a la pregunta.
Una hipótesis antigua puede sobrevivir indefinidamente porque nadie la eliminó.
Olvidar no tiene por qué significar destruir.
Puede significar reducir prioridad, archivar, comprimir o mantener el episodio como evidencia pero dejar de activarlo normalmente.
Distinguir entre:
esto ocurrió
y
esto sigue siendo relevante.
En una máquina podemos incluso separar ambas cosas mejor de lo que lo hacemos nosotros.
El registro puede permanecer.
Su influencia puede cambiar.
El contexto no es la memoria
También me cuesta llamar memoria a una ventana de contexto enorme.
Cien mil tokens.
Doscientos mil.
Un millón.
Impresiona.
Pero una biblioteca abierta encima de una mesa sigue sin equivaler a haberla aprendido.
Me resulta más útil pensar el contexto como el espacio de trabajo temporal donde colocamos aquello que el sistema necesita para actuar ahora.
La pregunta. El objetivo. Unas experiencias. Una regla. Una excepción. Algún conocimiento relevante.
Y el resto queda fuera.
Por eso recuperar no debería significar simplemente «trae los diez chunks más parecidos».
Puede importar la similitud.
También la fecha, la fuente, la importancia, la vigencia, la contradicción, la relación con el objetivo actual o la frecuencia con la que algo se ha demostrado útil.
Una memoria poco parecida semánticamente puede contener precisamente la excepción que destruye nuestra hipótesis.
Eso me parece importante.
Un sistema que solo recuerda lo que se parece a lo que ya está pensando corre el riesgo de convertirse en una máquina extraordinariamente sofisticada para confirmarse a sí misma.
He acabado con seis procesos
Como me ocurre siempre que una idea se vuelve demasiado grande, he construido categorías.
No son una taxonomía de neurociencia.
Tampoco un estándar de arquitectura de IA.
Son mi mapa provisional.
Capturar. Registrar una experiencia sin convertirla automáticamente en conocimiento.
Relacionar. Conectarla con tiempos, personas, proyectos, conceptos, evidencias y contradicciones.
Activar. Decidir qué pequeña parte de todo lo acumulado merece entrar ahora en el contexto.
Razonar. Operar sobre lo activado: comparar, inferir, planificar o decidir.
Consolidar. Volver sobre múltiples experiencias y construir regularidades sin perder su origen.
Olvidar. Reducir la influencia de aquello que ha perdido relevancia sin borrar necesariamente que ocurrió.
El modelo funciona hasta que empiezas a hacer preguntas difíciles.
¿Quién decide qué consolidar?
¿Cuánta evidencia hace falta para cambiar una creencia?
¿Cómo evitamos que una inferencia producida por el propio sistema se convierta después en «hecho»?
¿Qué hacemos con conocimiento procedural que no cabe bien en una frase?
¿Dónde viven los objetivos?
No lo sé.
Me gusta no saberlo.
Significa que el modelo todavía está sirviendo para encontrar problemas en lugar de ocultarlos.
No quiero una IA que lo recuerde todo
Creo que empecé este trabajo con la intuición equivocada.
Quería una IA que no olvidara.
Ahora no estoy seguro de quererla.
Una máquina que recuerde absolutamente todo no tiene por qué ser más inteligente.
Puede parecerse a alguien que intenta mantener una conversación mientras escucha simultáneamente todas las conversaciones que ha tenido en su vida.
El almacenamiento ya lo hacemos extraordinariamente bien.
El problema es qué hacemos con lo almacenado.
Cómo una experiencia se convierte —o no— en memoria.
Cómo varias experiencias producen conocimiento.
Cómo una regla deja de estar vigente.
Cómo una contradicción permanece abierta.
Cómo algo deja de ser relevante sin dejar de existir.
Cómo una inferencia conserva el rastro de aquello que la produjo.
Cómo el sistema cambia de opinión sin reescribir el pasado para fingir que siempre pensó lo mismo.
Eso ya no se parece demasiado a un disco duro.
Tampoco a una base vectorial más grande.
Empieza a parecerse a un sistema que se reorganiza mediante su propia actividad.
No sé cuánto de esto se parecerá finalmente a nuestra manera de recordar.
Probablemente menos de lo que hoy imagino.
Y quizá sea mejor así.
Porque la idea que me cuesta abandonar no es que debamos copiar la memoria humana.
Es esta:
recordar no consiste únicamente en conservar el pasado. Consiste en permitir que el pasado modifique la forma en que interpretaremos lo siguiente.
Si conseguimos construir algo parecido, la memoria dejará de ser el lugar donde una inteligencia busca información.
Pasará a formar parte del mecanismo mediante el que esa inteligencia cambia.
Y entonces la pregunta realmente importante ya no será cuántos tokens caben en el contexto ni cuántos vectores caben en la base de datos.
Será bastante más incómoda:
¿por qué cree lo que cree?
Y tendremos que asegurarnos de que todavía pueda reconstruir la respuesta.
Referencias
McClelland, J. L., McNaughton, B. L. y O’Reilly, R. C. (1995). Why there are complementary learning systems in the hippocampus and neocortex. Psychological Review, 102(3), 419–457. DOI: 10.1037/0033-295X.102.3.419.
Kumaran, D., Hassabis, D. y McClelland, J. L. (2016). What Learning Systems do Intelligent Agents Need? Complementary Learning Systems Theory Updated. Trends in Cognitive Sciences, 20(7), 512–534. DOI: 10.1016/j.tics.2016.05.004.
Park, J. S. et al. (2023). Generative Agents: Interactive Simulacra of Human Behavior. Proceedings of UIST ’23. DOI: 10.1145/3586183.3606763.
Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
Krenz, V. et al. (2023). Time-dependent memory transformation in hippocampus and neocortex is semantic in nature. Nature Communications, 14, 6037. DOI: 10.1038/s41467-023-41648-1.
Spens, E. y Burgess, N. (2024). A generative model of memory construction and consolidation. Nature Human Behaviour, 8, 526–543. DOI: 10.1038/s41562-023-01799-z. Publicado el 19 de enero de 2024.
Deja una respuesta