Compartilhar via


Operadores semânticos na extensão de IA do Azure (Versão Preliminar)

A extensão de IA do Azure apresenta Operadores Semânticos, um recurso que integra recursos avançados de IA Generativa (GenAI) diretamente no SQL do PostgreSQL. Ao usar esses operadores, que são modelos como conclusão de chat e outras implantações de IA do Azure, os desenvolvedores podem criar aplicativos baseados em GenAI diretamente em seus bancos de dados. Essa integração desbloqueia novos recursos para entender texto, raciocínio e gerar saídas estruturadas.

Características principais

Os Operadores Semânticos fornecem aos usuários quatro funções SQL principais que usam funcionalidades de IA generativa:

  • azure_ai.generate(): gera texto ou saída estruturada usando LLMs (Grandes Modelos de Linguagem).
  • azure_ai.is_true(): avalia a probabilidade de uma determinada instrução ser verdadeira.
  • azure_ai.extract(): extrai recursos estruturados ou entidades do texto.
  • azure_ai.rank(): reclassifica uma lista de documentos com base na relevância de uma determinada consulta.

Cada função opera através de pontos de extremidade do Microsoft Foundry registrados com a função azure_ai.set_setting, garantindo a integração perfeita e o controle do usuário.

Noções básicas sobre operadores semânticos

Operadores semânticos na extensão de IA do Azure simplificam tarefas complexas controladas por IA diretamente em seu banco de dados PostgreSQL. Usando esses operadores, você pode integrar perfeitamente os recursos de IA generativos aos fluxos de trabalho do SQL. Você pode executar a geração avançada de texto, a avaliação da verdade, a extração de entidade e a classificação de documentos. Cada operador é otimizado para facilitar o uso e a flexibilidade, para que você possa criar aplicativos inteligentes com o mínimo de esforço.

azure_ai.generate()

Use esse operador para gerar texto ou saída estruturada usando LLMs.

Ele oferece suporte aos seguintes parâmetros de entrada:

Argument Tipo Description
prompt text Prompt do usuário para enviar para o LLM.
json_schema (opcional) JsonB DEFAULT '' Esquema JSON da saída estruturada que você deseja que a resposta do LLM siga. Deve seguir a notação OpenAI para saída estruturada.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação do modelo na Foundry.
system_prompt (opcional) text DEFAULT "You are a helpful assistant." Prompt do sistema para enviar para o LLM.

Por padrão, o operador retorna um valor text que contém a resposta gerada. Se você fornecer o json_schema argumento, o operador retornará a saída como um objeto estruturado JsonB em conformidade com o esquema especificado.

Exemplo de uso:

SELECT azure_ai.generate(
  'Rewrite the following comment to be more polite: ' comment_text
) AS polite_comment
FROM user_comments;

SELECT review, azure_ai.generate(
    prompt        => 'Rewrite the following comment to be more polite and return the number of products mentioned:' || review,
    json_schema   => '{
                        "name": "generate_response",
                        "description": "Generate a response to the user",
                        "strict": true,
                        "schema": {
                          "type": "object",
                          "properties": {
                            "comment": { "type": "string" },
                            "num_products": { "type": "integer" }
                          },
                          "required": ["comment", "num_products"],
                          "additionalProperties": false
                          }
                        }',
     model  => 'gpt-4.1-mini'
) as polite_comment_with_count
FROM
    Reviews;

azure_ai.is_true()

Esse operador avalia a probabilidade de uma determinada instrução ser verdadeira. Ele retorna um boolean valor ou NULL se o resultado é inconclusivo.

Ele oferece suporte aos seguintes parâmetros de entrada:

Argument Tipo Description
statement text Instrução a ser avaliada como verdadeira ou falsa.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação do modelo na Foundry.

Exemplo de uso:

SELECT azure_ai.is_true(
  'The review talks about the product: '
  product_name
  ' Review: '
  review_text
) AS is_relevant_review
FROM product_reviews;

azure_ai.extract()

Use esse operador para extrair recursos estruturados ou entidades do texto com base em rótulos definidos pelo usuário.

Ele oferece suporte aos seguintes parâmetros de entrada:

Argument Tipo Description
document text Um documento que contém as entidades e os recursos.
data array[text] Uma matriz de rótulos ou nomes de recursos, em que cada entrada representa um tipo de entidade distinto a ser extraído do texto de entrada.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação de modelo no Foundry.

O operador retorna um objeto JsonB que contém as entidades extraídas mapeadas para seus rótulos correspondentes.

Exemplo de uso:

SELECT azure_ai.extract(
   'The headphones are not great. They have a good design, but the sound quality is poor and the battery life is short.',
   ARRAY[ 'product', 'sentiment']
);

-- Output: {"product": "headphones", "sentiment": "negative"}

SELECT azure_ai.extract(
    'The music quality is good, though the call quality could have been better. The design is sleek, but still slightly heavy for convenient travel.',
    ARRAY[
        'design: string - comma separated list of design features of the product',
        'sound: string - sound quality (e.g., music, call, noise cancellation) of the product',
        'sentiment: number - sentiment score of the review; 1 (lowest) to 5 (highest)'
    ]
);

-- Output: {"sound": "music quality is good, call quality could have been better", "design": "sleek, slightly heavy", "sentiment": 3}

azure_ai.rank()

Use esse operador para reclassificador documentos com base em sua relevância para uma determinada consulta. Ele oferece suporte a codificador cruzado e modelos de GPT.

Ele oferece suporte aos seguintes parâmetros de entrada:

Argument Tipo Description
query text A cadeia de caracteres de pesquisa usada para avaliar e classificar a relevância de cada documento.
document_contents array[text] Uma matriz de documentos a serem reclassificados.
document_ids (opcional) array Uma matriz de identificadores de documento correspondentes aos documentos de entrada.
model (opcional) text DEFAULT "cohere-rerank-v3.5" Nome da implantação do modelo na Foundry. Oferece suporte a codificador cruzado e modelos baseados no GPT.

O operador retorna uma ID de documento contendo table, sua classificação e a pontuação de relevância associada.

Exemplo de uso:

SELECT azure_ai.rank(
    'Best headphones for travel',
    ARRAY[
        'The headphones are lightweight and foldable, making them easy to carry.',
        'Bad battery life, not so great for long trips.',
        'The sound quality is excellent, with good noise isolation.'
    ]
)

SELECT azure_ai.rank(
  query => 'Clear calling capability that blocks out background noise',
  document_contents => ARRAY[
                        'The product has a great battery life, good design, and decent sound quality.',
                        'These headphones are perfect for long calls and music.',
                        'Best headphones for music lovers. Call quality could have been better.',
                        'The product has a good design, but it is a bit heavy. Not recommended for travel.'
                      ],
  document_ids => ARRAY['Review1', 'Review2', 'Review3', 'Review4'],
  model => 'gpt-4.1'
) AS ranked_reviews;

Como começar

Para usar operadores semânticos em seu banco de dados PostgreSQL, siga estas etapas:

Configuração para operadores .generate(), .extract() e .is_true()

Esses operadores oferecem suporte a modelos de conclusão de chat e usam gpt-4.1 como padrão.

  1. Habilite a azure_ai extensão na instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.

  2. Crie um recurso do Serviço OpenAI do Azure e implante um modelo de conclusão de chat (por exemplo, gpt-4.1). Como alternativa, você pode implantar e gerenciar modelos por meio das experiências intuitivas fornecidas pela Foundry.

  3. Anote a URL do ponto de extremidade e da chave de API do OpenAI do Azure.

  4. Configure o acesso:

    Para habilitar a azure_ai extensão para invocar esse modelo usando a autenticação de chave de assinatura, execute os seguintes comandos SQL:

    SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com/');
    SELECT azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
    

    Se você quiser usar identidades gerenciadas, consulte este artigo para executar as seguintes etapas:

    • Habilite a identidade gerenciada atribuída pelo sistema para sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL e reinicie o servidor.
    • Atribua a função "Usuário do OpenAI de Serviços Cognitivos" à identidade gerenciada para interagir com o recurso do OpenAI do Azure.
    • Defina o azure_openai.auth_type como 'identidade gerenciada'.
    • Defina o azure_openai.endpoint com a URL do ponto de extremidade.
  5. Agora está tudo pronto para você invocar os operadores .generate(), .is_true() e .extract().

    Uso de exemplo com gpt-4.1 (padrão):

    SELECT name, azure_ai.generate(
      'Generate a description for the product: ' || name
    ) AS description
    FROM products;
    

    Uso de exemplo com outros modelos:

    SELECT name, azure_ai.generate(
      'Generate a description for the product: ' || name , 'gpt-4.1-mini'
    ) AS description
    FROM products;
    

Configuração para o operador .rank()

O operador .rank() oferece suporte a codificador cruzado e modelos de conclusão de chat. Como padrão, ele utiliza o codificador Cohere-rerank-v3.5 cruzado.

Usando o codificador cruzado Cohere-rerank-v3.5:

  1. Habilite a azure_ai extensão na instância do Banco de Dados do Azure para PostgreSQL.

  2. Vá para o Foundry e implante o Cohere-rerank-v3.5 modelo usando a opção de compra de API sem servidor.

  3. Anote a chave de endpoint do modelo e a rota da API de Reranker. Deve ser algo assim: https://<deployment name>.<region>.models.ai.azure.com/<v1 or v2>/rerank.

  4. Configure o acesso:

    Para habilitar a azure_ai extensão para invocar esse modelo usando a autenticação de chave de assinatura, execute os seguintes comandos SQL:

    SELECT azure_ai.set_setting('azure_ml.serverless_ranking_endpoint', '<Cohere reranker API>');
    SELECT azure_ai.set_setting('azure_ml.serverless_ranking_endpoint_key', '<API Key>');
    

    Se você quiser usar identidades gerenciadas, consulte este artigo para executar as seguintes etapas:

    • Habilite a identidade gerenciada atribuída pelo sistema para sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL e reinicie o servidor.
    • Atribua a função "Cientista de Dados do Azure Machine Learning" à identidade gerenciada para interagir com o modelo Cohere.
    • Defina o azure_ml.auth_type como 'identidade gerenciada'.
    • Defina o azure_ml.serverless_ranking_endpoint com a API de reclassificação Cohere.
  5. Agora está tudo pronto para você invocar o operador .rank() usando o modelo de reclassificação Cohere.

    SELECT azure_ai.rank(
      'Best headphones for travel',
      ARRAY[
          'The headphones are lightweight and foldable, making them easy to carry.',
          'Bad battery life, not so great for long trips.',
          'The sound quality is excellent, with good noise isolation.'
      ]
    ) AS ranked_reviews;
    

Para usar o operador .rank() com modelos de conclusão de chat como gpt-4.1, implante o modelo desejado no OpenAI do Azure, configure a extensão azure_ai com os detalhes do ponto de extremidade do modelo e especifique o nome do modelo ao invocar o operador.

SELECT azure_ai.set_setting('azure_openai.endpoint', 'https://<endpoint>.openai.azure.com/');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');

SELECT azure_ai.rank(
 'Best headphones for travel',
  ARRAY[
      'The headphones are lightweight and foldable, making them easy to carry.',
      'Bad battery life, not so great for long trips.',
      'The sound quality is excellent, with good noise isolation.'
  ],
  'gpt-4.1'
) AS ranked_reviews;