Pyversity es una biblioteca Python rápida y liviana diseñada para mejorar la diversidad de resultados de los sistemas de recuperación. La recuperación a menudo devuelve elementos que son muy similares, lo que genera redundancia. Pyversity reclasifica eficientemente estos resultados para mostrar elementos relevantes pero menos redundantes.
Ofrece una API clara y unificada para varias estrategias de diversificación populares, incluida la relevancia marginal máxima (MMR), la diversificación de suma máxima (MSD), los procesos de puntos determinantes (DPP) y la cobertura. Su única dependencia es NumPy, lo que lo hace muy liviano.
En este tutorial, nos centraremos en las estrategias MMR y MSD utilizando un ejemplo práctico. Consulta los CÓDIGOS COMPLETOS aquí.
La diversificación en la recuperación es necesaria porque los métodos de clasificación tradicionales, que priorizan sólo la relevancia para la consulta del usuario, con frecuencia producen un conjunto de resultados principales que son altamente redundantes o casi duplicados.
Esta gran similitud crea una mala experiencia de usuario al limitar la exploración y desperdiciar espacio en la pantalla en elementos casi idénticos. Las técnicas de diversificación abordan esto equilibrando la relevancia con la variedad, asegurando que los elementos recién seleccionados introduzcan información novedosa que no está presente en los elementos ya clasificados.
Este enfoque es fundamental en varios ámbitos: en el comercio electrónico, muestra diferentes estilos de productos; en la búsqueda de noticias, aparecen diferentes puntos de vista o fuentes; y en contextos RAG/LLM, evita alimentar al modelo con pasajes de texto repetitivos y casi duplicados, lo que mejora la calidad de la respuesta general. Consulta los CÓDIGOS COMPLETOS aquí.
En este paso, simulamos el tipo de resultados de búsqueda que podría recuperar de una base de datos vectorial (como Pinecone, Weaviate o FAISS) después de realizar una búsqueda semántica de una consulta como “Perros inteligentes y leales para la familia”.
Estos resultados contienen intencionalmente entradas redundantes (múltiples menciones de razas similares como Golden Retrievers, Labradors y Pastores alemanes), cada una descrita con rasgos superpuestos como lealtad, inteligencia y simpatía familiar.
Esta redundancia refleja lo que sucede a menudo en los sistemas de recuperación del mundo real, donde elementos muy similares reciben altas puntuaciones de similitud. Usaremos este conjunto de datos para demostrar cómo las técnicas de diversificación pueden reducir la repetición y producir un conjunto de resultados de búsqueda más equilibrado y diverso. Consulta los CÓDIGOS COMPLETOS aquí.
“The Golden Retriever is the perfect family companion, known for its loyalty and gentle nature.”,
“A Labrador Retriever is highly intelligent, eager to please, and makes an excellent companion for active families.”,
“Golden Retrievers are highly intelligent and trainable, making them ideal for first-time owners.”,
“The highly loyal Labrador is consistently ranked number one for US family pets due to its stable temperament.”,
“Loyalty and patience define the Golden Retriever, one of the top family dogs globally and easily trainable.”,
“For a smart, stable, and affectionate family dog, the Labrador is an excellent choice, known for its eagerness to please.”,
“German Shepherds are famous for their unwavering loyalty and are highly intelligent working dogs, excelling in obedience.”,
“A highly trainable and loyal companion, the German Shepherd excels in family protection roles and service work.”,
“The Standard Poodle is an exceptionally smart, athletic, and surprisingly loyal dog that is also hypoallergenic.”,
“Poodles are known for their high intelligence, often exceeding other breeds in advanced obedience training.”,
“For herding and smarts, the Border Collie is the top choice, recognized as the world’s most intelligent dog breed.”,
“The Dachshund is a small, playful dog with a distinctive long body, originally bred in Germany for badger hunting.”,
“French Bulldogs are small, low-energy city dogs, known for their easy-going temperament and comical bat ears.”,
“Siberian Huskies are energetic, friendly, and need significant cold weather exercise due to their running history.”,
“The Beagle is a gentle, curious hound known for its excellent sense of smell and a distinctive baying bark.”,
“The Great Dane is a very large, gentle giant breed; despite its size, it’s known to be a low-energy house dog.”,
“The Australian Shepherd (Aussie) is a medium-sized herding dog, prized for its beautiful coat and sharp intellect.”
]
En este paso, calculamos qué tan cerca coincide cada resultado de búsqueda con la consulta del usuario utilizando la similitud de coseno entre sus incrustaciones de vectores. Esto produce una lista clasificada de resultados basada exclusivamente en la relevancia semántica, que muestra qué textos tienen un significado más similar a la consulta. Básicamente, simula lo que arrojaría un motor de búsqueda o un sistema de recuperación antes de aplicar cualquier técnica de diversificación, lo que a menudo da como resultado varias entradas muy similares o redundantes en la parte superior. Consulta los CÓDIGOS COMPLETOS aquí.
puntuaciones = coseno_similaridad(query_embedding.reshape(1, -1), incrustaciones)[0]
print(“\n— Clasificación inicial solo por relevancia (5 principales) —“) initial_ranking_indices = np.argsort(puntuaciones)[::-1] # Ordenar descendente para i en índices_clasificados_iniciales[:5]: print(f”Puntuación: {puntuaciones[i]:.4f} | Resultado: {resultados_búsqueda[i]}”)
Como se ve en el resultado anterior, los resultados principales están dominados por múltiples menciones de labradores y golden retrievers, cada uno de los cuales se describe con rasgos similares como lealtad, inteligencia y simpatía por la familia. Esto es típico de un sistema de recuperación de relevancia únicamente, donde los resultados principales son semánticamente similares pero a menudo redundantes y ofrecen poca diversidad de contenido. Si bien todos estos resultados son relevantes para la consulta, carecen de variedad, lo que los hace menos útiles para los usuarios que desean una descripción más amplia de diferentes razas o perspectivas. Consulta los CÓDIGOS COMPLETOS aquí.
MMR funciona encontrando un equilibrio entre relevancia y diversidad. En lugar de simplemente elegir los resultados más similares a la consulta, selecciona gradualmente elementos que siguen siendo relevantes pero no demasiado similares a los que ya se han elegido.
En términos más simples, imagina que estás creando una lista de razas de perros para “perros familiares inteligentes y leales”. El primer resultado podría ser un labrador, algo muy relevante. Para la siguiente opción, MMR evita elegir otra descripción de Labrador y en su lugar selecciona algo como Golden Retriever o Pastor Alemán.
De esta manera, MMR garantiza que los resultados finales sean útiles y variados, reduciendo la repetición y manteniendo todo estrechamente relacionado con lo que el usuario realmente buscó. Consulta los CÓDIGOS COMPLETOS aquí.
Tras aplicar la estrategia MMR (Maximal Marginal Relevance), los resultados son notablemente más diversos. Si bien los elementos mejor clasificados, como el labrador y el pastor alemán, siguen siendo muy relevantes para la consulta, las entradas posteriores incluyen diferentes razas como los huskies siberianos y los bulldogs franceses. Esto muestra cómo MMR reduce la redundancia al evitar múltiples resultados similares; en cambio, equilibra la relevancia y la variedad, brindando a los usuarios un conjunto de resultados más amplio e informativo que aún se mantienen en el tema. Consulta los CÓDIGOS COMPLETOS aquí.
La estrategia MSD (Suma máxima de distancias) se centra en seleccionar resultados que no sólo sean relevantes para la consulta sino también lo más diferentes posible entre sí. En lugar de preocuparse por la similitud con los elementos previamente seleccionados uno por uno (como lo hace MMR), MSD analiza la distribución general de los resultados seleccionados.
En términos más simples, intenta seleccionar resultados que cubran una gama más amplia de ideas o temas, asegurando una fuerte diversidad en todo el conjunto. Entonces, para el mismo ejemplo de perro, MSD podría incluir razas como Labrador, Pastor Alemán, Beagle y Husky (cada una distinta en tipo y temperamento) para brindar una visión más amplia y completa de los “perros familiares inteligentes y leales”. Consulta los CÓDIGOS COMPLETOS aquí.
Los resultados producidos por la estrategia MSD (Suma Máxima de Distancias) muestran un fuerte enfoque en la variedad y la cobertura. Si bien el labrador y el pastor alemán siguen siendo relevantes para la consulta, la inclusión de razas como el bulldog francés, el husky siberiano y el perro salchicha resalta la tendencia de MSD a seleccionar resultados distintos entre sí.
Este enfoque garantiza que los usuarios vean una combinación más amplia de opciones en lugar de entradas repetitivas o estrechamente relacionadas. En esencia, MSD enfatiza la máxima diversidad en todo el conjunto de resultados, ofreciendo una perspectiva más amplia y al mismo tiempo manteniendo la relevancia general para la intención de búsqueda.
Consulta los CÓDIGOS COMPLETOS aquí. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Soy graduado en ingeniería civil (2022) de Jamia Millia Islamia, Nueva Delhi, y tengo un gran interés en la ciencia de datos, especialmente las redes neuronales y su aplicación en diversas áreas.
🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.