Compartir por


Adición de clasificación semántica a consultas en Azure AI Search

En este artículo se explica cómo invocar el clasificador semántico en las consultas. Puede aplicar la clasificación semántica a consultas de texto, consultas híbridas y consultas vectoriales si los documentos de búsqueda contienen campos de cadena y la consulta vectorial tiene una representación de texto.

La clasificación semántica recorre en iteración un conjunto de resultados inicial, aplicando una metodología de clasificación L2 que promueve los resultados más semánticamente relevantes en la parte superior de la pila. También puede obtener leyendas semánticas, con los términos y las frases más relevantes resaltados, además de respuestas semánticas.

Requisitos previos

Nota:

Las leyendas y las respuestas se extraen literalmente del texto del documento de búsqueda. El subsistema semántico recurre a la comprensión de lectura mecánica para determinar qué parte del contenido tiene las características de un título o respuesta, pero no crea oraciones ni frases. Por esta razón, el contenido que incluye explicaciones o definiciones funciona mejor para la clasificación semántica. Si quieres la interacción de estilo de chat con las respuestas generadas, consulta Generación aumentada de recuperación (RAG).

Elija un cliente

Puede usar cualquiera de las siguientes herramientas y SDK para crear una consulta que use la clasificación semántica:

Evitar características que omiten la puntuación de relevancia

Varias funcionalidades de consulta de Azure AI Search omiten la puntuación de relevancia o no son incompatibles con la clasificación semántica. Si la lógica de consulta incluye las siguientes características, no se puede clasificar semánticamente los resultados:

  • Una consulta con search=* o una cadena de búsqueda vacía, como una consulta pura de solo filtro, no funcionará porque no hay nada con lo que medir la relevancia semántica. La consulta debe proporcionar términos o frases que se pueden evaluar durante el procesamiento.

  • Una consulta compuesta en la sintaxis completa de Lucene (queryType=full) no es compatible con la clasificación semántica (queryType=semantic). El modelo semántico no admite la sintaxis completa de Lucene.

  • La clasificación (cláusulas orderBy) en campos específicos invalida las puntuaciones de búsqueda y la puntuación semántica. Dado que se supone que la puntuación semántica proporciona la clasificación, agregar una cláusula orderby produce un error HTTP 400 si aplica la clasificación semántica sobre los resultados de orden.

Configurar la consulta

En este paso, añade parámetros a la solicitud de consulta. Para que se realice correctamente, la consulta debe ser una búsqueda de texto completo (con el parámetro search para pasar una cadena) y el índice debe contener campos de texto con contenido semántico enriquecido y una configuración semántica.

El explorador de búsqueda incluye opciones para la clasificación semántica.

  1. Inicie sesión en Azure Portal.

  2. Abre un índice de búsqueda y selecciona Explorador de búsqueda.

  3. Seleccione Opciones de consulta. Si ya ha definido una configuración semántica, se selecciona de forma predeterminada. Si no tiene una, crear una configuración semántica para el índice.

    Captura de pantalla en la que se muestran las opciones de consulta en el Explorador de búsqueda.

  4. Escriba una consulta, como "hotel histórico con buena comida" y seleccione Buscar.

  5. También puede seleccionar vista JSON y pegar definiciones en el editor de consultas:

    Captura de pantalla que muestra la sintaxis de consulta JSON en Azure Portal.

    Este es un texto JSON que puede pegar en la vista:

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

Evaluación de la respuesta

Solo las 50 primeras coincidencias de los resultados iniciales se pueden clasificar semánticamente. Al igual que con todas las consultas, una respuesta consta de todos los campos marcados como recuperables, o solo de los campos enumerados en el parámetro SELECT. Una respuesta incluye la puntuación de relevancia original y también puede incluir un recuento o resultados por lotes, en función de cómo haya formulado la solicitud.

En una clasificación semántica, la respuesta tiene más elementos: una nueva puntuación de relevancia clasificada semánticamente, una leyenda opcional en texto sin formato y resaltado y una respuesta opcional. Si los resultados no incluyen estos elementos adicionales, es posible que la consulta esté mal configurada. Como primer paso para solucionar el problema, compruebe la configuración semántica para asegurarse de que se especifica en la definición de índice y en la consulta.

En una aplicación cliente puede estructurar la página de búsqueda para incluir un subtítulo como la descripción de la coincidencia, en lugar de todo el contenido de un campo específico. Este enfoque resulta útil cuando los campos individuales son demasiado densos para la página de resultados de la búsqueda.

La respuesta de la consulta de ejemplo anterior devuelve la siguiente coincidencia como elección principal. Las leyendas se devuelven porque la propiedad "captions" está establecida, con texto sin formato y versiones resaltadas. Las respuestas se omiten del ejemplo porque no se pudo determinar ninguna para este corpus y consulta en particular.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

Cargas de trabajo esperadas

Para la clasificación semántica, debe esperar que un servicio de búsqueda admita hasta 10 consultas simultáneas por réplica.

El servicio limita las solicitudes de clasificación semántica si los volúmenes son demasiado altos. Un mensaje de error que incluye estas frases indica que el servicio alcanzó su límite para la clasificación semántica:

Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded

Si prevé requisitos de rendimiento uniformes a corto plazo (en este nivel o uno superior) envíe una incidencia de soporte técnico para que podamos aprovisionar la carga de trabajo.

Pasos siguientes

La clasificación semántica se puede usar en consultas híbridas que combinan la búsqueda de palabras clave y el vector de búsqueda en una sola solicitud y una respuesta unificada.