Compartilhar via


Operadores semânticos na extensão de IA do Azure (versão prévia)

A extensão de IA do Azure apresenta Operadores Semânticos, um recurso inovador que integra funcionalidades avançadas de IA Generativa (GenAI) diretamente no SQL do PostgreSQL. Esses operadores, que são alimentados por modelos como conclusão de chat e outras implantações de IA do Azure, permitem que os desenvolvedores criem aplicativos controlados por GenAI diretamente em seus bancos de dados. Isso 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 (Modelos de Linguagem Grande).
  • azure_ai.is_true(): avalia a probabilidade de uma instrução determinada ser verdadeira.
  • azure_ai.extract(): extrai recursos estruturados ou entidades do texto.
  • azure_ai.rank(): reclassula uma lista de documentos com base na relevância de uma determinada consulta.

Cada função opera por meio de endpoints do AI Foundry registrados usando a função azure_ai.set_setting, garantindo integração fluida e controle do usuário.

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

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

azure_ai.generate()

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

Ele dá suporte aos seguintes parâmetros de entrada:

Argumento Tipo Descrição
prompt text Solicitação de usuário a ser enviada para a LLM.
json_schema (opcional) JsonB DEFAULT '' Esquema JSON da saída estruturada que você deseja que a resposta LLM adere. Deve seguir a notação Abrir IA para saída estruturada.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação de 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 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 instrução determinada ser verdadeira, retornando um boolean valor ou NULL se o resultado for inconclusivo.

Ele dá suporte aos seguintes parâmetros de entrada:

Argumento Tipo Descrição
statement text Instrução a ser avaliada como true ou false.
model (opcional) text DEFAULT "gpt-4.1" Nome da implantação de modelo no Azure AI 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()

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

Ele dá suporte aos seguintes parâmetros de entrada:

Argumento Tipo Descrição
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 Azure AI Foundry.

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

Uso de exemplo:

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

Esse operador reclassificado documentos com base em sua relevância para uma determinada consulta. Ele dá suporte a modelos de GPT e codificador cruzado.

Ele dá suporte aos seguintes parâmetros de entrada:

Argumento Tipo Descrição
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 de modelo no Azure AI Foundry. Dá suporte a modelos baseados em codificador cruzado e GPT.

O operador retorna uma table ID de documento contendo, 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 .generate()operadores e .extract() operadores .is_true()

Esses operadores dão suporte a modelos de conclusão de chat e padrão para gpt-4.1.

  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 de serviço do Azure OpenAI 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 e a chave de API do Azure OpenAI.

  4. Configurar 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 OpenAI dos Serviços Cognitivos" à identidade gerenciada para interagir com o recurso do Azure OpenAI.
    • Defina a azure_openai.auth_type 'identidade gerenciada'.
    • Defina a azure_openai.endpoint URL com o ponto de extremidade.
  5. Agora você está pronto para invocar o operador e .generate() o .is_true()operador.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 .rank() operador

O .rank() operador dá suporte a modelos de conclusão de chat e codificador cruzado e usa como padrão o codificador Cohere-rerank-v3.5cruzado.

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

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

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

  3. Observe a chave de ponto de extremidade do modelo e a rota da API do Reranker , que deve ser semelhante a esta: https://<deployment name>.<region>.models.ai.azure.com/<v1 or v2>/rerank.

  4. Configurar 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 a azure_ml.auth_type 'identidade gerenciada'.
    • Defina com azure_ml.serverless_ranking_endpoint a API de reclassificador do Cohere.
  5. Agora você está pronto para invocar o operador usando o .rank() modelo de reclassificador 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, implante gpt-4.1o 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;