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
alphaajustable 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.