Saltar al contenido
Explorar conocimiento

patrón · intermedio · 4 min de lectura

Hybrid Search

Hybrid search combina búsqueda por palabras clave y búsqueda semántica para superar las limitaciones de cada método individual, logrando recuperación más robusta en sistemas RAG y de búsqueda.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • hybrid search as the combination of sparse (BM25) and dense (vector) retrieval
  • fusion methods: linear combination, reciprocal rank fusion (RRF), and learned weighting
  • when hybrid improves results over pure semantic or pure keyword search

No cubre

  • embedding model selection or training
  • vector database internals
  • query expansion as a separate topic

Supone

  • The reader understands sparse retrieval (BM25), dense retrieval (vector search), and basic RAG concepts.

Resumen

Hybrid search (búsqueda híbrida) combina dos métodos de recuperación: búsqueda dispersa (keyword/BM25) que encuentra coincidencias exactas de términos, y búsqueda densa (vector/semántica) que encuentra contenido relacionado por significado. Los resultados de ambos métodos se fusionan usando una estrategia de combinación.

La búsqueda híbrida es particularmente útil cuando los documentos contienen tanto términos técnicos precisos como lenguaje natural variado. Un sistema que solo usa vectores puede fallar con siglas o códigos exactos; uno que solo usa keywords falla con sinónimos o paráfrasis.

Alcance y supuestos

Este paquete cubre hybrid search: qué es, cómo funciona la fusión de resultados (RRF, combinación lineal), cuándo usarlo y sus trade-offs.

No cubre modelos de embedding, BM25 en profundidad, ni configuración de bases vectoriales. Asume que entiendes recuperación dispersa (BM25), recuperación densa (vectores) y conceptos básicos de RAG.

Modelo mental

Piensa en dos guías turísticos. Uno solo sigue el mapa exacto (keyword): encuentra calles por nombre, pero si preguntas por "el café cerca del parque" sin saber el nombre, no sabe qué hacer. El otro solo sigue descripciones (vector): entiende "café cerca del parque" pero se pierde con direcciones exactas como "Av. Providencia 1234".

Juntos, cubren todos los casos. Cuando uno falla, el otro probablemente acierta.

Uso práctico

Usa hybrid search cuando:

  • ✅ Tus documentos mezclan terminología técnica (SKUs, IDs, códigos) con descripciones narrativas.
  • ✅ Las consultas de usuario varían entre términos exactos y descripciones vagas.
  • ✅ Necesitas recall alto sin sacrificar precisión en términos específicos.
  • ❌ Tu dominio es puramente semántico (poesía, reseñas) y los términos exactos no importan.
  • ❌ Tu dominio usa solo códigos normalizados que el keyword search captura al 100%.

Ejemplo trabajado: búsqueda híbrida con RRF en un catálogo de productos

Imagina un catálogo de productos electrónicos donde los usuarios buscan tanto por modelo exacto como por descripción:

async function hybridProductSearch(query: string) {
  // Búsqueda por palabras clave (BM25)
  const keywordResults = await searchEngine.search(query, {
    method: "bm25",
    topK: 20,
  });

  // Búsqueda semántica (vector)
  const queryEmbedding = await embedder.embed(query);
  const vectorResults = await vectorDb.search(queryEmbedding, {
    topK: 20,
  });

  // Combinación: Reciprocal Rank Fusion
  const scores = new Map<string, number>();

  function addResults(results: Array<{ id: string; score: number }>, offset: number) {
    results.forEach((r, i) => {
      const current = scores.get(r.id) || 0;
      scores.set(r.id, current + 1 / (offset + i + 1));
    });
  }

  addResults(keywordResults, 0);
  addResults(vectorResults, 20);

  return [...scores.entries()]
    .sort((a, b) => b[1] - a[1])
    .slice(0, 10)
    .map(([id]) => products.get(id));
}

La consulta "MacBook Pro 14 2023" obtiene coincidencia exacta por keyword. La consulta "laptop liviana para programar" obtiene resultados por similitud semántica. Ambas funcionan porque hybrid search combina ambos mundos.

Evidencia

Fuentes citadas