RAG Explorer
Sistema RAG (Retrieval-Augmented Generation) con LangChain.js, soporte multi-proveedor (OpenAI, Anthropic) y vector store propio en memoria con búsqueda por similitud coseno.
- ROLE
- Autor
- TIPO
- Personal
- AÑO
- 2026
- ESTADO
- Activo
Contexto
Proyecto educativo y exploratorio para entender en profundidad cómo se construye un sistema RAG real. En lugar de usar un servicio gestionado (LlamaIndex Cloud, etc.), el objetivo era implementar y comprender cada pieza del pipeline desde los cimientos.
Problema
Los tutoriales de RAG suelen mostrar 10 líneas de código que ocultan toda la complejidad real: ¿cómo se divide el texto en chunks con solapamiento? ¿cómo funciona la similitud coseno? ¿cómo se gestiona el contexto enviado al LLM? ¿cómo se intercambia el proveedor sin reescribir todo?
Solución
Pipeline RAG completo con cada componente visible y reemplazable: parser de documentos, splitter configurable, vector store propio con similitud coseno, y capa de generación multi-proveedor. Frontend React para subir documentos y hacer preguntas con visualización de fuentes.
Tech stack
Backend en Node.js con Express 5 y TypeScript, organizado en Clean Architecture. Frontend en React 19 con Vite, Tailwind CSS v4 y GSAP para animaciones. Monorepo con pnpm workspaces. Docker para desarrollo y despliegue.
El vector store extiende VectorStore de @langchain/core en lugar de usar Chroma o Pinecone. Permite controlar el filtrado por score mínimo y la búsqueda coseno directamente, sin infraestructura externa. Adecuado para exploración y aprendizaje sin dependencias de servicios.
Intercambio de proveedor (OpenAI ↔ Anthropic, distintos modelos de embeddings) sin tocar la lógica de la aplicación gracias a las abstracciones de LangChain. El adaptador recibe la interfaz del puerto, no la implementación concreta.
El backend sigue Clean Architecture: domain → application → infrastructure. Los puertos del caso de uso no conocen LangChain ni Express. Esto permite probar el pipeline RAG con dobles in-memory sin levantar ningún servidor ni consumir tokens de API.