Módulo 5: Keyword vs Semantic Search

2. Keyword Search: Búsqueda Tradicional por Palabras Clave

Descripción

Keyword search (búsqueda por palabras clave) es el método tradicional: buscar documentos que contengan las palabras exactas de la query (o variantes con stemming/lemmatización). Es la tecnología detrás de buscadores clásicos, bases de datos SQL con FULLTEXT, y Elasticsearch básico.


Cómo funciona keyword search

Algoritmo básico:

1. Tokenizar query: "perros domésticos" → ["perros", "domésticos"]
2. Para cada documento:
     ¿Contiene "perros" o "domésticos"?
3. Retornar documentos que contengan al menos una palabra
4. Ordenar por relevancia (TF-IDF, BM25)

TF-IDF: La métrica clásica

TF-IDF = Term Frequency × Inverse Document Frequency

TF (frecuencia del término):

TF = (veces que aparece palabra en documento) / (total palabras en documento)

IDF (rareza del término):

IDF = log(total documentos / documentos que contienen la palabra)

TF-IDF combinado:

TF-IDF = TF × IDF

Interpretación:

  • Palabras frecuentes en el documento → TF alto
  • Palabras raras en el corpus → IDF alto
  • Palabras comunes ("el", "de") → IDF bajo (menos relevantes)

BM25: Mejora de TF-IDF

BM25 (Best Matching 25) es una versión mejorada de TF-IDF usada en Elasticsearch y sistemas modernos.

Mejoras sobre TF-IDF:

  1. Saturación de frecuencia: Palabra que aparece 10 veces vs 100 veces no da 10x más score
  2. Normalización por longitud: Documentos largos no dominan resultados
  3. Parámetros ajustables: k1, b (controlan saturación y normalización)

Resultado: BM25 es más robusto que TF-IDF puro.


Ejemplo de keyword search

Query: "perros domésticos"

Documentos:

Doc 1: "Los perros son animales domésticos leales"
       → Contiene "perros" ✅ y "domésticos" ✅ → Score alto

Doc 2: "El can es un animal de compañía"
       → NO contiene "perros" ni "domésticos" ❌ → Score 0

Doc 3: "Los gatos son mascotas independientes"
       → NO contiene "perros" ni "domésticos" ❌ → Score 0

Doc 4: "Perros y gatos son las mascotas más comunes"
       → Contiene "perros" ✅ pero NO "domésticos" ❌ → Score medio

Ranking:

  1. Doc 1 (contiene ambas palabras)
  2. Doc 4 (contiene una palabra)
  3. Doc 2 y Doc 3 (no match)

Técnicas de mejora

1. Stemming (raíz de palabras):

"perros" → "perr"
"perro" → "perr"
→ Ambos son match ✅

2. Lemmatización:

"corriendo" → "correr"
"corrió" → "correr"
→ Match con forma base ✅

3. Stop words (filtrar palabras comunes):

Query: "el perro de la casa"
→ Filtrar: ["el", "de", "la"]
→ Query efectiva: "perro casa"

4. Sinónimos manuales:

"auto" → También buscar "carro", "automóvil"

Ventajas de keyword search

1. Precisión para búsquedas exactas:

Query: "artículo 42 de la ley X"
→ Solo quieres documentos con "artículo 42"
→ Keyword es perfecto ✅

2. Rápido y eficiente:

  • Índices invertidos (Elasticsearch) son muy rápidos
  • Escalable a millones de documentos

3. Explicable:

  • Puedes ver exactamente por qué un documento fue retornado (contiene las palabras)

4. Sin necesidad de embeddings:

  • No necesitas modelo de ML ni API externa
  • Funciona con cualquier texto

Limitaciones de keyword search

Limitación 1: No entiende sinónimos

Query: "perro"
Doc: "El can es leal"
→ NO match ❌ (aunque "can" = "perro")

Limitación 2: No entiende conceptos relacionados

Query: "animales domésticos"
Doc: "Los gatos son mascotas"
→ NO match ❌ (aunque "mascotas" ≈ "animales domésticos")

Limitación 3: Sensible a vocabulario exacto

Query: "cómo optimizar rendimiento"
Doc: "Guía para mejorar performance"
→ Bajo score (palabras diferentes: "optimizar" ≠ "mejorar", "rendimiento" ≠ "performance")

Limitación 4: No captura orden ni contexto

Query: "banco"
Doc 1: "Fui al banco a sacar dinero" (institución)
Doc 2: "Me senté en un banco del parque" (asiento)
→ Ambos tienen mismo score (ambos contienen "banco")
→ No distingue significado según contexto

Resumen

Puntos clave:

  • Keyword search: Coincidencias exactas de palabras
  • TF-IDF: Frecuencia × rareza (métrica clásica)
  • BM25: Versión mejorada (saturación, normalización)
  • Técnicas: Stemming, lemmatización, stop words, sinónimos
  • Ventajas: Preciso para exactas, rápido, explicable
  • Limitaciones: No sinónimos, no conceptos, no contexto

Próxima cápsula: 03-semantic-search.md — Búsqueda vectorial con embeddings.