Funzioni di intelligenza artificiale nell'estensione azure_ai (anteprima)

L'estensione azure_ai introduce le funzioni di intelligenza artificiale, una funzionalità che integra le funzionalità di intelligenza artificiale generative avanzate (GenAI) direttamente in PostgreSQL SQL. Usando queste funzioni con modelli come il completamento della chat, gli incorporamenti e altre distribuzioni di modelli Foundry, gli sviluppatori possono creare applicazioni basate su GenAI direttamente all'interno dei database. Questa integrazione sblocca nuove funzionalità per la generazione di incorporamenti vettoriali, comprensione del testo, ragionamento e generazione di output strutturati.

Funzionalità principali

Le funzioni di intelligenza artificiale forniscono agli utenti cinque funzioni SQL di base che usano funzionalità di intelligenza artificiale generative:

  • azure_ai.generate(): genera testo o output strutturato usando modelli di linguaggio di grandi dimensioni.
  • azure_ai.is_true(): valuta la probabilità che una determinata istruzione sia vera.
  • azure_ai.extract(): estrae funzionalità o entità strutturate dal testo.
  • azure_ai.rank(): classifica un elenco di documenti in base alla pertinenza di una determinata query.
  • Genera incorporamenti vettoriali con Azure OpenAI in Azure Database per PostgreSQL: crea incorporamenti vettoriali per un testo di input specificato.

Ogni funzione opera tramite gli endpoint di Microsoft Foundry registrati usando la azure_ai.set_setting funzione, garantendo un'integrazione e un controllo utente senza problemi.

Informazioni sulle funzioni di intelligenza artificiale

Le funzioni di intelligenza artificiale nell'estensione azure_ai semplificano attività complesse guidate dall'intelligenza artificiale direttamente all'interno del database PostgreSQL. Usando queste funzioni, è possibile integrare facilmente le funzionalità di intelligenza artificiale generative nei flussi di lavoro SQL. È possibile eseguire la generazione avanzata del testo, la valutazione della verità, l'estrazione di entità e la classificazione dei documenti. Ogni funzione è ottimizzata per semplificare l'uso e la flessibilità, in modo da poter creare applicazioni intelligenti con un minimo sforzo.

azure_ai.generate()

Utilizzare questa funzione per generare testo o output strutturato utilizzando LLM.

Supporta i parametri di input seguenti:

Argument Type Description
prompt text Richiesta dell'utente da inviare al modello linguistico di grandi dimensioni.
json_schema (facoltativo) JsonB DEFAULT '' Schema JSON dell'output strutturato che si vuole che la risposta LLM segua. Deve seguire la notazione OpenAI per l'output strutturato.
model (facoltativo) text DEFAULT "gpt-4.1" Nome della distribuzione del modello in Foundry.
system_prompt (facoltativo) text DEFAULT "You are a helpful assistant." Prompt di sistema da inviare al modello linguistico di grandi dimensioni.

Per impostazione predefinita, la funzione restituisce un text valore contenente la risposta generata. Se si specifica l'argomento json_schema , la funzione restituisce l'output come oggetto strutturato JsonB conforme allo schema specificato.

Esempio di utilizzo:

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

Questa funzione valuta la probabilità che una determinata istruzione sia vera. Restituisce un boolean valore o NULL se il risultato è inconcludente.

Supporta i parametri di input seguenti:

Argument Type Description
statement text Istruzione da valutare come true o false.
model (facoltativo) text DEFAULT "gpt-4.1" Nome della distribuzione del modello in Foundry.

Esempio di utilizzo:

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

Usare questa funzione per estrarre funzionalità o entità strutturate dal testo in base alle etichette definite dall'utente.

Supporta i parametri di input seguenti:

Argument Type Description
document text Documento contenente le entità e le funzionalità.
data array[text] Matrice di etichette o nomi di funzionalità, in cui ogni voce rappresenta un tipo di entità distinto da estrarre dal testo di input.
model (facoltativo) text DEFAULT "gpt-4.1" Nome della distribuzione del modello in Foundry.

La funzione restituisce un JsonB oggetto contenente le entità estratte mappate alle etichette corrispondenti.

Esempio di utilizzo:

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

Usare questa funzione per riordinare i documenti in base alla pertinenza di una determinata query. Supporta modelli tra codificatori e GPT.

Supporta i parametri di input seguenti:

Argument Type Description
query text La stringa di ricerca usata per valutare e classificare la pertinenza di ogni documento.
document_contents array[text] Una matrice di documenti da riassegnare.
document_ids (facoltativo) array Una matrice di identificatori di documento corrispondenti ai documenti di input.
model (facoltativo) text DEFAULT "cohere-rerank-v3.5" Nome della distribuzione del modello in Foundry. Supporta sia il codificatore incrociato che i modelli basati su GPT.

La funzione restituisce un oggetto table contenente l'ID documento, la relativa classificazione e il punteggio di pertinenza associato.

Esempio di utilizzo:

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;

Come iniziare

Per usare le funzioni di intelligenza artificiale nel database PostgreSQL, seguire questa procedura:

Configurazione delle funzioni .generate(), .extract() e .is_true()

Queste funzioni supportano i modelli di completamento della chat e l'impostazione predefinita è gpt-4.1.

  1. Abilitare l'estensione azure_ai nell'istanza del server flessibile di Database di Azure per PostgreSQL.

  2. Creare una risorsa del Servizio Azure OpenAI e distribuire un modello di completamento della chat, ad esempio gpt-4.1. In alternativa, è possibile distribuire e gestire i modelli tramite le esperienze intuitive fornite da Foundry.

  3. Si noti Azure OpenAI in Foundry Models endpoint URL e API key.

  4. Configurare l'accesso:

    Per abilitare l'estensione azure_ai per richiamare questo modello usando l'autenticazione della chiave di sottoscrizione, eseguire i comandi SQL seguenti:

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

    Per usare invece le identità gestite, fare riferimento a questo articolo per eseguire la procedura seguente:

    • Abilitare l'identità gestita assegnata dal sistema per il server flessibile della tua istanza di Azure Database per PostgreSQL e riavviare il server.
    • Assegnare il ruolo "Utente OpenAI di Servizi cognitivi" all'identità gestita per interagire con la risorsa Azure OpenAI.
    • Impostare azure_openai.auth_type su "managed-identity".
    • Impostare azure_openai.endpoint con l'URL dell'endpoint.
  5. Sei ora tutto impostato per richiamare le funzioni .generate(), .is_true() e .extract().

    Esempio di utilizzo con gpt-4.1 (impostazione predefinita):

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

    Esempio di utilizzo con altri modelli:

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

Configurazione della funzione .rank()

La funzione .rank() supporta sia i modelli cross-encoder che i modelli di completamento chat. Per impostazione predefinita, viene utilizzato il codificatore incrociato Cohere-rerank-v3.5.

Per usare il Cohere-rerank-v3.5 codificatore incrociato:

  1. Abilita l'estensione azure_ai sulla tua istanza del Database di Azure per PostgreSQL.

  2. Passare a Foundry e distribuire il Cohere-rerank-v3.5 modello usando l'opzione di acquisto dell'API serverless.

  3. Prendere nota della chiave di endpoint del modello e della route API Reranker. Dovrebbe essere simile al seguente: https://<deployment name>.<region>.models.ai.azure.com/<v1 or v2>/rerank.

  4. Configurare l'accesso:

    Per abilitare l'estensione azure_ai per richiamare questo modello usando l'autenticazione della chiave di sottoscrizione, eseguire i comandi SQL seguenti:

    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>');
    

    Per usare invece le identità gestite, fare riferimento a questo articolo per eseguire la procedura seguente:

    • Abilitare l'identità gestita assegnata dal sistema per il server flessibile della tua istanza di Azure Database per PostgreSQL e riavviare il server.
    • Assegnare il ruolo "Scienziato dei dati di Azure Machine Learning" all'identità gestita per interagire con il modello Cohere.
    • Impostare azure_ml.auth_type su "managed-identity".
    • Impostare azure_ml.serverless_ranking_endpoint con l'API Cohere reranker.
  5. A questo punto è tutto impostato per richiamare la .rank() funzione usando il modello cohere reranker.

    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;
    

Per usare la funzione .rank() con modelli di completamento della chat come gpt-4.1, distribuire il modello desiderato in Azure OpenAI, configurare l'estensione azure_ai con i dettagli dell'endpoint del modello e specificare il nome del modello quando si richiama la funzione.

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;