PROYECTOS
ML_MODELS

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
3 proveedores de embeddings
2 LLMs soportados
0€ coste mínimo

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.

flowchart LR subgraph Ingesta D[Documento] --> P[Parser] P --> S[TextSplitter] S --> E[EmbeddingModel] E --> VS[VectorStore en memoria] end subgraph Query Q[Pregunta] --> EQ[EmbeddingModel] EQ --> SIM[Similarity Search] VS --> SIM SIM --> CTX[Contexto + chunks] CTX --> LLM[LLM — OpenAI / Anthropic] LLM --> R[Respuesta + fuentes] end

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.

// DECISIONES_TÉCNICAS
01_VECTOR_STORE_PROPIO

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.

02_MULTI_PROVEEDOR_SIN_CAMBIAR_LOGICA

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.

03_CLEAN_ARCHITECTURE_EN_BACKEND

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.

Tags
TypeScript LangChain.js React 19 Express 5 OpenAI Anthropic RAG Docker