Devolución de una respuesta semántica en Azure AI Search
Al invocar una clasificación semántica y leyendas semánticas, puede extraer el contenido de los documentos con mayor coincidencia que "respondan" directamente a la consulta. En la respuesta de la consulta se pueden incluir una o más respuestas, que posteriormente puede representar en una página de búsqueda para mejorar la experiencia del usuario de la aplicación.
Una respuesta semántica es contenido textual en el índice de búsqueda que un modelo de comprensión de lectura ha reconocido como respuesta a la consulta planteada en la solicitud. No es una respuesta generada. Para obtener instrucciones sobre un modelo de interacción de usuario de estilo de chat que usa IA generativa para componer respuestas del contenido, consulta Generación aumentada de recuperación (RAG).
En este artículo, aprenderás a solicitar una respuesta semántica, a desempaquetar la respuesta y a saber qué características de contenido son más favorables para generar respuestas de alta calidad.
Todos los requisitos previos que se aplican a las consultas semánticas también son aplicables a las respuestas, incluidos el nivel de servicio y la región.
La lógica de consulta debe incluir los parámetros de consulta semántica "queryType=semantic", además del parámetro "answers". En este artículo se describen los parámetros necesarios.
Las cadenas de consulta que especifique el usuario deben ser reconocibles como pregunta (qué, dónde, cuándo, cómo).
Los documentos de búsqueda del índice deben contener texto que tenga las características de una respuesta y dicho texto debe existir en uno de los campos enumerados en la configuración semántica. Por ejemplo, dada una consulta "qué es una tabla hash", si ninguno de los campos de la configuración semántica contiene fragmentos que incluyen "Una tabla hash es ..." , es poco probable que se devuelva una respuesta.
Nota
A partir de 2021-04-30-Preview, las solicitudes de creación o actualización de índice comenzaron a crear o actualizar solicitudes de "semanticConfiguration"
para especificar los campos de entrada usados en la clasificación semántica.
Una respuesta semántica es una subestructura de una respuesta de consulta semántica. Se compone de uno o varios pasajes textuales de un documento de búsqueda, formulados como una respuesta a una consulta que tiene el aspecto de una pregunta. Para devolver una respuesta, deben existir frases u oraciones en un documento de búsqueda que presente las características del lenguaje de una respuesta y la propia consulta debe plantearse como una pregunta.
Azure AI usa un modelo de comprensión de lectura automática para reconocer o formular respuestas. El modelo genera un conjunto de posibles respuestas a partir del contenido disponible y, cuando llega a un nivel de confianza lo suficientemente alto, propone una respuesta.
Las respuestas se devuelven como un objeto de nivel superior e independiente en la carga de respuesta de la consulta, que puede elegir representar en páginas de búsqueda, junto con los resultados de búsqueda. Estructuralmente, es un elemento de matriz dentro de la respuesta que consta de texto, una clave de documento y una puntuación de confianza.
Para devolver una respuesta semántica, la consulta debe tener la semántica "queryType"
, "queryLanguage"
, "semanticConfiguration"
y los parámetros "answers"
. Especificar estos parámetros no garantiza una respuesta, pero la solicitud debe incluirlos para que tenga lugar el procesamiento de las respuestas.
{
"search": "how do clouds form",
"queryType": "semantic",
"queryLanguage": "en-us",
"semanticConfiguration": "my-semantic-config",
"answers": "extractive|count-3",
"captions": "extractive|highlight-true",
"count": "true"
}
Una cadena de consulta no debe ser NULL y debe formularse como una pregunta.
"queryType"
debe establecerse en "semantic".El elemento
"queryLanguage"
debe tener uno de los valores de la lista de idiomas admitidos (API REST).Un
"semanticConfiguration"
determina qué campos de cadena proporcionan tokens al modelo de extracción. Los mismos campos que producen leyendas también generan respuestas. Consulte Creación de una configuración semántica para obtener más información.En el caso de
"answers"
, la construcción de parámetros es"answers": "extractive"
, donde el número de respuestas predeterminado devuelto es uno. Puede aumentar el número de respuestas si agrega un elementocount
como se muestra en el ejemplo anterior, hasta un máximo de 10. En función de la experiencia del usuario de la aplicación y de cómo quiera representar los resultados, podría necesitar más de una respuesta.
Las respuestas se proporcionan en la matriz "@search.answers"
, que aparece primero en la respuesta de la consulta. Cada respuesta de la matriz incluye:
- Clave de documento
- Texto o contenido de la respuesta, en texto sin formato o con formato
- Puntuación de confianza
Si una respuesta es indeterminada, la respuesta de la consulta se muestra como "@search.answers": []
. La matriz de respuestas va seguida de la matriz de valores, que es la respuesta estándar en una consulta semántica.
Dada la consulta "cómo se forman las nubes", en el ejemplo siguiente se muestra una respuesta:
{
"@search.answers": [
{
"key": "4123",
"text": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form where air is ascending (over land in this case), but not where it is descending (over the river).",
"highlights": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form<em> where air is ascending</em> (over land in this case), but not where it is<em> descending</em> (over the river).",
"score": 0.94639826
}
],
"value": [
{
"@search.score": 0.5479723,
"@search.rerankerScore": 1.0321671911515296,
"@search.captions": [
{
"text": "Like all clouds, it forms when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley fog, which is common in the Pacific Northwest of North America.",
"highlights": "Like all<em> clouds</em>, it<em> forms</em> when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley<em> fog</em>, which is common in the Pacific Northwest of North America."
}
],
"title": "Earth Atmosphere",
"content": "Fog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
"locations": [
"Pacific Northwest",
"North America",
"Vancouver"
]
}
]
}
Cuando diseñes una página de resultados de la búsqueda que incluya respuestas, asegúrate de controlar los casos en los que no se encuentran respuestas.
En @search.answers:
La "clave" es la clave o el identificador de documento de la coincidencia. Dada una clave de documento, puede usar la API para buscar documento a fin de recuperar algunas o todas las partes del documento de búsqueda que se van a incluir en la página de búsqueda o en una página de detalles.
Tanto "text" como "highlights" proporcionan contenido idéntico en texto sin formato y con resaltado.
De forma predeterminada, los resaltados tienen el estilo
<em>
, que se puede invalidar mediante los parámetros highlightPreTag y highlightPostTag. Como ya se ha indicado anteriormente, la sustancia de una respuesta es el contenido textual de un documento de búsqueda. El modelo de extracción busca las características de una respuesta para encontrar el contenido adecuado, pero no crea un lenguaje nuevo en la respuesta.El valor "score" es una puntuación de confianza que refleja la intensidad de la respuesta. Si hay varias respuestas en la respuesta de la consulta, se usa esta puntuación para determinar el orden. Las respuestas y los títulos principales pueden derivar de documentos de búsqueda diferentes (por ejemplo, la respuesta principal procede de un documento y el título principal de otro), pero en general los mismos documentos aparecen en las posiciones superiores de cada matriz.
Las respuestas van seguidas de la matriz "value", que siempre incluye puntuaciones, títulos y todos los campos que se recuperen de forma predeterminada. Si especificó el parámetro select, la matriz "value" se limita a los campos especificados. Consulte Configuración del clasificador semántico para obtener más información.
Para obtener los mejores resultados, devuelva respuestas semánticas en un corpus de documentos que tenga las siguientes características:
El valor de "semanticConfiguration" debe incluir campos que ofrecen texto suficiente en el que es probable que se pueda encontrar una respuesta. Los campos con más probabilidades de contener respuestas deben aparecer en primer lugar en "prioritizedContentFields". Solo el texto textual de un documento puede aparecer como una respuesta.
Las cadenas de consulta no deben ser NULL (search=
*
) y la cadena debe tener las características de una pregunta, como "qué" o "cómo", a diferencia de una búsqueda de palabras clave que consiste en términos o frases en orden arbitrario. Si la cadena de consulta no parece ser una pregunta, se omitirá el procesamiento de respuestas, aunque la solicitud especifique "answers" como parámetro de consulta.La extracción semántica y el resumen tienen límites respecto al número de tokens por documento que se pueden analizar de manera oportuna. En términos prácticos, si tiene documentos grandes que se ejecutan en cientos de páginas, intente dividir el contenido en documentos más pequeños en primer lugar.