Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'estensione Azure AI introduce gli operatori semantici, una funzionalità rivoluzionaria che integra funzionalità avanzate di intelligenza artificiale generativa (GenAI) direttamente in SQL PostgreSQL. Questi operatori, basati su modelli come il completamento della chat e altre distribuzioni di Azure AI, consentono agli sviluppatori di creare applicazioni basate su GenAI direttamente all'interno dei database. In questo modo vengono sbloccate nuove funzionalità per comprendere testo, ragionamento e generare output strutturati.
Funzionalità principali
Gli operatori semantici forniscono agli utenti quattro funzioni SQL di base che usano funzionalità di IA generativa:
-
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.
Ogni funzione opera tramite gli endpoint di AI Foundry registrati usando la funzione azure_ai.set_setting, garantendo un'integrazione e un controllo utente senza problemi.
Informazioni sugli operatori semantici
Gli operatori semantici nell'estensione Azure AI sono progettati per semplificare attività complesse guidate dall'intelligenza artificiale direttamente all'interno del database PostgreSQL. Questi operatori consentono agli utenti di integrare facilmente le funzionalità di IA generativa nei flussi di lavoro SQL, consentendo la generazione avanzata di testo, la valutazione della verità, l'estrazione di entità e la classificazione dei documenti. Ogni operatore è ottimizzato per facilità d'uso e flessibilità, consentendo agli sviluppatori di creare applicazioni intelligenti con un impegno minimo.
azure_ai.generate()
Questo operatore usa modelli linguistici di grandi dimensioni per generare testo o output strutturato.
Supporta i parametri di input seguenti:
| Argomentazione | TIPO | Descrizione |
|---|---|---|
prompt |
text |
Richiesta dell'utente da inviare al modello linguistico di grandi dimensioni. |
json_schema (facoltativo) |
JsonB
DEFAULT ''
|
Schema JSON dell'output strutturato a cui si vuole che la risposta del modello linguistico di grandi dimensioni sia conforme. Deve seguire la notazione Open AI per l'output strutturato. |
model (facoltativo) |
text
DEFAULT "gpt-4.1"
|
Nome della distribuzione modello in Fonderia Azure AI. |
system_prompt (facoltativo) |
text
DEFAULT "You are a helpful assistant."
|
Richiesta di sistema da inviare al modello linguistico di grandi dimensioni. |
Per impostazione predefinita, l'operatore restituisce un valore text contenente la risposta generata. Se viene specificato l'argomento , l'output json_schema viene restituito 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()
Questo operatore valuta la probabilità che una determinata istruzione sia vera, restituendo un valore boolean o NULL se il risultato è inconcludente.
Supporta i parametri di input seguenti:
| Argomentazione | TIPO | Descrizione |
|---|---|---|
statement |
text |
Istruzione da valutare come vera o falsa. |
model (facoltativo) |
text
DEFAULT "gpt-4.1"
|
Nome della distribuzione modello in Fonderia Azure AI. |
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()
Questo operatore estrae le caratteristiche strutturate o le entità dal testo in base alle etichette definite dall'utente.
Supporta i parametri di input seguenti:
| Argomentazione | TIPO | Descrizione |
|---|---|---|
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 modello in Fonderia Azure AI. |
L'operatore restituisce un oggetto JsonB contenente le entità estratte mappate in base 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()
Questo operatore classifica i documenti in base alla pertinenza di una determinata query. Supporta modelli tra codificatori e GPT.
Supporta i parametri di input seguenti:
| Argomentazione | TIPO | Descrizione |
|---|---|---|
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 modello in Fonderia Azure AI. Supporta sia il codificatore incrociato che i modelli basati su GPT. |
L'operatore restituisce un oggetto table contenente l'ID documento, la relativa classificazione e il punteggio della rilevanza 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 gli operatori semantici nel database PostgreSQL, seguire questa procedura:
Configurare gli operatori .generate(), .extract() e .is_true()
Questi operatori supportano i modelli di completamento della chat e per impostazione predefinita gpt-4.1.
Abilitare l'estensione
azure_ainell'istanza del server flessibile di Database di Azure per PostgreSQL.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 Fonderia Azure AI.Prendere nota dell'URL dell'endpoint di Azure OpenAI e della chiave API.
Configurare l'accesso:
Per abilitare l'estensione
azure_aiper 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_typesu "managed-identity". - Impostare
azure_openai.endpointcon l'URL dell'endpoint.
È ora tutto impostato per richiamare gli operatori
.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 per l'operatore .rank()
L'operatore .rank() supporta sia modelli di completamento tra codificatori sia di chat e per impostazione predefinita per il codificatore incrociato Cohere-rerank-v3.5.
Uso del codificatore incrociato Cohere-rerank-v3.5:
Abilita l'estensione
azure_aisulla tua istanza del Database di Azure per PostgreSQL.Passare ad Fonderia Azure AI e distribuire il modello
Cohere-rerank-v3.5usando l'opzione di acquisto dell'API serverless.Si noti la chiave dell'endpoint e la route dell'API Reranker del modello, che dovrebbe avere un aspetto simile al seguente:
https://<deployment name>.<region>.models.ai.azure.com/<v1 or v2>/rerank.Configurare l'accesso:
Per abilitare l'estensione
azure_aiper 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_typesu "managed-identity". - Impostare
azure_ml.serverless_ranking_endpointcon l'API Cohere reranker.
A questo punto è tutto impostato per richiamare l'operatore
.rank()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 l'operatore .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 l'operatore.
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;