Compartilhar via


Adicione classificação semântica a consultas no IA do Azure Search

Você pode aplicar a classificação semântica a consultas de texto, consultas híbridas e consultas de vetores se os documentos de pesquisa contiverem campos de cadeia de caracteres e a consulta de vetores tiver uma representação de texto no documento de pesquisa.

Este artigo explica como invocar o classificador semântico em consultas. Ele pressupõe que você esteja usando as APIs estáveis ​​ou de visualização mais recentes. Para obter ajuda com versões mais antigas, veja Migrar código de classificação semântica.

Pré-requisitos

Observação

As legendas e as respostas são extraídas literalmente do texto no documento de pesquisa. O subsistema semântico usa a compreensão de leitura de computador para reconhecer o conteúdo que tem as características de uma legenda ou resposta, mas não compõe novas frases ou orações. Por isso, o conteúdo que inclui explicações ou definições funciona melhor para a classificação semântica. Se você deseja ter uma interação no estilo chat com respostas geradas, confira RAG (Geração Aumentada de Recuperação).

Selecione um cliente

Você pode usar qualquer uma das seguintes ferramentas e SDKs para criar uma consulta que use a classificação semântica:

Evitar recursos que ignoram a pontuação de relevância

Alguns recursos de consulta ignoram a pontuação de relevância, o que os torna incompatíveis com a classificação semântica. Se a lógica de consulta incluir os seguintes recursos, você não poderá classificar os resultados semanticamente:

  • Uma consulta com search=* ou uma cadeia de caracteres de pesquisa vazia, como consulta somente filtro puro, não funcionará porque não há nada para medir a relevância semântica e, portanto, as pontuações de pesquisa são zero. A consulta deve fornecer termos ou frases que possam ser avaliados durante o processamento.

  • A classificação (cláusulas orderBy) em campos específicos substitui as pontuações de pesquisa e uma pontuação semântica. Considerando que a pontuação semântica deve fornecer a classificação, adicionar uma cláusula orderby resultará em um erro HTTP 400, se você aplicar a classificação semântica sobre os resultados ordenados.

Configurar a consulta

Por padrão, as consultas não usam classificação semântica. Para usar a classificação semântica, dois parâmetros diferentes podem ser usados. Cada parâmetro dá suporte a um conjunto diferente de cenários.

Consultas semânticas, especificadas por meio de search mais queryType, ou por meio de semanticQuery, devem ser texto sem formatação e não podem estar vazias. Consultas vazias resultam em nenhuma classificação semântica sendo aplicada aos resultados.

Parâmetro de classificador semântico Pesquisa de texto sem formatação Sintaxe de pesquisa de texto simples Sintaxe de pesquisa de texto completo Busca em vetores Pesquisa Híbrida Respostas semânticas e legendas
queryType-semantic 1
semanticQuery="<your plain text query>"2

1 queryType=semantic não pode dar suporte a valores simple ou full explícitos porque o parâmetro queryType está sendo usado para semantic. Os comportamentos de consulta eficazes são os padrões do analisador simples.

2 O parâmetro semanticQuery pode ser usado para todos os tipos de consulta. No entanto, não é suportado no portal do Azure Search Explorer.

Independentemente do parâmetro escolhido, o índice deve conter campos de texto com conteúdo semântico avançado e uma configuração semântica.

O Gerenciador de Pesquisa inclui opções de classificação semântica. Lembre-se de que você não pode definir o parâmetro semanticQuery no portal do Azure.

  1. Entre no portal do Azure.

  2. Abra o índice de pesquisa e selecione Gerenciador de pesquisa.

  3. Selecione Opções de Consulta. Se você já definiu uma configuração semântica, ela será selecionada por padrão. Se você não tiver uma, crie uma configuração semântica para o índice.

    Captura de tela que mostra as opções de consulta no explorador de pesquisa.

  4. Insira uma consulta, como "hotel histórico com boa comida" e selecione Pesquisar.

  5. Como alternativa, selecione exibição JSON e cole definições no editor de consultas. O portal do Azure não dá suporte ao uso de semanticQuery, portanto, é necessário definir queryType como "semantic":

    Captura de tela mostrando a sintaxe de consulta JSON no portal do Microsoft Azure.

    Exemplo JSON para definir o tipo de consulta como semântico que você pode colar na exibição:

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

Avaliar a resposta

Somente as principais 50 correspondências dos resultados iniciais podem ser classificadas semanticamente. Assim como acontece com todas as consultas, uma resposta é composta por todos os campos marcados como recuperáveis ou apenas pelos campos listados no parâmetro select. Uma resposta inclui a pontuação de relevância original e também pode incluir uma contagem ou resultados em lote, dependendo de como a solicitação foi formulada.

Em uma classificação semântica, a resposta tem mais elementos: uma nova pontuação de relevância classificada semanticamente, uma legenda opcional em texto sem formatação e com destaques e uma resposta opcional. Se os resultados não incluírem esses elementos extras, sua consulta poderá estar configurada incorretamente. Como uma primeira etapa para solucionar o problema, verifique a configuração semântica para garantir que ela seja especificada na definição de índice e na consulta.

Em um aplicativo cliente, você pode estruturar a página de pesquisa para incluir uma legenda como descrição da correspondência, em vez de todo o conteúdo de um campo específico. Essa abordagem é útil quando campos individuais são muito densos para a página de resultados da pesquisa.

A resposta para a consulta de exemplo acima ("hotel interessante com restaurante no local e lobby aconchegante ou área compartilhada") retorna três respostas ("answers": "extractive|count-e"). As legendas são retornadas porque a propriedade "captions" está definida, com texto sem formatação e versões realçadas. Se uma resposta não puder ser determinada, ela será omitida da resposta. Para fins de brevidade, este exemplo mostra apenas as três respostas e os três resultados de maior pontuação da consulta.

{
  "@odata.count": 29,
  "@search.answers": [
    {
      "key": "24",
      "text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
      "highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
      "score": 0.9340000152587891
    },
    {
      "key": "40",
      "text": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
      "highlights": "Only 8 miles from Downtown. <strong>On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, </strong>All non-smoking<strong> hotel.</strong> Only 15 miles from airport.",
      "score": 0.9210000038146973
    },
    {
      "key": "38",
      "text": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
      "highlights": "Nature is Home on the beach. Explore the shore by day, and then come home to our<strong> shared living space </strong>to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
      "score": 0.9200000166893005
    }
  ],
  "value": [
    {
      "@search.score": 3.2328331,
      "@search.rerankerScore": 2.575303316116333,
      "@search.captions": [
        {
          "text": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
          "highlights": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our<strong> penthouse </strong>suites offer views for miles and the rooftop<strong> plaza </strong>is open to all guests from sunset to 10 p.m. Enjoy a<strong> complimentary continental breakfast in the lobby, </strong>and free Wi-Fi<strong> throughout </strong>the hotel."
        }
      ],
      "HotelId": "50",
      "HotelName": "Head Wind Resort",
      "Description": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
      "Category": "Suite"
    },
    {
      "@search.score": 0.632956,
      "@search.rerankerScore": 2.5425150394439697,
      "@search.captions": [
        {
          "text": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
          "highlights": "Every stay starts with a warm cookie. Amenities like the<strong> Counting Sheep sleep experience, </strong>our<strong> Wake-up glorious breakfast buffet and spacious workout facilities </strong>await."
        }
      ],
      "HotelId": "34",
      "HotelName": "Lakefront Captain Inn",
      "Description": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
      "Category": "Budget"
    },
    {
      "@search.score": 3.7076726,
      "@search.rerankerScore": 2.4554927349090576,
      "@search.captions": [
        {
          "text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
          "highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
        }
      ],
      "HotelId": "24",
      "HotelName": "Uptown Chic Hotel",
      "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
      "Category": "Suite"
    },
   . . .
  ]
}

Cargas de trabalho esperadas

Para a classificação semântica, você deve esperar que um serviço de pesquisa dê suporte a até 10 consultas simultâneas por réplica.

O serviço limita as solicitações de classificação semântica se os volumes forem muito altos. Uma mensagem de erro que inclua essas frases indica que o serviço está no limite da capacidade da classificação semântica:

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

Se você prevê requisitos de taxa de transferência consistentes próximos, iguais ou superiores a esse nível, registre um tíquete de suporte para que possamos provisionar sua carga de trabalho.

Próximas etapas

A classificação semântica pode ser usada em consultas híbridas que combinam busca de palavra-chave e busca em vetores em uma única solicitação e uma resposta unificada.