El algoritmo: mantener un beam de ancho k (por ejemplo, k=5). En cada paso, expandir cada candidato con todos los posibles siguientes tokens, puntuar las secuencias resultantes y conservar las k mejores. Continuar hasta que todos los candidatos hayan generado un token de fin o alcanzado un límite de longitud. Devolver la secuencia completa con mayor puntuación. El ancho del beam k intercambia calidad por cómputo: k=1 es decodificación greedy, k más grande explora más caminos pero cuesta k veces más cómputo.
El beam search sin modificar favorece secuencias más cortas (menos tokens = menos multiplicaciones de probabilidad = mayor probabilidad total). Una penalización por longitud (dividir la puntuación por longitud^α) contrarresta este sesgo, animando al modelo a generar salidas completas y bien formadas en lugar de cortar prematuramente. El factor de penalización α es un hiperparámetro: α=0 es sin penalización, α=1 normaliza completamente por longitud. Los valores típicos son 0.6–1.0.
Beam search funciona mejor para tareas con una respuesta "correcta" (traducción, resumen, generación estructurada) donde quieres la salida más probable. Funciona mal para tareas creativas o conversacionales donde importa la diversidad — beam search tiende a producir texto genérico y repetitivo porque las secuencias de alta probabilidad suelen ser aburridas. Las interfaces modernas de LLM usan muestreo (con temperatura y top-p) para chat, y beam search se usa principalmente internamente para tareas específicas como generación de llamadas a herramientas.