patrón · intermedio · 4 min de lectura
Re-ranking
Re-ranking es una segunda etapa de recuperación que re-ordena los candidatos obtenidos por un método rápido usando un modelo más preciso, mejorando la relevancia del resultado final.
No requiere conocimientos previos.
Alcance en breve
Cubre
- re-ranking as a second-stage retrieval step that re-orders candidates with a more expensive model
- cross-encoders vs bi-encoders, latency/cost trade-offs
- when re-ranking helps (large candidate pools) vs when it adds unnecessary latency
No cubre
- embedding model training
- vector database index internals
- retrieval evaluation metrics in depth
Supone
- The reader understands retrieval, embeddings, and RAG pipeline concepts.
Resumen
Re-ranking (re-ordenamiento) es un paso intermedio entre la recuperación inicial y la generación en un sistema RAG. Primero, un método barato y rápido (BM25 o búsqueda vectorial) recupera un conjunto grande de candidatos (por ejemplo, 50-100). Luego, un modelo más preciso pero más costoso re-ordena esos candidatos para quedarse con los más relevantes.
El re-ranking mejora significativamente la calidad del contexto que recibe el LLM. El primer paso maximiza recall (no perder documentos relevantes), el segundo maximiza precisión (solo los más relevantes llegan al prompt).
Alcance y supuestos
Este paquete cubre re-ranking como patrón de dos etapas, el rol de cross-encoders vs bi-encoders, y cuándo el re-ranking agrega valor vs cuándo es costo innecesario.
No cubre entrenamiento de modelos de re-ranking, implementación de índices vectoriales, ni métricas profundas de evaluación de recuperación. Asume que entiendes recuperación, embeddings y pipelines RAG.
Modelo mental
Piensa en un proceso de selección. Primero, un reclutador revisa 100 currículums rápidamente y preselecciona 10 (recuperación inicial). Luego, un experto técnico entrevista a esos 10 y los ordena por idoneidad real (re-ranking).
El reclutador es rápido pero puede pasar por alto matices. El experto es más preciso pero no puede evaluar 100 candidatos en detalle. La combinación de ambos da mejor resultado que cualquiera solo.
Uso práctico
Usa re-ranking cuando:
- ✅ Tienes un pool grande de candidatos (>20) y necesitas los mejores 3-5 para el LLM.
- ✅ La precisión del resultado final es crítica (respuestas a clientes, diagnósticos, documentos legales).
- ✅ Puedes tolerar 50-200ms adicionales de latencia.
- ❌ Solo recuperas 3-5 documentos iniciales: el re-ranking agrega latencia sin beneficio.
- ❌ El método de primera etapa ya es muy preciso para tu dominio.
Ejemplo trabajado: re-ranking con cross-encoder
Un cross-encoder evalúa pares (query, documento) y produce una puntuación de relevancia más precisa que la similitud coseno de embeddings:
interface Candidate {
id: string;
text: string;
initialScore: number;
rerankScore?: number;
}
async function retrieveAndRerank(query: string): Promise<Candidate[]> {
// Etapa 1: recuperación rápida — top 50
const candidates: Candidate[] = await vectorSearch(query, 50);
// Etapa 2: re-ranking con cross-encoder — evaluar pares query-doc
const reranked = await Promise.all(
candidates.map(async (doc) => {
const score = await crossEncoder.score(query, doc.text);
return { ...doc, rerankScore: score };
})
);
// Ordenar por score de re-ranking y devolver top 5
return reranked
.sort((a, b) => b.rerankScore - a.rerankScore)
.slice(0, 5);
}
El cross-encoder cuesta ~10-50ms por par. Para 50 candidatos son 500-2500ms. Si tus datos cambian lentamente, puedes cachear scores. Si la latencia es crítica, reduce el pool inicial o usa un modelo de re-ranking más ligero.
Evidencia
- Cohere, What is reranking? explica cómo el re-ranking mejora los resultados de búsqueda al usar un modelo más preciso en una segunda etapa.
- Pinecone, Understanding retrieval in RAG cubre estrategias de recuperación incluyendo re-ranking como mejora de precisión.
Fuentes citadas
- Cohere, What is reranking? (Práctica, 21-07-2026)
- Pinecone, Understanding retrieval in RAG (Práctica, 21-07-2026)