3 puntos por baeba 3 시간 전 | Aún no hay comentarios. | Compartir por WhatsApp

Resumen general

  • Objetivo

    • Un framework de memoria que ayuda a los agentes de IA a extraer automáticamente información necesaria de conversaciones y documentos, y a almacenarla y recuperarla a largo plazo
  • Diseño central

    • Conserva intacto el Memory value, que es el texto original completo, y usa Primary abstraction y Cue anchors para la búsqueda
  • Diferenciador principal

    • Busca una estructura que reduzca la pérdida de información y la ambigüedad en la recuperación frente al RAG común que embebe directamente todo el texto original
  • Funciones principales

    • Soporta extracción automática de memoria, eliminación de duplicados, fusión y actualización, búsqueda semántica, búsqueda por palabras clave y búsqueda multinivel basada en LLM
  • Casos de uso

    • IA conversacional de largo plazo, sistemas multiagente, servicios personalizados y gestión de conocimiento basada en documentos
  • Estado actual

    • Es un proyecto abierto con licencia MIT basado en Python que incluye benchmarks y funciones experimentales, aunque todavía está cerca de una etapa inicial de publicación

Introducción

Resolver la complejidad de la gestión de memoria en agentes

  • En el desarrollo tradicional de agentes de IA, el desarrollador debe encargarse directamente de los siguientes problemas

    • decidir qué información guardar como memoria
    • determinar cuándo actualizar o borrar la información almacenada
    • recuperar recuerdos relacionados con la pregunta del usuario
    • gestionar recuerdos duplicados o en conflicto
  • Memora busca manejar este ciclo de vida de la memoria dentro del framework

  • Así, los desarrolladores pueden concentrarse más en las funciones del agente y en la generación de respuestas que en la lógica de almacenamiento y recuperación de bajo nivel

Límites de las arquitecturas de memoria existentes

  • En los sistemas RAG comunes

    • se divide el texto original de documentos o conversaciones en fragmentos de cierto tamaño
    • cada fragmento se embebe y se guarda en una base de datos vectorial
    • se recuperan los fragmentos semánticamente cercanos a la pregunta
  • Este enfoque es sencillo de implementar, pero puede generar los siguientes problemas

    • un contexto largo queda dividido en varios fragmentos
    • la información con expresiones similares se almacena de forma duplicada
    • una similitud semántica simple puede no coincidir con la intención real de la pregunta
    • si solo se guarda un resumen comprimido, pueden perderse detalles
  • Las bases de conocimiento tipo grafo son útiles para representar relaciones, pero implican la carga de mantener continuamente el esquema y la estructura relacional


Desarrollo

Separar el texto original de la estructura de búsqueda

  • Cada memoria en Memora está compuesta por tres elementos

Memory value

  • Es la información completa que realmente se almacena
  • Conserva el texto original y los detalles sin comprimirlos
  • No se incluye directamente en el índice de búsqueda
  • Su función es mantener el contexto original sin pérdida de información

Primary abstraction

  • Es el resumen representativo que indica de qué trata esa memoria
  • Se genera una por cada memoria
  • Se usa como criterio para búsqueda, actualización, fusión y eliminación de duplicados
  • Funciona como unidad estándar que representa la identidad de la memoria

Cue anchors

  • Son múltiples pistas semánticas para acceder a una memoria
  • Se construyen combinando personas, objetos, eventos, atributos clave y otros elementos
  • A un mismo recuerdo se le pueden vincular varias pistas
  • Forman una estructura de muchos a muchos donde varios recuerdos pueden compartir la misma pista

Indexación selectiva de los elementos de búsqueda

  • Memora no indexa directamente todo el texto original

  • En la búsqueda real solo utiliza la siguiente información

    • Primary abstraction
    • Cue anchors
  • Cuando termina la búsqueda, devuelve el Memory value original asociado

  • Objetivos de esta estructura

    • separar la representación de búsqueda de la información realmente almacenada
    • mantener conciso el índice de búsqueda
    • preservar intactos los detalles del texto original
    • reducir el ruido semántico que puede surgir al embeber el texto original

Una forma intermedia entre RAG y las estructuras de grafo

  • Ofrece pistas de búsqueda más estructuradas que un RAG convencional

  • No define todas las relaciones con un esquema rígido como una base de datos de grafos

  • Busca sumar una capa de abstracción sobre la memoria para obtener al mismo tiempo flexibilidad y estructura

  • Dirección central

    • el texto original se guarda en formato libre
    • para la búsqueda y la conexión se usan representaciones estructuradas
    • la estructura de almacenamiento y la estructura de búsqueda se gestionan de manera independiente

Flujo de procesamiento desde la creación de memoria hasta la respuesta

1. Recolección de memoria

  • El agente procesa una conversación o un documento

  • A partir del contenido extrae automáticamente la siguiente información

    • datos fácticos
    • eventos y experiencias
    • procedimientos y formas de trabajo
  • Las conversaciones largas se dividen en episodios por tema

  • La información clave se transforma en entradas de memoria estructuradas

2. Almacenamiento inteligente

  • Usa la base de datos vectorial ChromaDB como almacenamiento predeterminado

  • Almacena memorias usando embeddings semánticos

  • Cuando entra información nueva, la compara con memorias existentes

  • Sobre información similar o duplicada realiza las siguientes acciones

    • eliminación de duplicados
    • fusión con recuerdos existentes
    • actualización de información desactualizada
  • De forma opcional, genera un Cue index para soportar búsqueda estructurada

3. Recuperación adaptativa

  • Ofrece varias estrategias de búsqueda según el tipo de pregunta y la configuración
Búsqueda semantic
  • Calcula la similitud vectorial entre la pregunta y las representaciones de memoria
  • Su implementación es simple y se puede aplicar a preguntas generales
  • Puede encontrar información semánticamente parecida aunque la expresión sea distinta
Búsqueda prompted
  • El LLM realiza el proceso de búsqueda por etapas
  • Ajusta repetidamente los términos y el alcance de la búsqueda a partir de los resultados iniciales
  • Es adecuada para preguntas complejas o que requieren combinar varios recuerdos
  • Como añade llamadas extra al LLM, puede aumentar el costo y el tiempo de respuesta
Búsqueda hybrid
  • Combina la búsqueda semántica basada en vectores con búsqueda por BM25 y palabras clave
  • Aprovecha tanto la similitud semántica como la coincidencia exacta de palabras
  • Es útil para reducir omisiones al buscar nombres propios, nombres de productos, código o fechas
Búsqueda GRPO
  • Usa una política de recuperación entrenada con aprendizaje por refuerzo
  • Aprende el método mismo para seleccionar las memorias necesarias para una pregunta
  • Busca reemplazar la búsqueda iterativa basada en LLM por un modelo ajustado localmente
  • Actualmente se clasifica como una función experimental

4. Generación de respuestas

  • Organiza las memorias recuperadas en un formato definido
  • Inserta ese contenido en el prompt del LLM
  • El LLM genera la respuesta usando tanto la pregunta como los recuerdos recuperados
  • Busca que la respuesta esté fundamentada en la memoria almacenada

Funciones de gestión para mantener la calidad de la memoria

  • A diferencia de un repositorio plano que solo sigue agregando memorias, gestiona el estado de las memorias existentes

  • Principales funciones de gestión

    • eliminar recuerdos duplicados
    • fusionar recuerdos similares
    • actualizar hechos modificados
    • reorganizar la estructura de memoria
  • Usa Primary abstraction como criterio para actualizar e integrar memorias

  • Busca reducir el problema de acumulación ilimitada de duplicados con el paso del tiempo

Soporte para distintos tipos de memoria

  • Es posible representar varios tipos de recuerdos configurando de forma distinta el valor de memoria y el método de abstracción

Memoria factual

  • Información relativamente estable como personas, lugares, atributos o configuraciones
  • Ejemplo: lugar de trabajo de un usuario específico, herramientas preferidas, stack tecnológico de un proyecto

Memoria episódica

  • Eventos o conversaciones ocurridos en un momento concreto
  • Ejemplo: lo decidido en una reunión pasada, el proceso para resolver un error específico

Memoria procedimental

  • Métodos de trabajo o procedimientos repetibles
  • Ejemplo: procedimiento de despliegue de servidor, secuencia para revisar errores, reglas para generar documentos

Compartición y aislamiento de memoria en entornos multiagente

  • Varios agentes que operan en el mismo entorno pueden usar un espacio de memoria compartido

  • La información almacenada por un agente puede ser reutilizada por otros agentes

  • También se puede restringir el alcance de la memoria por agente o por rol

  • Efectos esperados

    • reducir la duplicación de conocimiento entre agentes
    • mejorar el traspaso de tareas
    • mantener la consistencia de la información compartida de un proyecto
  • Con funciones de control de acceso y aislamiento, la arquitectura soporta compartición selectiva y protección de privacidad

Separación entre infraestructura de almacenamiento y estructura de representación

  • Está diseñado para que la forma de representar la memoria no dependa fuertemente de un almacenamiento específico

  • La estructura del proyecto incluye conectores para las siguientes bases de datos

    • ChromaDB
    • Redis
  • Puede aplicarse a entornos de almacenamiento local o remoto

  • Aunque cambie el backend de almacenamiento, se puede mantener la estructura de abstracciones y pistas de la memoria


Forma básica de uso

  • Requiere Python 3.10 o superior
  • Después de clonar el repositorio de GitHub, se instala el paquete
  • Se crea un MemoraClient y se especifica un identificador de usuario o agente
  • Se usa add() para agregar conversaciones o documentos a la memoria
  • Se usa query() para realizar búsqueda semántica
  • Se usa advance_query() para realizar búsquedas avanzadas en modo Prompted o GRPO

Estructura de integración con agentes

  • Al recibir un mensaje del usuario, primero recupera las memorias relacionadas

  • Genera una respuesta usando los resultados de búsqueda y la pregunta del usuario

  • Organiza la respuesta generada y el mensaje del usuario como un solo registro conversacional

  • Luego vuelve a guardar esa conversación en Memora

  • Proceso repetitivo

    • recibir la pregunta
    • recuperar recuerdos relacionados
    • generar la respuesta
    • guardar la conversación
    • reutilizarla en preguntas posteriores

Evaluación del rendimiento de memoria a largo plazo

Benchmark LoCoMo

  • Evalúa la capacidad de recuperación de recuerdos en conversaciones de larga duración

  • Principales tipos de evaluación

    • preguntas de una sola etapa
    • preguntas multietapa que combinan varias informaciones
    • preguntas sobre relaciones temporales
    • preguntas abiertas
  • Se pueden probar combinaciones de Semantic, Prompted, Cue index y otras opciones

Benchmark LongMemEval

  • Evalúa la capacidad de un sistema de memoria a largo plazo para manejar distintos tipos de preguntas
  • Puede aplicar configuraciones de memoria episódica y búsqueda semántica
  • Sirve para verificar retención de información y rendimiento de recuperación en entornos reales de conversación prolongada

Entrenamiento de políticas de búsqueda basadas en GRPO

  • Función experimental para aprender el procedimiento de búsqueda como una política de aprendizaje por refuerzo

  • Etapas del proceso

    • generar rutas de búsqueda con la política actual
    • evaluar fundamento, duplicación y costo de los resultados
    • calcular ventajas relativas de grupo
    • entrenar la política de búsqueda con el método GRPO
  • Presenta como ejemplo modelos de la familia Qwen 3B o 7B y ajuste fino con LoRA

  • El entrenamiento requiere GPU

  • Objetivos

    • reducir el costo de llamar a un LLM externo en cada búsqueda
    • construir estrategias de recuperación optimizadas para datos y tareas específicas
  • Limitaciones

    • se necesitan datos de entrenamiento y criterios de evaluación
    • se añade gestión adicional de entrenamiento y operación del modelo
    • para usuarios generales, es más complejo de aplicar de inmediato que la búsqueda semantic

Principales ventajas

  • Permite conservar los detalles del texto original sin comprimirlos
  • La separación entre representación de búsqueda e información real hace más clara la estructura de memoria
  • Permite tratar de manera sistemática la eliminación de duplicados y la actualización de memoria
  • Se puede elegir entre búsqueda semántica, por palabras clave, con LLM o con aprendizaje por refuerzo
  • Puede gestionar en un solo framework memoria factual, episódica y procedimental
  • Varios agentes pueden compartir los mismos recuerdos
  • Busca integrarse con relativamente pocos cambios en sistemas de agentes ya existentes
  • Puede soportar tanto estructuras de almacenamiento local como remoto

Limitaciones estructurales y puntos de atención

  • La calidad de Primary abstraction y Cue anchors influye directamente en el rendimiento de recuperación
  • Si la abstracción generada automáticamente es imprecisa, la información puede quedar fuera de la búsqueda aunque el texto original sea correcto
  • Una arquitectura que no indexa directamente el texto original puede quedar en desventaja para buscar frases muy específicas o información escasa
  • Durante la eliminación de duplicados y la fusión, eventos distintos podrían integrarse por error en un solo recuerdo
  • La búsqueda prompted puede aumentar costos y latencia por las múltiples llamadas al LLM
  • El enfoque GRPO requiere GPU, datos de entrenamiento y un sistema de evaluación, lo que eleva la complejidad operativa
  • La memoria compartida en sistemas multiagente exige diseñar con claridad permisos de acceso y aislamiento de información
  • Si se almacenan datos personales o conversaciones sensibles, hacen falta políticas separadas de cifrado, borrado y retención
  • El repositorio público no tiene releases y muestra pocos contribuidores y métricas de uso, por lo que es difícil considerar suficientemente validada su estabilidad para operación a gran escala

Conclusión

Un enfoque de memoria a largo plazo con una capa de acceso estructurada

  • Memora propone alejarse del enfoque de vectorizar simplemente todo el texto original y plantea la siguiente estructura

    • los detalles se conservan en Memory value
    • el significado representativo se expresa con Primary abstraction
    • las distintas rutas de búsqueda se construyen con Cue anchors
  • Su valor central está en el equilibrio entre preservación de la información y eficiencia de recuperación

  • Tiene más potencial de uso en los siguientes entornos que en una simple búsqueda documental

    • agentes personalizados que interactúan con usuarios durante largos periodos
    • sistemas que acumulan continuamente gran cantidad de documentos técnicos y de trabajo
    • entornos donde agentes con distintos roles comparten conocimiento
    • proyectos que necesitan reutilizar decisiones pasadas y procedimientos de trabajo

Hace falta validarlo antes de adoptarlo

  • En una aplicación real, primero conviene verificar los siguientes elementos

    • la calidad de la abstracción y de la generación de Cue para documentos en coreano
    • la precisión de recuperación comparada con un RAG existente
    • la tasa de error en el proceso de fusión de memorias
    • el crecimiento de datos y la velocidad de búsqueda en operación a largo plazo
    • el costo de las API de LLM y embeddings
    • la forma de almacenamiento de datos personales y el control de acceso
  • En una etapa inicial, es apropiado hacer un PoC pequeño sobre parte de los documentos clave y comparar el rendimiento con RAG convencional y con búsqueda híbrida

Aún no hay comentarios.

Aún no hay comentarios.