BM25 (Best Matching 25)
Algoritmo probabilístico estándar para búsqueda léxica basado en TF-IDF con saturación de frecuencia.
Definición Técnica & Formal
BM25 calcula la relevancia de un documento frente a palabras clave buscando coincidencia exacta de términos. Modifica TF-IDF introduciendo parámetros de saturación de frecuencia de término ($k_1$) y normalización por longitud del documento ($b$).
Puntos Clave & Aplicaciones
"Si la palabra "inteligencia" aparece 1 vez es relevante; si aparece 5 veces es muy relevante; pero si aparece 50 veces en una página corta, ¡ya no aporta 10 veces más relevancia! BM25 aplana ese beneficio."
💡 Tip: Puedes presionar el botón "Dibujar / Apuntes" en la barra superior para hacer anotaciones gráficas sobre este diagrama.Fórmula Matemática
Demostración Visual e Interactiva
Interactúa con los controles para simular dinámicamente el funcionamiento de BM25 (Best Matching 25).
Visualizador de la Arquitectura "BM25 (Best Matching 25)"
Si la palabra "inteligencia" aparece 1 vez es relevante; si aparece 5 veces es muy relevante; pero si aparece 50 veces en una página corta, ¡ya no aporta 10 veces más relevancia! BM25 aplana ese beneficio.
Ejemplo de Código & Demostración
from rank_bm25 import BM25Okapi
corpus = [
"búsqueda vectorial en bases de datos",
"modelos de lenguaje y embeddings RAG",
"algoritmo BM25 para recuperación léxica"
]
tokenized_corpus = [doc.split(" ") for doc in corpus]
bm25 = BM25Okapi(tokenized_corpus)
query = "algoritmo BM25".split(" ")
scores = bm25.get_scores(query)
print("Scores BM25:", scores)