RAG that works: chunking, reranking and hybrid search
"Mi RAG no funciona" casi nunca significa "mi modelo es malo". Significa que el fragmento correcto no llegó al contexto: se cortó mal, se rankeó mal o no se encontró. El 80% de la calidad de un RAG se decide antes de que el modelo escriba una palabra.
Este es el pipeline completo y las tres decisiones que más pesan, con fuentes.
El pipeline, en 5 pasos
1. Chunking → partir los documentos en fragmentos
2. Embeddings → convertir fragmentos en vectores
3. Retrieval → buscar los k más parecidos
4. Reranking → reordenar esos k por relevancia real
5. Generate → responder con los mejores fragmentos
La mayoría optimiza el 5 y descuida el 1 y el 4, que es donde está la calidad.
1. Chunking: la decisión que más pesa
La configuración del chunking influye en la calidad de la recuperación tanto como la elección del modelo de embeddings; si el chunking está mal, ningún reranking lo salva (hallazgo de Vectara presentado en NAACL 2025, recogido en el currículo de AI Engineering from Scratch). - Source: Chunking Strategies for RAG - AI Engineering from Scratch
Reglas prácticas: respeta la estructura (párrafos, secciones, encabezados), añade solapamiento entre fragmentos, y guarda metadatos (documento, sección, fecha) para poder citar y filtrar.
2. Embeddings: no siempre el mejor del leaderboard
El ranking público de embeddings (MTEB) es un buen punto de partida, pero tres cosas pesan más en producción: tu dominio (técnico, legal, médico), el costo por millón de tokens embebidos y las dimensiones del vector (afectan el tamaño del índice y la latencia). Un modelo mediano sobre tu dominio le gana a uno top sobre datos genéricos.
3. Hybrid search: palabras + significado
La búsqueda por embeddings es buena con sinónimos y mala con términos exactos (un código de error, un nombre propio). La búsqueda clásica de palabras (BM25) es lo contrario. Por eso el estándar de hoy es híbrido: BM25 para precisión léxica + vectores para significado, combinando ambos rankings. - Source: Information Retrieval & Search - AI Engineering from Scratch
4. Reranking: el segundo pase que casi todos se saltan
"El reranking es una técnica para mejorar la relevancia de la búsqueda reordenando un conjunto de documentos según su relevancia para la consulta. A diferencia de la búsqueda por similitud de embeddings, los modelos de reranking están entrenados específicamente para entender la relación entre consultas y documentos, y a menudo producen puntuaciones de relevancia más precisas." - Source: Reranking - Vercel AI SDK
En la práctica: recuperas 20-50 candidatos con embeddings y los reordenas con un modelo de reranking, quedándote con los 3-5 mejores. Con el AI SDK es una llamada:
// Fuente: Reranking — Vercel AI SDK
import { rerank } from 'ai';
import { cohere } from '@ai-sdk/cohere';
const { ranking } = await rerank({
model: cohere.reranking('rerank-v4.0-pro'),
documents, // los candidatos de la búsqueda
query: 'límite de reintentos',
topN: 3, // los 3 mejores al contexto
});
Hay modelos de reranking en Cohere (rerank-v4.0-pro, rerank-v4.0-fast, rerank-v3.5), Amazon Bedrock y Together.ai, entre otros. - Source: Reranking - Vercel AI SDK
Es más barato rerankear 30 documentos que mandar 30 al modelo generador. Y suele subir la calidad más que cambiar de modelo.
5. Cómo medirlo
Dos números y dos tiempos:
- Recall@k: ¿el fragmento correcto está entre los k recuperados? (mide el retrieval).
- Fidelidad de la respuesta: ¿el modelo respondió con lo recuperado? (mide la generación).
- Latencia por etapa: retrieval, rerank y generación tienen perfiles distintos.
- Costo por consulta: embeddings + rerank + generación.
Sin esto, "mejoré el RAG" es una opinión. Con esto, es un número. → Evals: los 3 tipos
Mi orden de optimización
- Estructura los documentos (sin estructura, ningún chunking salva).
- Elige un chunking decente con solapamiento y metadatos.
- Prueba hybrid search antes que un embedding más caro.
- Añade reranking de 20-50 candidatos a 3-5.
- Solo entonces cambia el modelo generador.
Si tu presupuesto es finito, este orden rinde más que cualquier modelo nuevo. Y si el problema no es el conocimiento sino el comportamiento, quizá lo que necesitas no es RAG: → Fine-tuning vs RAG vs prompting
¿En qué paso se te rompe el RAG: retrieval o generación? Cuéntame en los comentarios cómo lo mides.