Cómo evaluar la calidad de recuperación en tuberías RAG (parte 2): rango recíproco medio (MRR) y precisión promedio (AP)

Si se perdió la Parte 1: Cómo evaluar la calidad de recuperación en RAG Pipelines, consulte aquí

En mi publicación anterior, eché un vistazo a evaluar la calidad de recuperación de una canalización RAG, así como algunas métricas básicas para hacerlo. Más específicamente, esa primera parte se centró principalmente en medidas binarias que no tienen en cuenta el orden, evaluando esencialmente si existen resultados relevantes en el conjunto recuperado o no. En esta segunda parte, exploraremos más a fondo las medidas binarias que tienen en cuenta el orden. Es decir, medidas que tienen en cuenta el ranking con el que se recupera cada resultado relevante, además de evaluar si se recupera o no. Entonces, en esta publicación, analizaremos más de cerca dos métricas binarias basadas en pedidos de uso común: rango recíproco medio (MRR) y precisión promedio (AP).

Por qué es importante la clasificación en la evaluación de la recuperación

La recuperación efectiva es realmente importante en un proceso de RAG, dado que un buen mecanismo de recuperación es el primer paso para generar respuestas válidas, basadas en nuestros documentos. De lo contrario, si no se pueden identificar los documentos correctos que contienen la información necesaria en primer lugar, ninguna magia de IA podrá solucionar este problema y proporcionar respuestas válidas.

Podemos distinguir entre dos grandes categorías de medidas de evaluación de la calidad de la recuperación: medidas binarias y graduadas. Más específicamente, las medidas binarias clasifican un fragmento recuperado como relevante o irrelevante, sin situaciones intermedias. Por otro lado, cuando utilizamos medidas graduadas, consideramos que la relevancia de un fragmento para la consulta del usuario es más bien un espectro y, de esta manera, un fragmento recuperado puede ser más o menos relevante.

Las medidas binarias se pueden dividir a su vez en medidas que no tienen en cuenta el orden y que tienen en cuenta el orden. Las medidas que no tienen en cuenta el orden evalúan si un fragmento existe o no en el conjunto recuperado, independientemente de la clasificación con la que se recuperó. En mi última publicación, analizamos detalladamente las medidas binarias que no tienen en cuenta el orden más comunes y ejecutamos un ejemplo de código detallado en Python. Es decir, repasamos HitRate@K, Precision@K, Recall@K y F1@K. Por el contrario, las medidas binarias que tienen en cuenta el orden, además de considerar si existen fragmentos o no en el conjunto recuperado, también tienen en cuenta la clasificación con la que se recuperan.

Por lo tanto, en la publicación de hoy, veremos más detalladamente las métricas de recuperación binarias con reconocimiento de pedidos más utilizadas, como MRR y AP, y también veremos cómo se pueden calcular en Python.

Escribo 🍨DataCream, donde aprendo y experimento con IA y datos. Suscríbete aquí para aprender y explorar conmigo.

Algunas medidas binarias que tienen en cuenta el orden

Por lo tanto, las medidas binarias que no tienen en cuenta el orden, como Precision@K o Recall@K, nos dicen si los documentos correctos están en algún lugar de los k fragmentos superiores o no, pero no indican si un documento está puntuando en la parte superior o en la parte inferior de esos k fragmentos. Y esta información exacta es la que nos proporcionan las medidas conscientes del pedido. Algunas medidas muy útiles y de uso común que no tienen en cuenta el orden son el rango recíproco medio (MRR) y la precisión promedio (AP). Pero veamos todo esto con más detalle.

🎯 Rango recíproco medio (MRR)

Una medida basada en pedidos comúnmente utilizada para evaluar la recuperación es el rango recíproco medio (MRR). Dando un paso atrás, el Rango Recíproco (RR) expresa en qué ranking se encuentra el primer resultado verdaderamente relevante, entre los k primeros resultados recuperados. Más precisamente, mide qué tan alto aparece el primer resultado relevante en el ranking. RR se puede calcular de la siguiente manera, siendo rango_i el rango en el que se encuentra el primer resultado relevante:

Imagen del autor

También podemos explorar visualmente este cálculo con el siguiente ejemplo:

Imagen del autor

Ahora podemos armar el rango recíproco medio (MRR). MRR expresa la posición promedio del primer elemento relevante en diferentes conjuntos de resultados.

Imagen del autor

De esta forma, el MRR puede oscilar entre 0 y 1. Es decir, cuanto mayor sea el MRR, más arriba en el ranking aparecerá el primer documento relevante.

Un ejemplo de la vida real en el que una métrica como MRR puede ser útil para evaluar el paso de recuperación de un oleoducto RAG sería cualquier entorno de ritmo rápido, donde se necesita una toma de decisiones rápida y debemos asegurarnos de que surja un resultado verdaderamente relevante en la parte superior de la búsqueda. Funciona bien para evaluar sistemas en los que un solo resultado relevante es suficiente y la información importante no está dispersa en varios fragmentos de texto.

Una buena metáfora para comprender mejor el MRR como una métrica de evaluación de recuperación es la Búsqueda de Google. Consideramos a Google como un buen motor de búsqueda porque puedes encontrar lo que buscas en los primeros resultados. Si tuviera que desplazarse hacia abajo hasta el resultado 150 para encontrar lo que busca, no lo consideraría un buen motor de búsqueda. De manera similar, un buen mecanismo de búsqueda de vectores en una tubería RAG debería mostrar los fragmentos relevantes en clasificaciones razonablemente altas y, por lo tanto, obtener un MRR razonablemente alto.

🎯 Precisión promedio (AP)

En mi publicación anterior sobre medidas de recuperación binarias sin reconocimiento de pedidos, analizamos específicamente Precision@k. En particular, Precision@k indica cuántos de los k documentos más recuperados son realmente relevantes. Precision@k se puede calcular de la siguiente manera:

Imagen del autor

La precisión promedio (AP) se basa aún más en esa idea. Más específicamente, para calcular AP, inicialmente necesitamos calcular de forma iterativa Precision@k para cada k cuando aparece un elemento nuevo y relevante. Luego podemos calcular AP simplemente calculando el promedio de esas puntuaciones de Precision@k.

Pero veamos un ejemplo ilustrativo de este cálculo. Para este conjunto de ejemplo, observamos que se introducen nuevos fragmentos relevantes en el conjunto recuperado para k = 1 y k = 4.

Imagen del autor

Por lo tanto, calculamos Precision@1 y Precision@4 y luego tomamos su promedio. Eso será (1/1 + 2/4)/ 2 = (1 + 0,5)/ 2 = 0,75.

Entonces podemos generalizar el cálculo de AP de la siguiente manera:

Imagen del autor

Nuevamente, AP puede variar de 0 a 1. Más específicamente, cuanto mayor sea la puntuación AP, más consistentemente nuestro sistema de recuperación clasificará los documentos relevantes en la parte superior. En otras palabras, cuantos más documentos relevantes se recuperan y más aparecen ante los irrelevantes.

A diferencia de MRR, que se centra únicamente en el primer resultado relevante, AP tiene en cuenta la clasificación de todos los fragmentos relevantes recuperados. Básicamente, cuantifica cuánta o poca basura recogemos, mientras recuperamos los elementos verdaderamente relevantes, para varios k principales.

Para comprender mejor AP y MRR, también podemos imaginarlos en el contexto de una lista de reproducción de Spotify. De manera similar al ejemplo de la Búsqueda de Google, un MRR alto significaría que la primera canción de la lista de reproducción es nuestra canción favorita. Por otro lado, un AP alto significaría que toda la lista de reproducción es buena y muchas de nuestras canciones favoritas aparecen con frecuencia y en la parte superior de la lista de reproducción.

Entonces, ¿nuestra búsqueda de vectores es buena?

Normalmente, continuaría esta sección con el ejemplo de Guerra y Paz, como lo he hecho en mis otros tutoriales de RAG. Sin embargo, el código de recuperación completo se está volviendo bastante grande para incluirlo en cada publicación. En cambio, en esta publicación, me centraré en mostrar cómo calcular estas métricas en Python, haciendo todo lo posible para que los ejemplos sean concisos.

¡De todos modos! Veamos cómo se pueden calcular MRR y AP en la práctica para una canalización RAG en Python. Podemos definir funciones para calcular el RR y MRR de la siguiente manera:

al escribir import List, Iterable, Sequence # Rango recíproco (RR) def reciprocal_rank(relevancia: Secuencia[int]) -> float: para i, rel en enumerar (relevancia, inicio = 1): si rel: devuelve 1.0 / i devuelve 0.0 # Rango recíproco medio (MRR) def rango_reciprocal medio (toda_relevancia: iterable[Sequence[int]]) -> flotador: vals = [reciprocal_rank(r) for r in all_relevance]
devuelve suma(vals)/len(vals) si vals es 0.0

Ya hemos calculado Precision@k en la publicación anterior de la siguiente manera:

# Precision@k def precision_at_k(relevancia: Secuencia[int]k: int) -> float: k = min(k, len(relevancia)) si k == 0: devolver 0.0 devolver suma(relevancia)[:k]) /k

Sobre la base de eso, podemos definir la precisión promedio (AP) de la siguiente manera:

def precisión_promedio(relevancia: Secuencia[int]) -> flotante: si no es relevancia: devuelve 0.0 precisiones = []
hit_count = 0 para i, rel en enumerar(relevancia, inicio=1): si rel: hit_count += 1 precisiones.append(hit_count / i) # Precision@i devuelve suma(precisiones) / hit_count si hit_count else 0.0

Cada una de estas funciones toma como entrada una lista de etiquetas de relevancia binaria, donde 1 significa que un fragmento recuperado es relevante para la consulta y 0 significa que no lo es. En la práctica, estas etiquetas se generan comparando los resultados recuperados con el conjunto de verdad fundamental, exactamente como lo hicimos en la Parte 1 al calcular Precision@K y Recall@K. De esta manera, para cada consulta (por ejemplo, “¿Quién es Anna Pávlovna?”), generamos una lista de relevancia binaria basada en si cada fragmento recuperado contiene el texto de la respuesta. A partir de ahí, podemos calcular todas las métricas utilizando las funciones que se muestran arriba.

Otra métrica útil basada en pedidos que podemos calcular es la precisión media media (MAP). Como puedes imaginar, MAP es la media de los AP para diferentes conjuntos recuperados. Por ejemplo, si calculamos el AP para tres preguntas de examen diferentes en nuestro proceso RAG, la puntuación MAP nos indica la calidad general de la clasificación en todas ellas.

en mi mente

Las medidas binarias sin reconocimiento de pedidos que vimos en la primera parte de esta serie, como HitRate@k, Precsion@k, Recall@k y F1@k, pueden proporcionarnos información valiosa para evaluar el rendimiento de recuperación de una canalización RAG. No obstante, dichas medidas sólo nos proporcionan información sobre si un documento relevante está presente en el conjunto recuperado o no.

Las medidas binarias que tienen en cuenta el orden analizadas en esta publicación, como el rango recíproco medio (MRR) y la precisión promedio (AP), pueden brindarnos más información, ya que no solo nos dicen si los documentos relevantes existen en los resultados recuperados, sino también qué tan bien están clasificados. De esta manera, podemos tener una mejor visión general de qué tan bien funciona el mecanismo de recuperación de nuestro canal RAG, dependiendo de la tarea y el tipo de documentos que estemos utilizando.

Estén atentos a la siguiente y última parte de esta serie de evaluación de recuperación, donde analizaré las medidas de evaluación de recuperación graduada para tuberías RAG.

¿Te encantó esta publicación? ¡Seamos amigos! Únase a mí en:

📰Substack 💌 Medio 💼LinkedIn ☕¡Cómprame un café!