Módulo 5: Keyword vs Semantic Search

5. Búsqueda Híbrida: Lo Mejor de Ambos Mundos

Descripción

Búsqueda híbrida combina keyword search (precisión en exactas) con semantic search (comprensión de significado). Es el enfoque usado por sistemas de producción modernos (Elasticsearch + embeddings, Weaviate hybrid, Pinecone con filtros).


Estrategias de búsqueda híbrida

Estrategia 1: Filtro + Semantic

1. Filtrar con keyword (ej: documentos que mencionan "Python")
2. Rankear con semantic (ordenar por similaridad vectorial)

Ejemplo:

Query: "mejores prácticas de Python"

Paso 1 (keyword): Filtrar docs que contienen "Python"
→ 1000 documentos encontrados

Paso 2 (semantic): Rankear esos 1000 por coseno
→ Top-10 más relevantes sobre "mejores prácticas"

Ventaja: Garantiza que "Python" aparece (keyword) pero encuentra los más relevantes (semantic).


Estrategia 2: Fusión de rankings

1. Ejecutar keyword search → Ranking A (top-100)
2. Ejecutar semantic search → Ranking B (top-100)
3. Fusionar ambos rankings (ej: RRF - Reciprocal Rank Fusion)

RRF (Reciprocal Rank Fusion):

score(doc) = α/rank_keyword + β/rank_semantic

Ejemplo:
Doc X: rank_keyword=5, rank_semantic=3
→ score = 1/5 + 1/3 ≈ 0.53

Doc Y: rank_keyword=1, rank_semantic=50
→ score = 1/1 + 1/50 ≈ 1.02

Doc Y tiene mayor score final → Aparece primero

Ventaja: Documentos que aparecen en ambos rankings (keyword Y semantic) obtienen boost.


Estrategia 3: Cascada

1. Intentar keyword search
   → Si suficientes resultados (ej: > 10) → Retornar
   → Si pocos resultados (< 10) → Continuar

2. Intentar semantic search
   → Complementar con resultados semánticos

Ventaja: Eficiente (keyword es más rápido). Usa semantic solo cuando necesario.


Weaviate hybrid search (ejemplo real)

Query: "machine learning"

Configuración:
- alpha = 0.5 (balance 50% keyword, 50% semantic)
- alpha = 0.0 (100% keyword)
- alpha = 1.0 (100% semantic)

Algoritmo interno:

final_score = alpha × semantic_score + (1-alpha) × keyword_score

Uso típico: alpha=0.5 (balance) o alpha=0.7 (favor semantic).


Elasticsearch + embeddings (ejemplo real)

Setup:

1. Indexar texto normal (keyword con BM25)
2. Agregar campo "embedding" (vector 1536D)
3. En query:
   - Ejecutar keyword search (BM25)
   - Ejecutar vector search (kNN)
   - Combinar scores (weighted sum)

Cuándo usar búsqueda híbrida

Usa híbrida cuando:

  • ✅ Queries mixtas (algunas exactas, otras conceptuales)
  • ✅ Necesitas precisión (keyword) Y cobertura (semantic)
  • ✅ Tienes recursos para ambos métodos
  • ✅ Usuarios esperan "Google-like" (entiende intención pero respeta exactas)

Ejemplos:

  • Buscador de documentación técnica
  • E-commerce (nombre exacto de producto vs descripción conceptual)
  • Sistemas de soporte (ticket IDs exactos vs descripciones)

Trade-offs de híbrido

Ventajas:

  • ✅ Mejor de ambos mundos
  • ✅ Más robusto (si uno falla, el otro compensa)

Desventajas:

  • ❌ Mayor complejidad (mantener dos índices)
  • ❌ Mayor costo (embeddings + índice invertido)
  • ❌ Ajustar pesos (alpha) requiere experimentación

Implementaciones reales

Weaviate:

  • Soporte nativo para hybrid search
  • Parámetro alpha ajustable por query

Elasticsearch:

  • Keyword (BM25) + kNN search (embeddings)
  • Script para combinar scores

Pinecone:

  • Vector search + metadata filtering (pseudo-híbrido)
  • Filtros keyword antes de búsqueda vectorial

Custom:

  • Ejecutar keyword (Elasticsearch) y semantic (Pinecone) en paralelo
  • Fusionar en aplicación (RRF)

Resumen

Puntos clave:

  • Híbrido: Keyword + semantic
  • Estrategias: Filtro+semantic, fusión de rankings, cascada
  • Ventajas: Precisión + cobertura
  • Desventajas: Más complejidad, mayor costo
  • Producción: Weaviate, Elasticsearch, custom fusion

Próxima cápsula: 06-when-to-use-each.md — Decisiones por caso de uso.