patrón · intermedio · 4 min de lectura
Retrieval
Retrieval es el proceso de encontrar documentos relevantes para una consulta en un sistema RAG. La estrategia de recuperación determina qué información llega al modelo y, por tanto, la calidad de la respuesta generada.
No requiere conocimientos previos.
Alcance en breve
Cubre
- retrieval as the process of finding relevant documents for an LLM context
- sparse (BM25), dense (vector), and hybrid retrieval methods
- precision, recall, latency, and cost trade-offs per method
No cubre
- fine-tuning retrievers
- vector database internals
- chunking strategies (covered separately)
Supone
- The reader understands RAG, embeddings, and basic search concepts.
Resumen
Retrieval (recuperación) es el componente de un sistema RAG que busca documentos relevantes para una consulta. Existen dos grandes familias: recuperación dispersa (sparse), basada en coincidencia de términos como BM25, y recuperación densa (dense), basada en similitud semántica con vectores de embeddings.
La elección entre una y otra — o su combinación — afecta directamente qué información recupera el sistema, qué tan rápido lo hace, y qué tan bien responde a consultas que usan vocabulario diferente al de los documentos indexados.
Alcance y supuestos
Este paquete cubre recuperación dispersa (BM25), densa (vector), e híbrida, con sus trade-offs de precisión, recall, latencia y costo.
No cubre fine-tuning de retrievers, implementación interna de índices vectoriales, ni estrategias de chunking o re-ranking. Asume que entiendes RAG, embeddings y búsqueda básica.
Modelo mental
Piensa en dos formas de buscar en una biblioteca. La primera es buscar palabras exactas en los índices (recuperación dispersa). Encuentra exactamente lo que pediste, pero si usas sinónimos o términos diferentes, el libro no aparece.
La segunda es pedirle a un bibliotecario que entiende el tema (recuperación densa). Lees "devoluciones" y el bibliotecario te lleva a la sección de reembolsos, aunque la palabra "devolución" no esté en los libros. Es más flexible, pero puede traerte libros que solo se parecen superficialmente.
Uso práctico
Usa el método según el tipo de consulta y contenido:
- ✅ BM25 para dominios con vocabulario especializado y términos exactos (códigos médicos, legales, SKUs).
- ✅ Vector (dense) para contenido variado donde el significado importa más que las palabras exactas.
- ✅ Híbrido cuando necesitas lo mejor de ambos: precisión de términos + flexibilidad semántica.
- ❌ Solo vector si tu dominio tiene términos técnicos clave que la semántica no captura bien.
- ❌ Solo BM25 si el contenido cambia rápido y no puedes re-indexar embeddings frecuentemente.
Ejemplo trabajado: recuperación híbrida en un sistema de soporte
Un sistema de soporte combina BM25 para términos exactos (modelos de producto, errores) con búsqueda semántica para descripciones:
interface SearchResult {
id: string;
text: string;
score: number;
}
async function hybridSearch(query: string, k = 5): Promise<SearchResult[]> {
// Búsqueda por términos exactos (BM25)
const keywordResults: SearchResult[] = await bm25Search(query, k);
// Búsqueda semántica (vector)
const queryVector = await embeddingModel.embed(query);
const vectorResults: SearchResult[] = await vectorSearch(queryVector, k);
// Fusión por Reciprocal Rank Fusion (RRF)
const rrfScores = new Map<string, number>();
for (const [rank, results] of [keywordResults, vectorResults].entries()) {
results.forEach((r, i) => {
const score = 1 / (60 + rank * k + i); // RRF: rank = posición en lista
rrfScores.set(r.id, (rrfScores.get(r.id) || 0) + score);
});
}
return [...rrfScores.entries()]
.sort((a, b) => b[1] - a[1])
.slice(0, k)
.map(([id]) =>
[...keywordResults, ...vectorResults].find(r => r.id === id)!
);
}
La combinación captura consultas como "error 503 en el login" donde "503" y "login" son términos exactos pero la solución podría describirse con vocabulario diferente.
Evidencia
- Pinecone, Understanding retrieval in RAG explica métodos de recuperación y cómo integrarlos en pipelines RAG.
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks introduce el concepto de RAG y los fundamentos de recuperación para generación aumentada.
Fuentes citadas
- Pinecone, Understanding retrieval in RAG (Práctica, 21-07-2026)
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (Primaria, 20-07-2026)