Partilhar via


Operadores semânticos na extensão Azure AI (Pré-visualização)

A extensão de IA do Azure apresenta os Operadores Semânticos, um recurso inovador que integra recursos avançados de IA Generativa (GenAI) diretamente no PostgreSQL SQL. Esses operadores, que são alimentados por modelos como conclusão de bate-papo e outras implantações de IA do Azure, permitem que os desenvolvedores criem aplicativos orientados por GenAI diretamente em seus bancos de dados. Isso libera novos recursos para entender texto, raciocínio e gerar saídas estruturadas.

Principais características

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

  • azure_ai.generate(): Gera texto ou saída estruturada usando Large Language Models (LLMs).
  • azure_ai.is_true(): Avalia a probabilidade de uma determinada afirmaçã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 para uma determinada consulta.

Cada função opera através de pontos de extremidade AI Foundry registados usando a função azure_ai.set_setting, garantindo uma integração perfeita e controlo do utilizador.

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

Os Operadores Semânticos na extensão de IA do Azure são projetados para simplificar tarefas complexas orientadas por IA diretamente em seu banco de dados PostgreSQL. Esses operadores permitem que os usuários integrem perfeitamente recursos de IA generativa em seus fluxos de trabalho SQL, permitindo geração avançada de texto, avaliação da verdade, extração de entidades e classificação de documentos. Cada operador é otimizado para facilidade de uso e flexibilidade, permitindo que os desenvolvedores criem aplicativos inteligentes com o mínimo de esforço.

azure_ai.generate()

Este operador usa LLMs para gerar texto ou saída estruturada.

Ele suporta os seguintes parâmetros de entrada:

Argumento Tipo Descrição
prompt text Solicitação do usuário a ser enviada para o LLM.
json_schema (opcional) JsonB DEFAULT '' Esquema JSON da saída estruturada à qual você deseja que a resposta LLM adira. Deve seguir a notação Open AI para saída estruturada.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação do modelo no Azure AI Foundry.
system_prompt (opcional) text DEFAULT "You are a helpful assistant." Prompt do sistema a ser enviado para o LLM.

Por padrão, o operador retorna um text valor que contém a resposta gerada. Se o json_schema argumento for fornecido, a saída será retornada como um objeto estruturado JsonB que está em conformidade com o esquema especificado.

Exemplo de utilização:

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()

Este operador avalia a probabilidade de uma determinada afirmação ser verdadeira, retornando um boolean valor ou NULL se o resultado é inconclusivo.

Ele suporta os seguintes parâmetros de entrada:

Argumento Tipo Descrição
statement text Afirmação a ser avaliada como verdadeira ou falsa.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação do modelo no Azure AI Foundry.

Exemplo de utilização:

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()

Este operador extrai recursos estruturados ou entidades do texto com base em rótulos definidos pelo usuário.

Ele suporta os seguintes parâmetros de entrada:

Argumento Tipo Descrição
document text Um documento contendo as entidades e características.
data array[text] Uma matriz de rótulos ou nomes de recursos, onde 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 do modelo no Azure AI Foundry.

O operador retorna um JsonB objeto contendo 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()

Este operador reclassifica documentos com base na sua relevância para uma determinada consulta. Suporta modelos cross-encoder e GPT.

Ele suporta os seguintes parâmetros de entrada:

Argumento Tipo Descrição
query text A cadeia de pesquisa usada para avaliar e classificar a relevância de cada documento.
document_contents array[text] Uma série de documentos a serem reclassificados.
document_ids (opcional) array Uma matriz de identificadores de documentos correspondentes aos documentos de entrada.
model (opcional) text DEFAULT "cohere-rerank-v3.5" Nome da implantação do modelo no Azure AI Foundry. Suporta modelos baseados em codificador cruzado e GPT.

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

Exemplo de utilização:

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, execute estas etapas:

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

Esses operadores suportam modelos de conclusão de bate-papo e padrão para gpt-4.1.

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

  2. Crie um recurso de 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 pelo Azure AI Foundry.

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

  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ê deseja 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 OpenAI dos Serviços Cognitivos" à identidade gerenciada para interagir com o recurso OpenAI do Azure.
    • Defina como azure_openai.auth_type 'managed-identity'.
    • Defina o azure_openai.endpoint com o URL do ponto final.
  5. Agora você está pronto para invocar os .generate()operadores , .is_true()e .extract() .

    Exemplo de uso com gpt-4.1 (padrão):

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

    Exemplo de utilização 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 .rank() operador

O .rank() operador suporta os modelos de codificador cruzado e conclusão de bate-papo, e o padrão é o codificador Cohere-rerank-v3.5cruzado.

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

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

  2. Navegue até o Azure AI Foundry e implante o Cohere-rerank-v3.5 modelo usando a opção de compra da API Serverless.

  3. Observe a chave de ponto de extremidade do modelo e a rota da API do Reranker , que deve ter esta aparência: 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ê deseja 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 como azure_ml.auth_type 'managed-identity'.
    • Defina o azure_ml.serverless_ranking_endpoint com a API de reclassificação Cohere.
  5. Agora você está pronto para invocar o operador usando o .rank() modelo de reranker 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 .rank() operador com modelos de conclusão de chat como gpt-4.1, implante o modelo desejado no Azure OpenAI, configure a azure_ai extensão 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;