Sobre el proyecto

Lexos es un motor de procesamiento de documentos con IA basado en eventos, construido alrededor de modelos de lenguaje autoalojados. Combina una puerta de enlace Go de alta concurrencia con trabajadores Python asíncronos para ejecutar resumen de documentos, generación aumentada por recuperación y transcripción de voz sin bloquear el manejo de solicitudes HTTP ni depender de APIs de IA externas. Capacidades clave descritas en el README: Autoalojado y centrado en la privacidad: el análisis de documentos, los embeddings, la recuperación vectorial, la transcripción y la inferencia de LLM se ejecutan dentro del entorno Docker autoalojado, sin requerir APIs de IA externas. Procesamiento asíncrono: los clientes reciben una respuesta inmediata 202 Accepted con un identificador de tarea mientras el trabajo intensivo en CPU continúa en segundo plano. Transmisión de respuestas en tiempo real: los eventos enviados por el servidor transmiten las respuestas generadas token por token desde el trabajador Python, a través de Redis Pub/Sub y la puerta de enlace Go, hasta el navegador. Almacenamiento de objetos compatible con S3: MinIO para desarrollo y Cloudflare R2 para producción, usando la misma configuración de cliente compatible con S3. Procesamiento con direccionamiento por contenido: las huellas SHA-256 combinan el contenido fuente, la operación y los parámetros para reutilizar artefactos completados y suprimir el procesamiento duplicado concurrente. Recuperación multilingüe: embeddings multilingües, fragmentación consciente del tokenizador y búsqueda de similitud coseno con FAISS recuperan evidencia relevante en los idiomas admitidos. Pruebas automatizadas aisladas: los manejadores Go usan interfaces de Redis y almacenamiento inyectadas por dependencia, mientras que las pruebas Python simulan modelos, almacenamiento y operaciones de red con Pytest y pytest-mock. Arquitectura: un frontend Next.js proporciona flujos de trabajo para transcripción, resumen y respuesta a preguntas, con sondeo de TanStack Query y renderizado SSE. La puerta de enlace Go + Echo maneja ingesta, validación, subidas de transmisión al almacenamiento de objetos, despacho de tareas, supresión de duplicados y proxy SSE. Redis actúa como broker, almacén de estado de tareas, caché de procesamiento y capa de bloqueo distribuido. El trabajador Python sondea colas y ejecuta tres pipelines: Distiller para resumen mediante un pipeline Map-Reduce con Qwen3 0.6B, Gleaner para RAG usando embeddings FastEmbed e índices FAISS, y Scriber para transcripción de audio mediante Faster-Whisper. Despliegue: diseñado para un VPS pequeño solo con CPU, aproximadamente 4 vCPUs y 8 GB de RAM, con el trabajador de IA alrededor de un presupuesto de memoria de 2 GB. Los modelos GGUF cuantizados Q4_K_M, carga con mapeo de memoria, embeddings basados en ONNX, índices FAISS IndexFlatIP por documento, concurrencia secuencial de trabajadores y estado externalizado mantienen el uso de recursos predecible. Ejecución: Docker y Docker Compose son requisitos previos; clonar el repositorio y ejecutar docker-compose up --build -d. El arranque inicial puede tardar minutos mientras los archivos del modelo se descargan y almacenan en caché. El almacenamiento de producción usa la misma superficie de configuración S3 con un endpoint R2 y S3_REGION=auto, y se pueden aplicar reglas de ciclo de vida con Wrangler. Los objetos crudos expiran después de un día y los objetos de caché después de ocho días, mientras que los metadatos de caché de Redis permanecen reutilizables durante siete días. Pruebas: las pruebas de la puerta de enlace Go usan mocks de Testify para el comportamiento de manejadores, huellas, aciertos de caché, recuperación de bloqueos obsoletos y acceso a almacenamiento; las pruebas Python validan propiedad de caché, indexación consciente del tokenizador, limpieza de transmisión, enrutamiento de trabajadores, reutilización de artefactos y recuperación de fallos; el CI del frontend ejecuta verificación de tipos TypeScript, ESLint y una compilación de producción de Next.js. Licencia: MIT.