Un chatbot RAG multilingüe sobre tus PDFs con FAISS y reranking (coste de búsqueda: 0 €)
Recuperar bien es más importante que generar bien. Construí un pipeline RAG con embeddings multilingües E5, búsqueda vectorial FAISS y un reranker cross-encoder, sobre una arquitectura SaaS multi-tenant. Respuesta media: <3s.
En un sistema RAG (Retrieval-Augmented Generation), todo el mundo se fija en el LLM. Es un error. La calidad de las respuestas depende muchísimo más de qué fragmentos recuperas que del modelo que los redacta. Si recuperas el contexto equivocado, el mejor LLM del mundo te dará una respuesta equivocada con total seguridad.
El problema
Construir un asistente que responda preguntas sobre documentos PDF —manuales, normativas, catálogos— en varios idiomas, con respuestas fundamentadas en el documento y no inventadas, y a coste de infraestructura cercano a cero.
El pipeline de recuperación (donde está el truco)
- Embeddings multilingües: uso
intfloat/multilingual-e5-largepara vectorizar los fragmentos. El modelo entiende que "precio" y "price" están cerca en el espacio vectorial, lo que da soporte multilingüe de serie. - Búsqueda vectorial con FAISS: los vectores se indexan en FAISS, la librería de Facebook para búsqueda de similitud. Corre en CPU, en local, sin servicios gestionados: de ahí el coste de búsqueda de 0 €. Los índices estáticos se pre-generan por idioma; los PDFs que sube el usuario se indexan en RAM por sesión.
- Reranking con cross-encoder: la búsqueda vectorial es rápida pero imprecisa. Por eso añado un segundo paso: un cross-encoder (
mmarco-mMiniLMv2) que re-puntúa los candidatos leyendo pregunta y fragmento juntos. Es más lento, pero solo se aplica a un puñado de candidatos, y mejora drásticamente la precisión del contexto.
La generación
Solo entonces entra el LLM (Llama vía Groq, por su latencia bajísima), que redacta la respuesta a partir del contexto ya filtrado. El resultado: respuesta media por debajo de 3 segundos.
De demo a producto: SaaS multi-tenant
Por encima del motor RAG monté una capa SaaS multi-tenant con SQLite: clientes, planes (free/basic/pro/enterprise), autenticación por X-API-Key y registro de consumo de tokens con límites por plan. Lo que empezó como una demo es, en arquitectura, un producto.
Qué aprendí
Que la frase "RAG es solo meter documentos en un LLM" es engañosa. El valor está en el pipeline de recuperación —embeddings + búsqueda + reranking— y en hacerlo barato y rápido. El LLM es la última milla, no el motor.
Sobre este proyecto
Chatbot Manual
Asistente inteligente que lee documentos PDF en varios idiomas, facilitando a empresas y clientes el acceso rápido a información clave