El problema fundamental que Lemmalog aborda es la gestión del conocimiento y la coherencia del estado en sistemas de inteligencia artificial conversacionales de larga duración. Los Large Language Models (LLMs), a pesar de su capacidad para comprender y generar lenguaje natural, carecen de un mecanismo inherente para mantener un estado de conocimiento determinista y consistente a lo largo de interacciones prolongadas. Esto se manifiesta como la 'amnesia' o 'alucinación' de los modelos, donde olvidan conclusiones previas o razonan sobre premisas ya refutadas.
La solución propuesta se inspira en los principios del análisis de programas y las bases de datos lógicas, específicamente Datalog. En lugar de depender de la recuperación semántica (vector databases) para 'recordar' información, que solo ofrece relevancia contextual, Lemmalog busca mantener lo que es 'actualmente verdadero' mediante un motor de inferencia declarativo. Esto permite que las conclusiones se invaliden automáticamente cuando sus premisas cambian, un comportamiento análogo a la reevaluación incremental en el análisis estático de código o la actualización de vistas en bases de datos relacionales.
Arquitectura del Sistema
La arquitectura de Lemmalog divide la tarea de gestión de conocimiento en dos componentes principales: un front-end probabilístico basado en LLM y un back-end determinista basado en Datalog. El LLM actúa como el 'parser' o 'extractor', transformando información no estructurada (código fuente, salida de depuradores, lenguaje natural) en hechos estructurados de Datalog. Estos hechos son tuplas (predicados con argumentos) que representan observaciones, suposiciones o relaciones.
El motor Datalog de Lemmalog es el núcleo del sistema. Almacena estos hechos y un conjunto de reglas declarativas. Estas reglas definen cómo se pueden derivar nuevos hechos a partir de los existentes. Por ejemplo, una regla podría establecer que si un atacante controla el 'objeto_A' y 'objeto_A' apunta al 'objeto_B', y 'objeto_B' es un objeto del kernel, entonces el atacante controla un objeto del kernel. El motor calcula un punto fijo de todos los hechos derivables. Crucialmente, Lemmalog implementa la evaluación incremental y la gestión de retractions, lo que significa que cuando un hecho base cambia o se elimina, solo las conclusiones afectadas se invalidan y recalculan, en lugar de reevaluar todo el estado. Esto se logra manteniendo un grafo de dependencia o 'provenance' para cada hecho derivado.
Además, Lemmalog introduce el concepto de intervalos de validez para los hechos, permitiendo modelar cómo el conocimiento cambia con el tiempo (ej. 'primitive_A es viable' [10:14, 12:37) y 'primitive_A no es viable' [12:37, ...)). Esto permite consultas tanto sobre el estado actual como sobre el estado en un punto anterior del tiempo. La recuperación de información para el LLM se realiza combinando BM25, boosts basados en grafos/entidades y embeddings, para asegurar que el contexto final para el LLM sea conciso y relevante, conteniendo tanto los hechos estructurados como los snippets de origen originales.
Flujo de Gestión de Conocimiento en Lemmalog
- 1 Entrada de Datos (LLM) LLM procesa lenguaje natural, código, logs de depurador.
- 2 Extracción de Hechos LLM convierte información no estructurada en hechos Datalog estructurados (ej...
- 3 Almacenamiento de Hechos Hechos base se añaden a la base de datos Datalog, con posibles intervalos de ...
- 4 Evaluación Incremental Motor Datalog aplica reglas para derivar nuevos hechos y actualiza el grafo d...
- 5 Mantenimiento de Estado El estado de conocimiento se mantiene consistente; los hechos obsoletos se in...
- 6 Consulta de Estado Agente LLM o usuario consulta el estado actual o la proveniencia de un hecho.
- 7 Generación de Respuesta (LLM) LLM convierte el estado mantenido o las conclusiones en lenguaje natural.
| Capa | Tecnología | Justificación |
|---|---|---|
| data-processing | Datalog Engine (Lemmalog custom) | Motor de inferencia declarativo para mantener el estado de conocimiento, gestionar dependencias y realizar evaluación incremental de hechos y reglas. vs Prolog, SQL (para inferencia limitada), Graph Databases (para relaciones) Soporte para retractions, provenance tracking, temporal facts, aggregations, entity reconciliation. |
| compute | Large Language Models (LLMs) (ej. Claude Sonnet 4.6, GPT-4.1) | Front-end probabilístico para la comprensión del lenguaje natural y la extracción de hechos estructurados a partir de datos no estructurados. vs Otros modelos fundacionales Utilizado para la extracción inicial y la generación final de lenguaje natural; el modelo de lectura es estandarizado por los benchmarks. |
| storage | Vector Database (implícito) | Almacenamiento y recuperación semántica de snippets de texto y embeddings para complementar la memoria simbólica, especialmente para consultas de 'relevancia'. vs Bases de datos relacionales para almacenamiento de texto Combinado con BM25 y boosts de grafo/entidad para una recuperación híbrida. |
Trade-offs
Ganancias
- ▲ Coherencia del estado de conocimiento
- ▲ Reducción de alucinaciones basadas en hechos obsoletos
- ▲▲ Eficiencia de tokens para el LLM de respuesta
- ▲ Capacidad de razonamiento temporal y sobre actualizaciones de conocimiento
- ▲ Trazabilidad (provenance) de las conclusiones
Costes
- △ Complejidad de la arquitectura (introducción de un motor Datalog)
- ▲ Rendimiento en inferencia 'difusa' o de sentido común
- △ Costo inicial de extracción de hechos por el LLM
Fundamentos Teóricos
La inspiración detrás de Lemmalog se encuentra profundamente arraigada en la teoría de bases de datos lógicas y el análisis de programas. Datalog, un sublenguaje de Prolog, fue desarrollado en la década de 1980 como un lenguaje de consulta declarativo para bases de datos deductivas. Su semántica de punto fijo y su capacidad para expresar relaciones recursivas lo hacen ideal para el tipo de inferencia que Lemmalog persigue. Trabajos seminales como los de Ullman (1988) sobre bases de datos relacionales y deductivas establecieron las bases teóricas para estos sistemas.
La gestión de la invalidación y la reevaluación incremental de hechos es un problema bien estudiado en el análisis estático de programas. Técnicas como el 'incremental dataflow analysis' o 'demand-driven analysis' (ej., Reps, 1994) buscan actualizar eficientemente los resultados del análisis cuando el programa fuente cambia, evitando un reanálisis completo. Lemmalog aplica estos mismos principios para mantener la coherencia del estado de conocimiento de un LLM. La capacidad de preguntar 'por qué' un hecho es verdadero (provenance) también tiene paralelos directos con los sistemas de explicación en la lógica y la inteligencia artificial, así como con la trazabilidad en los sistemas de análisis de datos.