Resumenizer

CompletadoDemo
Ver portfolio
Resumenizer

Aplicación web con arquitectura RAG (Retrieval-Augmented Generation) para chatear con tus documentos. Subís un archivo PDF o TXT, el sistema lo fragmenta en chunks de ~400 tokens, genera embeddings semánticos con OpenAI y los indexa en ChromaDB. Al hacer una pregunta, recupera los 5 fragmentos más relevantes por similitud coseno y los usa como contexto para que GPT-4o-mini responda con precisión, citando exactamente de dónde vino cada respuesta.

Capturas de pantalla

Vista principal — documentos indexados y chat listo para preguntas
Vista principal — documentos indexados y chat listo para preguntas
Respuesta con fuentes — fragmentos colapsables con score de relevancia semántica
Respuesta con fuentes — fragmentos colapsables con score de relevancia semántica
Sin información suficiente — el modelo lo indica en lugar de inventar una respuesta
Sin información suficiente — el modelo lo indica en lugar de inventar una respuesta
Filtro por documento — el chat restringe la búsqueda al archivo seleccionado
Filtro por documento — el chat restringe la búsqueda al archivo seleccionado

¿Cómo funciona?

1. Etapa de ingestión — al subir un documento

Cuando subís un archivo, el sistema lo procesa en cuatro pasos: primero extrae el texto del PDF o TXT. Luego lo divide en fragmentos de ~400 tokens con 50 tokens de solapamiento entre fragmentos consecutivos — el overlap evita perder contexto en los bordes de cada chunk. Después, cada fragmento se convierte en un vector de 1536 dimensiones usando el modelo text-embedding-3-small de OpenAI: textos con significado similar producen vectores cercanos en el espacio. Finalmente, los vectores y el texto original se guardan en ChromaDB, una base de datos vectorial que permite búsquedas por similitud semántica.

2. Etapa de consulta — al hacer una pregunta

Cuando escribís una pregunta, el sistema también la convierte en un vector con el mismo modelo de embeddings. ChromaDB compara ese vector contra todos los fragmentos indexados usando distancia coseno y devuelve los 5 más similares semánticamente — esto es búsqueda por significado, no por palabras clave. Esos fragmentos se insertan en un prompt estructurado junto con la pregunta y el historial del chat, con instrucciones explícitas de responder solo desde el contexto. GPT-4o-mini genera la respuesta y el sistema retorna tanto el texto como los fragmentos usados con su score de relevancia.

3. ¿Por qué RAG en lugar de enviar el documento completo?

Enviar el documento completo al modelo en cada consulta tiene tres problemas: los documentos largos superan el límite de tokens del contexto, el costo sube porque se factura por cada token enviado, y la velocidad baja porque el prompt es más grande. RAG soluciona esto enviando solo los fragmentos relevantes para cada pregunta, lo que permite trabajar con documentos de cualquier tamaño, múltiples archivos simultáneos y un costo por consulta mucho más bajo.

Funcionalidades

Tecnologías

PythonFastAPIReactViteDockerGitHub
Ver en GitHub¿Tenés un proyecto? HablemosContactame