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.
SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile
L'estensione azure_ai
aggiunge la possibilità di usare modelli di linguaggio di grandi dimensioni e creare applicazioni di intelligenza artificiale generative all'interno di un database server flessibile Database di Azure per PostgreSQL integrando la potenza dei servizi di intelligenza artificiale di Azure. L'intelligenza artificiale generativa è una forma di intelligenza artificiale in cui i LLM (modelli di linguaggio su larga scala) vengono addestrati per generare contenuti originali basati sull'input del linguaggio naturale. L'uso dell'estensione azure_ai
consente di usare le funzionalità di elaborazione di query in linguaggio naturale dell'intelligenza artificiale generati direttamente dal database.
Questa esercitazione illustra l'aggiunta di funzionalità avanzate di intelligenza artificiale a un'istanza del server flessibile Database di Azure per PostgreSQL usando l'estensione azure_ai
. Illustra l'integrazione sia di Azure OpenAI che del servizio Azure AI Language nel database usando l'estensione .
Prerequisiti
Una sottoscrizione di Azure: crearne una gratuitamente.
Accesso concesso ad Azure OpenAI nella sottoscrizione di Azure desiderata. Attualmente, l'accesso a questo servizio viene concesso dall'applicazione. È possibile richiedere l'accesso a OpenAI di Azure completando il modulo all'indirizzo https://aka.ms/oai/access.
Una risorsa Azure OpenAI con il modello versione 2
text-embedding-ada-002
implementato. Questo modello è attualmente disponibile solo in determinate aree. Se non si ha una risorsa, il processo di creazione di uno è documentato nella guida alla distribuzione delle risorse OpenAI di Azure.Un servizio azure per il linguaggio di intelligenza artificiale. Se non si dispone di una risorsa, è possibile creare una risorsa linguistica nel portale di Azure seguendo le istruzioni fornite nel documento di avvio rapido per il riepilogo. È possibile usare il piano tariffario gratuito (
Free F0
) per provare il servizio e eseguire l'aggiornamento in un secondo momento a un livello a pagamento per la produzione.Un'istanza di server flessibile di Azure Database per PostgreSQL nella tua sottoscrizione di Azure. Se non si ha una risorsa, vedere Creare un server flessibile di Database di Azure per PostgreSQL.
Connettiti al database usando psql
nella shell di Azure Cloud
Aprire Azure Cloud Shell in un Web browser. Selezionare Bash come ambiente e, se richiesto, selezionare la sottoscrizione usata per il database del server flessibile Database di Azure per PostgreSQL e quindi selezionare Crea archiviazione.
Per recuperare i dettagli della connessione al database:
Andare alla risorsa del server flessibile Database di Azure per PostgreSQL nel portale di Azure.
Dal menu di navigazione a sinistra selezionare Connetti sotto Impostazioni e copiare il blocco Dettagli di connessione.
Incollare le righe di dichiarazione delle variabili di ambiente copiate nel terminale di Azure Cloud Shell aperto in precedenza, sostituendo il
{your-password}
token con la password impostata durante la creazione del database.export PGHOST={your-server-name}.postgresql.database.azure.com export PGUSER={your-user-name} export PGPORT=5432 export PGDATABASE={your-database-name} export PGPASSWORD="{your-password}"
Connettiti al tuo database usando l'utilità della riga di comando psql digitando quanto segue al prompt.
psql
Installare l'estensione azure_ai
L'estensione azure_ai
consente di integrare Azure OpenAI e Servizi cognitivi di Azure nel database. Per abilitare l'estensione nel database, seguire questa procedura:
Aggiungere l'estensione all'elenco consenti come descritto in Consenti estensioni.
Nel database in cui si prevede di usare l'estensione
azure_ai
, installarlo come descritto in Creare estensioni
Esaminare gli oggetti contenuti nell'estensione azure_ai
La revisione degli oggetti contenuti nell'estensione azure_ai
può fornire una migliore comprensione delle funzionalità offerte. È possibile usare il \dx
meta-comando dal psql
prompt dei comandi per elencare gli oggetti contenuti nell'estensione.
\dx+ azure_ai
L'output del meta-comando mostra che l'estensione azure_ai
crea tre schemi, più funzioni definite dall'utente e diversi tipi compositi nel database. La tabella seguente elenca gli schemi aggiunti dall'estensione e descrive ognuno di essi.
Schema | Descrizione |
---|---|
azure_ai |
Schema principale in cui risiedono la tabella di configurazione e le funzioni definite dall'utente per interagire con essa. |
azure_openai |
Contiene le UDFs che consentono di chiamare un endpoint di Azure OpenAI. |
azure_cognitive |
Fornisce funzioni definite dall'utente e tipi compositi correlati all'integrazione del database con Servizi cognitivi di Azure. |
Le funzioni e i tipi sono tutti associati a uno degli schemi. Per esaminare le funzioni definite nello azure_ai
schema, usare il \df
meta-comando, specificando lo schema le cui funzioni devono essere visualizzate. I \x auto
comandi prima del \df
comando attivano e disattivano automaticamente la visualizzazione espansa per semplificare la visualizzazione dell'output del comando in Azure Cloud Shell.
\x auto
\df+ azure_ai.*
La azure_ai.set_setting()
funzione consente di impostare l'endpoint e i valori critici per i servizi di intelligenza artificiale di Azure. Accetta una chiave e il valore da assegnare. La azure_ai.get_setting()
funzione consente di recuperare i valori impostati con la set_setting()
funzione . Accetta la chiave dell'impostazione da visualizzare. Per entrambi i metodi, la chiave deve essere una delle seguenti:
Chiave | Descrizione |
---|---|
azure_openai.endpoint |
Endpoint OpenAI supportato , ad esempio https://example.openai.azure.com . |
azure_openai.subscription_key |
Chiave di sottoscrizione per una risorsa OpenAI. |
azure_cognitive.endpoint |
Endpoint di Servizi cognitivi supportato (ad esempio, https://example.cognitiveservices.azure.com ). |
azure_cognitive.subscription_key |
Chiave di sottoscrizione per una risorsa di Servizi cognitivi. |
Importante
Poiché le informazioni di connessione per i servizi di intelligenza artificiale di Azure, incluse le chiavi API, vengono archiviate in una tabella di configurazione nel database, l'estensione azure_ai
definisce un ruolo denominato azure_ai_settings_manager
per garantire che queste informazioni siano protette e accessibili solo agli utenti assegnati a tale ruolo. Questo ruolo consente la lettura e la scrittura di impostazioni correlate all'estensione. Solo gli utenti avanzati e i membri del ruolo azure_ai_settings_manager
possono richiamare le funzioni azure_ai.get_setting()
e azure_ai.set_setting()
. In Database di Azure per PostgreSQL server flessibile, il ruolo azure_ai_settings_manager
viene assegnato a tutti gli utenti amministratori.
Generare incorporamenti vettoriali con Azure OpenAI
Lo azure_ai
schema dell'estensione azure_openai
consente l'uso di Azure OpenAI per la creazione di incorporamenti vettoriali per i valori di testo. Usando questo schema, è possibile generare incorporamenti con Azure OpenAI direttamente dal database per creare rappresentazioni vettoriali del testo di input, che possono quindi essere usate nelle ricerche di somiglianza vettoriale e usate dai modelli di Machine Learning.
Gli incorporamenti sono una tecnica dell'uso di modelli di Machine Learning per valutare il livello di correlazione delle informazioni. Questa tecnica consente di identificare in modo efficiente le relazioni e le analogie tra i dati, consentendo agli algoritmi di identificare i modelli ed eseguire stime accurate.
Impostare l'endpoint e la chiave OpenAI di Azure
Prima di usare le azure_openai
funzioni:
Configurare l'estensione con l'endpoint del servizio Azure OpenAI e la chiave.
Andare alla risorsa OpenAI di Azure nel portale di Azure e selezionare la voce Chiavi e endpoint in Gestione risorse nel menu a sinistra.
Copiare l'endpoint e la chiave di accesso. È possibile usare
KEY1
oKEY2
. Avere sempre due chiavi consente di ruotare e rigenerare in modo sicuro le chiavi senza causare interruzioni del servizio.
Il comando seguente, sostituire i token {endpoint}
e {api-key}
con i valori recuperati dal portale di Azure, quindi eseguire i comandi dal prompt dei comandi psql
per aggiungere i valori alla tabella di configurazione.
SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');
Verificare le impostazioni scritte nella tabella di configurazione:
SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.get_setting('azure_openai.subscription_key');
L'estensione azure_ai
è ora connessa all'account OpenAI di Azure e pronta per generare incorporamenti vettoriali.
Popolare il database con i dati di esempio
Questa esercitazione utilizza un piccolo sottoinsieme del dataset BillSum, che fornisce un elenco di progetti di legge del Congresso degli Stati Uniti e dello stato della California, per fornire dati di testo di esempio per generare vettori. È possibile scaricare il file bill_sum_data.csv
contenente questi dati dal repository GitHub degli esempi di Azure.
Per ospitare i dati di esempio nel database, creare una tabella denominata bill_summaries
.
CREATE TABLE bill_summaries
(
id bigint PRIMARY KEY,
bill_id text,
bill_text text,
summary text,
title text,
text_len bigint,
sum_len bigint
);
Usando il comando COPY di PostgreSQL dal psql
prompt dei comandi, carica i dati di esempio dal file CSV nella bill_summaries
tabella, specificando che la prima riga del file CSV è una riga di intestazione.
\COPY bill_summaries (id, bill_id, bill_text, summary, title, text_len, sum_len) FROM PROGRAM 'curl "https://raw.githubusercontent.com/Azure-Samples/Azure-OpenAI-Docs-Samples/main/Samples/Tutorials/Embeddings/data/bill_sum_data.csv"' WITH CSV HEADER ENCODING 'UTF8'
Abilitare il supporto vettoriale
L'estensione azure_ai
consente di generare incorporamenti per il testo di input. Per abilitare l'archiviazione dei vettori generati insieme al resto dei dati nel database, è necessario installare l'estensione pgvector
seguendo le indicazioni riportate nella documentazione relativa all'abilitazione del vettore nella documentazione del database .
Con il vettore supportato aggiunto al database, aggiungere una nuova colonna alla bill_summaries
tabella usando il vector
tipo di dati per archiviare gli incorporamenti all'interno della tabella. Il text-embedding-ada-002
modello produce vettori con dimensioni 1536, quindi è necessario specificare 1536
come dimensione vettoriale.
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Generare e archiviare vettori
La tabella bill_summaries
è ora pronta per archiviare gli incorporamenti. Usando la funzione azure_openai.create_embeddings()
, si creano vettori per il campo bill_text
e da inserire nella colonna appena creata bill_vector
nella tabella bill_summaries
.
Prima di usare la create_embeddings()
funzione, eseguire il comando seguente per esaminarlo ed esaminare gli argomenti necessari:
\df+ azure_openai.*
La Argument data types
proprietà nell'output del \df+ azure_openai.*
comando rivela l'elenco di argomenti previsti dalla funzione.
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
deployment_name | text |
Nome della distribuzione in Azure OpenAI Studio che contiene il text-embeddings-ada-002 modello. |
|
input | text |
Testo di input usato per creare incorporamenti. | |
timeout_ms | integer |
3600000 | Timeout in millisecondi dopo il quale l'operazione viene arrestata. |
throw_on_error | boolean |
true | Flag che indica se, in caso di errore, la funzione deve generare un'eccezione con conseguente rollback delle transazioni di wrapping. |
Il primo argomento è deployment_name
, assegnato quando il modello di embedding è stato distribuito nell'account OpenAI di Azure. Per recuperare questo valore, vai alla risorsa OpenAI di Azure nel portale di Azure. Da qui, nel menu di navigazione a sinistra, in Gestione delle risorse, selezionare l'elemento Distribuzioni modello per aprire Azure OpenAI Studio. In Azure OpenAI Studio, sulla scheda Distribuzioni, copiare il valore del Nome del Deployment associato alla distribuzione del modello text-embedding-ada-002
.
Usando queste informazioni, eseguire una query per aggiornare ogni record nella bill_summaries
tabella, inserendo gli incorporamenti vettoriali generati per il bill_text
campo nella bill_vector
colonna usando la azure_openai.create_embeddings()
funzione . Sostituire {your-deployment-name}
con il valore Nome distribuzione copiato dalla scheda Distribuzioni di Azure OpenAI Studio e quindi eseguire il comando seguente:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Eseguire la query seguente per visualizzare l'incorporamento generato per il primo record della tabella. È possibile eseguire \x
prima se l'output è difficile da leggere.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Ogni incorporamento è un vettore di numeri a virgola mobile, in modo che la distanza tra due incorporamenti nello spazio vettoriale sia correlata alla somiglianza semantica tra due input nel formato originale.
Eseguire una ricerca di somiglianza vettoriale
La somiglianza vettoriale è un metodo usato per misurare il modo il grado di somiglianza tra due oggetti rappresentandoli come vettori, ovvero serie di numeri. I vettori vengono spesso usati per eseguire ricerche tramite LLMs. La somiglianza vettoriale viene in genere calcolata usando metriche di distanza, ad esempio distanza euclidea o somiglianza del coseno. La distanza euclidea misura la distanza retta tra due vettori nello spazio dimensionale n, mentre la somiglianza del coseno misura il coseno dell'angolo tra due vettori.
Per consentire una ricerca più efficiente sul campo vector
creando un indice su bill_summaries
utilizzando la distanza coseno e HNSW, abbreviazione di Hierarchical Navigable Small World. HNSW consente a pgvector
di usare gli algoritmi basati su grafo più recenti per approssimare le query dei vicini più prossimi.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Ora che tutto è pronto, si può eseguire una query di ricerca similarità del coseno rispetto al database.
Nella query seguente vengono generati gli incorporamenti per una domanda di input e quindi viene eseguito il cast a una matrice vettoriale (::vector
), che consente di confrontarlo con i vettori archiviati nella bill_summaries
tabella.
SELECT bill_id, title FROM bill_summaries
ORDER BY bill_vector <=> azure_openai.create_embeddings('embeddings', 'Show me bills relating to veterans entrepreneurship.')::vector
LIMIT 3;
La query usa l'operatore <=>
vector, che rappresenta l'operatore "distanza coseno" usato per calcolare la distanza tra due vettori in uno spazio multidimensionale.
Integrare Servizi cognitivi di Azure
Le integrazioni dei servizi di intelligenza artificiale di Azure incluse nello azure_cognitive
schema dell'estensione azure_ai
offrono un set completo di funzionalità del linguaggio di intelligenza artificiale accessibili direttamente dal database. Le funzionalità includono l'analisi del sentiment, il rilevamento della lingua, l'estrazione di frasi chiave, il riconoscimento delle entità e il riepilogo del testo. L'accesso a queste funzionalità è abilitato tramite il servizio Azure AI Language.
Per esaminare le funzionalità complete di Intelligenza artificiale di Azure accessibili tramite l'estensione, vedere Integrare il server flessibile di Database di Azure per PostgreSQL con Servizi cognitivi di Azure.
Impostare l'endpoint e la chiave del servizio linguistico di intelligenza artificiale di Azure
Come per le funzioni azure_openai
, per effettuare correttamente chiamate ai servizi Azure AI utilizzando l'estensione azure_ai
, è necessario fornire l'endpoint e una chiave per il servizio Linguaggio di Azure AI. Recupera questi valori passando alla tua risorsa del servizio linguistico nel portale di Azure, dal menu a sinistra, sotto Gestione risorse, seleziona l'elemento Chiavi ed endpoint. Copiare l'endpoint e la chiave di accesso. È possibile usare KEY1
o KEY2
.
Nel comando seguente sostituisci i token {endpoint}
e {api-key}
con i valori ottenuti dal portale di Azure, poi esegui i comandi dal prompt dei comandi psql
per aggiungere i tuoi valori alla tabella di configurazione.
SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}');
SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Riepilogo delle fatture
Per illustrare alcune delle funzionalità delle azure_cognitive
funzioni dell'estensione azure_ai
, si genera un riepilogo di ogni fattura. Lo azure_cognitive
schema fornisce due funzioni per il riepilogo del testo summarize_abstractive
e summarize_extractive
. Il riepilogo astrattivo produce un riepilogo che acquisisce i concetti principali dal testo di input, ma potrebbe non usare parole identiche. Il riepilogo estrattivo assembla un riepilogo estraendo frasi critiche dal testo di input.
Per usare la capacità del servizio Azure AI Language di generare contenuti nuovi e originali, usare la summarize_abstractive
funzione per creare un riepilogo dell'input di testo. Usare di nuovo il \df
meta-comando dipsql
, questa volta per esaminare in modo specifico la funzione azure_cognitive.summarize_abstractive
.
\df azure_cognitive.summarize_abstractive
La Argument data types
proprietà nell'output del \df azure_cognitive.summarize_abstractive
comando rivela l'elenco di argomenti previsti dalla funzione.
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
testo | text |
Testo di input da riepilogare. | |
lingua | text |
Rappresentazione ISO 639-1 a due lettere della lingua in cui viene scritto il testo di input. Controllare il supporto della lingua per i valori consentiti. | |
timeout_ms | integer |
3600000 | Intervallo di timeout in millisecondi trascorsi dopo il quale l'operazione viene arrestata. |
throw_on_error | boolean |
true | Flag che indica se, in caso di errore, la funzione deve generare un'eccezione con conseguente rollback delle transazioni di wrapping. |
sentence_count | integer |
3 | Numero massimo di frasi da includere nel riepilogo generato. |
disable_service_logs | boolean |
false | Il servizio lingua registra il testo di input per 48 ore esclusivamente per consentire la risoluzione dei problemi. L'impostazione di questa proprietà su true disabilita la registrazione dell'input e potrebbe limitare la possibilità di analizzare i problemi che si verificano. Per altre informazioni, vedere Note sulla conformità e la privacy di Servizi cognitivi all'indirizzo https://aka.ms/cs-compliance e sui principi di intelligenza artificiale responsabile Microsoft all'indirizzo https://www.microsoft.com/ai/responsible-ai. |
La summarize_abstractive
funzione richiede gli argomenti seguenti: azure_cognitive.summarize_abstractive(text TEXT, language TEXT)
.
La seguente query sulla tabella bill_summaries
utilizza la funzione summarize_abstractive
per generare un nuovo riepilogo in una frase per il testo di una fattura, permettendo di integrare la potenza dell'intelligenza artificiale generativa direttamente nelle query.
SELECT
bill_id,
azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
La funzione può essere usata anche per scrivere dati nelle tabelle di database. Modificare la bill_summaries
tabella per aggiungere una nuova colonna per archiviare i riepiloghi di una frase nel database.
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Aggiornare quindi la tabella con i riepiloghi. La summarize_abstractive
funzione restituisce una matrice di testo (text[]
). La array_to_string
funzione converte il valore restituito nella relativa rappresentazione di stringa. Nella query seguente l'argomento throw_on_error
è stato impostato su false
. Questa impostazione consente al processo di riepilogo di continuare se si verifica un errore.
UPDATE bill_summaries b
SET one_sentence_summary = array_to_string(azure_cognitive.summarize_abstractive(b.bill_text, 'en', throw_on_error => false, sentence_count => 1), ' ', '')
where one_sentence_summary is NULL;
Nell'output potrebbe essere visualizzato un avviso relativo a un documento non valido per il quale non è stato possibile generare un riepilogo appropriato. Questo avviso deriva dall'impostazione di throw_on_error
a false
nella query sopra indicata. Se tale flag fosse stato lasciato all'impostazione predefinita di true
, la query ha esito negativo e non sarebbe stato scritto alcun riepilogo nel database. Per visualizzare il record che ha generato l'avviso, eseguire quanto segue:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
È quindi possibile eseguire una query sulla bill_summaries
tabella per visualizzare i nuovi riepiloghi di una frase generati dall'estensione azure_ai
per gli altri record nella tabella.
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Conclusione
Si è appena appreso come usare l'estensione azure_ai
per integrare modelli linguistici di grandi dimensioni e funzionalità di intelligenza artificiale generative nel database.
Contenuto correlato
- Come usare le estensioni di PostgreSQL in Database di Azure per server flessibile PostgreSQL.
- Informazioni su come generare incorporamenti con Azure OpenAI.
- Modelli di incorporamento del servizio OpenAI di Azure.
- Informazioni sugli incorporamenti nel servizio Azure OpenAI.
- Che cos'è il linguaggio di intelligenza artificiale di Azure?.
- Che cos'è il servizio OpenAI di Azure?.