JuliaLM: Un Sistema RAG Autónomo para Bases de Conocimiento Personal
Los desarrolladores a menudo enfrentan el desafío de procesar grandes volúmenes de documentos: PDFs, conferencias de YouTube, páginas web. Los chatbots estándar como ChatGPT pierden contexto al trabajar con múltiples fuentes, y los frameworks RAG preconfigurados tienen dificultades con documentos escaneados y videos. JuliaLM resuelve esto con una canalización personalizada: carga única de fuentes, búsqueda multiestrategia y presupuesto de contexto. El sistema está construido sobre Nuxt.js, FastAPI y SurrealDB, proporcionando búsqueda vectorial, chat y generación de tarjetas de estudio.
Arquitectura del Stack Tecnológico y Elección de SurrealDB
El frontend de Nuxt.js se comunica con el backend mediante REST y SSE. FastAPI orquesta la IA con LangGraph, gestiona una cola de tareas y se integra con SurrealDB. La base de datos combina tablas relacionales, conexiones de grafos y búsqueda vectorial en un solo servicio, reemplazando Postgres + Redis + Pinecone.
Frontend (Nuxt.js)
↕ REST + SSE
Backend (FastAPI)
├── LangGraph (orquestación de IA)
├── Comandos en segundo plano (cola de tareas)
├── SurrealDB (datos + vectores + grafo)
├── Gotenberg (conversión de documentos)
└── MiniMax / API de Embedding (LLM + vectorización)
La cola de tareas se implementa sobre SurrealDB con reintentos (hasta 5 intentos) y retroceso exponencial. Para fuentes ligeras—procesamiento síncrono (5–10 segundos); para PDFs pesados—asíncrono con sondeo de estado.
Análisis en Cascada de Fuentes
El procesamiento de documentos utiliza alternativas para garantizar fiabilidad:
- Archivos PDF y de oficina: Docling para Markdown con preservación de estructura (encabezados, tablas). Alternativa—Gotenberg basado en LibreOffice para PPTX/XLSX.
- YouTube: 1) youtube-transcript-api (subtítulos por idioma: RU→EN→ES→PT); 2) pytubefix (cliente Android); 3) Firecrawl/Jina.
- Páginas web: Playwright (renderizado JS, aleatorización de UA/viewport) + readability; alternativas—Jina Reader, HTTP.
- Imágenes: Modelo de visión para OCR de texto manuscrito.
Esto garantiza la extracción de texto incluso con fallos de la API de YouTube o CAPTCHAs.
Vectorización y Búsqueda Multiestrategia
El texto se divide en fragmentos de ~500 tokens (15% de superposición) con separadores priorizados: saltos de línea dobles → saltos de línea simples → puntos. Un equilibrio empírico entre precisión y contexto para textos científicos.
La búsqueda de fuentes combina cuatro estrategias en paralelo:
- Búsqueda vectorial—semántica mediante embeddings (coseno ≥ 0.15).
- Búsqueda de texto—BM25 sobre texto completo.
- Búsqueda de títulos—sobre títulos.
- Búsqueda de ideas clave—sobre resúmenes e ideas clave.
Deduplicación: puntuación +0.05 por coincidencia. Top 5 resultados.
Presupuesto de Contexto para Documentos Largos
Límite general—300,000 caracteres (75K tokens). Por fuente: mínimo 5,000, máximo 40,000.
- Fuente corta: completamente.
- Larga + consulta conocida: ideas clave + fragmentos relevantes (búsqueda vectorial interna).
- Larga + consulta desconocida: ideas clave + inicio del texto.
Este enfoque evita el desbordamiento de contexto al trabajar con libros.
Tarjetas de Estudio con FSRS
Generación de pares "pregunta-respuesta" en JSON con validación. Repetición espaciada mediante FSRS: estabilidad, dificultad, parámetros de estado (nuevo/aprendizaje/repaso). Calificación 1–4 recalcula el horario. Integración en el cuaderno elimina exportación a Anki.
Búsqueda Avanzada en la Base de Datos
Dos modos básicos: BM25 y búsqueda vectorial. "Pregunta a la base de datos"—grafo LangGraph:
- Generación de hasta 5 subconsultas con instrucciones.
- Búsqueda paralela (hasta 10 resultados/consulta).
- Síntesis de respuestas intermedias.
Conclusiones Clave
- El análisis en cascada garantiza la extracción de texto de cualquier fuente, incluyendo YouTube sin subtítulos.
- Cuatro estrategias de búsqueda mejoran la recuperación en un 20–30% comparado con la búsqueda vectorial única.
- El presupuesto de contexto permite procesar corpus >1000 páginas sin perder relevancia.
- La integración de FSRS simplifica el aprendizaje automatizando la repetición espaciada.
- SurrealDB simplifica el despliegue: un contenedor en lugar de tres bases de datos.
— Editorial Team
Aún no hay comentarios.