O algoritmo: mantenha um feixe de largura k (ex.: k=5). A cada passo, expanda cada candidato por todos os possíveis próximos tokens, pontue as sequências resultantes e mantenha as top k. Continue até que todos os candidatos tenham gerado um token de fim ou atingido um limite de comprimento. Retorne a sequência completa com maior pontuação. A largura do feixe k troca qualidade por computação: k=1 é decodificação gulosa, k maiores exploram mais caminhos mas custam k vezes mais computação.
Beam search bruto favorece sequências mais curtas (menos tokens = menos multiplicações de probabilidade = maior probabilidade total). Uma penalidade de comprimento (dividindo a pontuação por comprimento^α) combate esse viés, encorajando o modelo a gerar saídas completas e bem formadas em vez de cortar prematuramente. O fator de penalidade α é um hiperparâmetro: α=0 é sem penalidade, α=1 normaliza totalmente pelo comprimento. Valores típicos são 0.6–1.0.
Beam search funciona melhor para tarefas com uma resposta "correta" (tradução, sumarização, geração estruturada) onde você quer a saída mais provável. Funciona mal para tarefas criativas ou conversacionais onde diversidade importa — beam search tende a produzir texto genérico e repetitivo porque sequências de alta probabilidade são frequentemente entediantes. Interfaces modernas de LLM usam amostragem (com temperature e top-p) para chat, e beam search é usado principalmente internamente para tarefas específicas como geração de chamadas de ferramentas.