Compartir a través de


Puntuación por relevancia en la búsqueda híbrida mediante la fusión de clasificación recíproco (RRF)

La fusión de clasificación recíproca (RRF) es un algoritmo que evalúa las puntuaciones de búsqueda de varios resultados clasificados previamente para generar un conjunto de resultados unificado. En Azure AI Search, RRF se usa cuando dos o más consultas se ejecutan en paralelo. Es decir, para las consultas híbridas y para varias consultas vectoriales. Cada consulta individual genera un conjunto de resultados clasificado y RRF combina y homogeniza las clasificaciones en un único conjunto de resultados para la respuesta de la consulta.

RRF se basa en el concepto de clasificación recíproca, que es el inverso de la clasificación del primer documento pertinente en una lista de resultados de búsqueda. El objetivo de la técnica es tener en cuenta la posición de los elementos en las clasificaciones originales y dar mayor importancia a los elementos que se clasifican más arriba en varias listas. Este enfoque puede ayudar a mejorar la calidad general y la confiabilidad de la clasificación final, lo que hace que sea más útil para la tarea de fusionar varios resultados de búsqueda ordenados.

Funcionamiento de la clasificación de RRF

La RRF funciona tomando los resultados de búsqueda de varios métodos, asignando una puntuación de rango recíproca a cada documento de los resultados y combinando después las puntuaciones para crear una nueva clasificación. El concepto es que los documentos que aparecen en las primeras posiciones a través de múltiples métodos de búsqueda tienen más probabilidades de ser más relevantes y deben clasificarse más arriba en el resultado combinado.

Esta es una explicación sencilla del proceso de RRF:

  1. Obtiene los resultados de búsqueda clasificados de varias consultas que se ejecutan en paralelo.

  2. Asigne puntuaciones de clasificación recíprocas para los resultados en cada una de las listas clasificadas. La RRF genera un nuevo @search.score para cada coincidencia en cada conjunto de resultados. A cada documento de los resultados de la búsqueda, el motor le asigna una puntuación de rango recíproco en función de su posición en la lista. La puntuación se calcula como 1/(rank + k), donde rank es la posición del documento en la lista y k es una constante. Los experimentos muestran que el algoritmo funciona mejor cuando se establece k en un valor pequeño, como 60. Tenga en cuenta que este valor k es una constante en el algoritmo RRF y se separa completamente del valor k que controla el número de vecinos más cercanos.

  3. Combinar puntuaciones. Para cada documento, el motor suma las puntuaciones de rango recíprocas obtenidas de cada sistema de búsqueda, produciendo una puntuación combinada para cada documento. 

  4. El motor clasifica los documentos en función de las puntuaciones combinadas y los ordena. La lista resultante es la clasificación fusionada.

Solo se usan campos marcados como searchable en el índice o searchFields en la consulta para la puntuación. Solo los campos marcados como retrievable, o los especificados en select en la consulta, se devuelven en los resultados de búsqueda, junto con su puntuación de búsqueda.

Ejecución de consultas en paralelo

RRF se usa cada vez que hay más de una ejecución de consulta. Los siguientes ejemplos ilustran modelos de consulta en los que se produce una ejecución paralela de la consulta:

  • Una consulta de texto completo, más una consulta vectorial (escenario híbrido simple), equivale a dos ejecuciones de consulta.
  • Una consulta de texto completo, más una consulta vectorial dirigida a dos campos vectoriales, equivale a tres ejecuciones de consulta.
  • Una consulta de texto completo, además de dos consultas vectoriales destinadas a cinco campos vectoriales, es igual a 11 ejecuciones de consulta.

Puntuaciones en los resultados de la búsqueda híbrida

Cada vez que se clasifican los resultados, la @search.score propiedad contiene el valor utilizado para ordenar los resultados. Las puntuaciones se generan mediante algoritmos de clasificación que varían para cada método. Cada algoritmo tiene su propio rango y magnitud.

El siguiente cuadro identifica la propiedad de puntuación devuelta en cada coincidencia, algoritmo y rango de puntuaciones para cada algoritmo de clasificación de relevancia. Para más información y un diagrama del flujo de trabajo de puntuación, consulte Relevancia en Azure AI Search.

Método de búsqueda Parameter Algoritmo de puntuación Range
búsqueda de texto completo @search.score Algoritmo BM25 No hay límite superior.
vector search @search.score Algoritmo HNSW, mediante la métrica de similitud especificada en la configuración de HNSW. 0,333 - 1,00 (coseno), 0 a 1 para euclídeo y producto escalar.
búsqueda híbrida @search.score Algoritmo RRF El límite superior está limitado por el número de consultas que se fusionan, con cada consulta que contribuye un máximo de aproximadamente 1/k a la puntuación de RRF (este es el k parámetro en el algoritmo RRF, no en la consulta vectorial). Por ejemplo, la combinación de tres consultas genera puntuaciones de RRF más altas que si solo se combinan dos resultados de búsqueda.
clasificación semántica @search.rerankerScore Clasificación semántica 0,00 - 4,00

La clasificación semántica se produce después de la combinación de RRF de los resultados. Su puntuación (@search.rerankerScore) siempre se notifica por separado en la respuesta de la consulta. El clasificador semántico puede volver a generar texto completo y resultados de búsqueda híbrida, suponiendo que esos resultados incluyan campos que tengan contenido semánticamente enriquecido. Puede volver a generar consultas vectoriales puras si los documentos de búsqueda incluyen campos de texto que contienen contenido semánticamente relevante.

Desempaquetar una puntuación de búsqueda en subscores

Puede deconstruir una puntuación de búsqueda para ver sus subscores. En el caso de las consultas vectoriales, esta información puede ayudarle a determinar un valor adecuado para la ponderación vectorial o el establecimiento de umbrales mínimos.

Para obtener subpuntuaciones:

  • Use la API REST de búsqueda de documentos o un paquete del SDK de Azure que proporcione la funcionalidad.

  • Modifique una solicitud de consulta, agregue un nuevo parámetro debug establecido en vector, semantic si usa el clasificador semántico o all.

Este es un ejemplo de consulta híbrida que devuelve subpuntuaciones en modo de depuración:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2025-09-01

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "k": 10
        },
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City",
    "debug": "vector",
    "top": 10
}

Puntuaciones ponderadas

También puede ponderar las consultas vectoriales para aumentar o disminuir su importancia en una consulta híbrida.

Recuerde que, al calcular la RRF de un determinado documento, el motor de búsqueda examina la clasificación de dicho documento en cada conjunto de resultados en el que aparece. Supongamos que un documento aparece en tres resultados de búsqueda independientes y los resultados proceden de dos consultas vectoriales y una consulta de texto de clasificación BM25. La posición del documento varía en cada resultado.

Coincidencia encontrada Posición en los resultados @search.score multiplicador de peso @search.score (ponderado)
resultados vectoriales uno posición 1 0.8383955 0.5 0.41919775
resultados vectoriales dos posición 5 0.81514114 2.0 1.63028228
Resultados de BM25 posición 10 0.8577363 NA 0.8577363

La posición del documento en cada conjunto de resultados se corresponde con una puntuación inicial, que se agrega para crear la puntuación final de la RRF para ese documento.

Si agrega la ponderación vectorial, las puntuaciones iniciales están sujetas a un multiplicador de ponderación que aumenta o disminuye la puntuación. El valor predeterminado es 1,0, que significa que no hay ponderación y la puntuación inicial se usa tal cual en la puntuación de la RRF. Sin embargo, si agrega una ponderación de 0,5, la puntuación se reduce y ese resultado es menos importante en la clasificación combinada. Por el contrario, si agrega una ponderación de 2,0, la puntuación se convierte en un factor mayor en la puntuación general de la RRF.

En este ejemplo, los valores ponderados @search.score se envían al modelo de clasificación RRF.

Número de resultados clasificados en una respuesta de consulta híbrida

De forma predeterminada, si no usa la paginación, el motor de búsqueda devuelve las 50 mejores coincidencias de clasificación para la búsqueda de texto completo y las coincidencias más similares k para la búsqueda de vectores. En una consulta híbrida, top determina el número de resultados en la respuesta. Basándose en los valores predeterminados, se devuelven las 50 coincidencias mejor clasificadas del conjunto de resultados unificado.

A menudo, el motor de búsqueda encuentra más resultados que top y k. Para devolver más resultados, use los parámetros de paginación top, skip y next. La paginación es la forma de determinar el número de resultados en cada página lógica y de navegar por toda la carga útil. Puede establecer maxTextRecallSize en valores más grandes (el valor predeterminado es 1000) para devolver más resultados del lado de texto de la consulta híbrida.

De forma predeterminada, la búsqueda de texto completo está sujeta a un límite máximo de 1000 coincidencias (consulte Límites de respuesta de API). Una vez encontradas 1000 coincidencias, el motor de búsqueda deja de buscar más.

Para más información, consulte el artículo sobre el trabajo con los resultados de la búsqueda.