Applicazioni intelligenti con database SQL di Azure

Si applica a:database SQL di Azure

Questo articolo offre una panoramica sull’uso di opzioni di intelligenza artificiale (IA), ad esempio OpenAI e vettori, per creare applicazioni intelligenti con database SQL di Azure.

Per campioni ed esempi, visitare il Repository di esempi di intelligenza artificiale SQL.

Guardare questo video nella serie Nozioni di base sul database SQL di Azure per una breve panoramica sulla creazione di un'applicazione AI-ready:

Panoramica

I modelli linguistici (LLM) di grandi dimensioni consentono agli sviluppatori di creare applicazioni basate su intelligenza artificiale con un’esperienza utente familiare.

L’uso di LLM nelle applicazioni offre un valore aggiunto e un’esperienza utente migliorata quando i modelli possono accedere ai dati corretti, al momento giusto, dal database dell’applicazione. Questo processo è noto come Generazione aumentata di recupero (RAG) e il database SQL di Azure vanta molte caratteristiche che supportano questo nuovo modello, facendone un ottimo database per creare applicazioni intelligenti.

I collegamenti seguenti forniscono codice di esempio di varie opzioni di database SQL di Azure per la creazione di applicazioni intelligenti:

Opzione IA Descrizione
OpenAI di Azure Generare incorporamenti per RAG e integrazioni con qualsiasi modello supportato da Azure OpenAI.
Vettori Informazioni su come usare archiviare e interrogare i vettori nel database SQL di Azure.
Azure AI Search Usare il database SQL di Azure insieme a Azure AI Search per eseguire il training di LLM sui dati.
Applicazioni intelligenti Informazioni su come creare una soluzione end-to-end con un modello comune che può essere replicato in qualsiasi scenario.
Copilota per il database SQL di Azure Ulteriori informazioni sull'insieme di esperienze assistite dall'intelligenza artificiale progettate per semplificare la progettazione, il funzionamento, l'ottimizzazione e l'integrità delle applicazioni basate sul database SQL di Azure.

Concetti chiave

Questa sezione include concetti chiave fondamentali per l’implementazione di RAG con database SQL di Azure e Azure OpenAI.

Generazione aumentata di recupero (RAG)

RAG è una tecnica che migliora la capacità dell’LLM di produrre risposte pertinenti e informative recuperando dati aggiuntivi da origini esterne. Ad esempio, RAG può eseguire query su articoli o documenti contenenti conoscenze specifiche del dominio correlate alla domanda o alla richiesta dell’utente. LLM può quindi usare i dati recuperati come riferimento durante la generazione della risposta. Ecco un esempio di un modello RAG semplice che usa database SQL di Azure:

  1. Inserire i dati nella tabella di un database SQL di Azure.
  2. Collegamento del database SQL di Azure a Azure AI Search.
  3. Creare un modello GPT4 di Azure OpenAI e collegarlo a Azure AI Search.
  4. Chattare e porre domande sui dati con il modello OpenAI di Azure sottoposto a training dall’applicazione e dal database SQL di Azure.

Il modello RAG, con progettazione dei prompt, mira a migliorare la qualità della risposta offrendo informazioni più contestuali al modello. RAG consente al modello di applicare una knowledge base più ampia incorporando origini esterne pertinenti nel processo di generazione, ottenendo risposte più complete e informate. Per altre informazioni sui LLM di grounding, vedere LLM di grounding - Hub della community Microsoft.

Prompt e loro progettazione

Per prompt si intende testo o informazioni specifiche che fungono da istruzione a un LLM o come dati contestuali su cui l’LLM può basarsi. Può assumere varie forme, ad esempio una domanda, un’istruzione o anche un frammento di codice.

Di seguito è riportato un elenco di prompt che possono essere usati per generare una risposta da un LLM:

  • Istruzioni: fornire direttive all’LLM
  • Contenuto primario: fornisce informazioni all’LLM per l’elaborazione
  • Esempi: consentono di definire la condizione del modello per un'attività o un processo specifico
  • Segnali: indirizzano l'output dell'LLM nella direzione giusta
  • Supporto del contenuto: rappresenta informazioni supplementari che l'LLM può usare per generare l'output

Il processo di creazione di prompt validi per uno scenario è denominato progettazione di prompt. Per altre informazioni sulle richieste e sulle procedure consigliate per la progettazione dei prompt, vedere Servizio OpenAI di Azure.

OAuth

I token sono piccoli blocchi di testo generati suddividendo il testo di input in segmenti più piccoli. Questi segmenti possono essere parole o gruppi di caratteri, che variano in lunghezza da un singolo carattere a un'intera parola. Ad esempio, la parola hamburger verrebbe suddivisa in token come ham, bur e ger mentre una parola breve e comune come pear verrebbe considerata un singolo token.

In Azure OpenAI il testo di input fornito all'API viene trasformato in token (tokenizzati). Il numero di token elaborati in ogni richiesta API dipende da fattori quali la lunghezza dei parametri di input, output e richiesta. La quantità di token elaborati influisce anche sul tempo di risposta e sulla produttività dei modelli. Vi sono limiti al numero di token che ogni modello può accettare in una singola richiesta/risposta da Azure OpenAI. Per altre informazioni, vedere Quote e limiti del Servizio OpenAI di Azure.

Vettori

I vettori sono matrici ordinate di numeri (in genere float) che possono rappresentare informazioni su alcuni dati. Ad esempio, un’immagine può essere rappresentata come vettore di valori pixel oppure una stringa di testo come un vettore o valori ASCII. Il processo per trasformare i dati in un vettore è denominato vettorializzazione.

Incorporamenti

Gli incorporamenti sono vettori che rappresentano caratteristiche importanti dei dati. Gli incorporamenti vengono spesso appresi con un modello di Deep Learning e i modelli di apprendimento automatico e intelligenza artificiale li usano come funzionalità. Gli incorporamenti possono inoltre acquisire la somiglianza semantica tra concetti simili. Ad esempio, durante la generazione di un incorporamento per le parole person e human, ci si aspetterebbe che gli incorporamenti (rappresentazione vettoriale) siano simili in valore, poiché anche le parole sono semanticamente simili.

Azure OpenAI offre modelli per creare incorporamenti da dati di testo. Il servizio suddivide il testo in token e genera incorporamenti usando modelli sottoposti a training preliminare da OpenAI. Per altre informazioni, consultare Creazione di incorporamenti con Azure OpenAI.

Per ricerca vettoriale si intende il processo di ricerca di tutti i vettori in un set di dati semanticamente simile a un vettore di query specifico. Pertanto, un vettore di query per la parola human cerca nell’intero dizionario parole semanticamente simili e deve trovare la parola person come corrispondenza di chiusura. Questa vicinanza o distanza viene misurata usando una metrica di somiglianza, ad esempio la somiglianza del coseno. I vettori più vicini sono in somiglianza; il più piccolo è la distanza tra di essi.

Si consideri uno scenario in cui si esegue una query su milioni di documenti per trovare nei dati a disposizione quelli più simili. È possibile creare incorporamenti per i dati ed eseguire query sui documenti usando Azure OpenAI. Dopodiché, si può eseguire una ricerca vettoriale per trovare i documenti più simili dal set di dati. Tuttavia, l’esecuzione di una ricerca vettoriale in pochi esempi è semplice, mentre farlo in migliaia o milioni di punti dati diventa complesso. Esistono anche compromessi tra la ricerca completa e i metodi di ricerca basate sull’approssimazione del vicino più prossimo, tra cui latenza, velocità effettiva, accuratezza e costi, che dipendono tutti dai requisiti dell’applicazione.

Poiché gli incorporamenti del database SQL di Azure possono essere archiviati in modo efficiente ed è possibile eseguire query usando il supporto dell’indice columnstore, consentendo la ricerca più vicina esatta con prestazioni elevate, non è necessario scegliere tra accuratezza e velocità: è possibile avere entrambe. L’archiviazione di incorporamenti di vettori insieme ai dati in una soluzione integrata riduce al minimo la necessità di gestire la sincronizzazione dei dati e accelera il time-to-market per lo sviluppo di applicazioni IA.

OpenAI di Azure

L’incorporamento è il processo di rappresentazione del mondo reale come dati. Testo, immagini o suoni possono essere convertiti in incorporamenti. I modelli OpenAI di Azure sono in grado di trasformare le informazioni del mondo reale in incorporamenti. I modelli sono disponibili come endpoint REST e pertanto possono essere facilmente utilizzati dal database SQL di Azure usando la stored procedure di sistema sp_invoke_external_rest_endpoint:

DECLARE @retval INT, @response NVARCHAR(MAX);
DECLARE @payload NVARCHAR(MAX);

SET @payload = JSON_OBJECT('input': @text);

EXEC @retval = sp_invoke_external_rest_endpoint @url = 'https://<openai-url>/openai/deployments/<model-name>/embeddings?api-version=2023-03-15-preview',
    @method = 'POST',
    @credential = [https://<openai-url>/openai/deployments/<model-name>],
    @payload = @payload,
    @response = @response OUTPUT;

SELECT CAST([key] AS INT) AS [vector_value_id],
    CAST([value] AS FLOAT) AS [vector_value]
FROM OPENJSON(JSON_QUERY(@response, '$.result.data[0].embedding'));

L’uso di una chiamata a un servizio REST per ottenere incorporamenti è solo una delle opzioni di integrazione disponibili quando si lavora con database SQL e OpenAI. È possibile consentire a qualsiasi modello disponibile di accedere ai dati archiviati nel database SQL di Azure per creare soluzioni in cui gli utenti possono interagire con i dati, come nell’esempio seguente.

Screenshot di un bot di intelligenza artificiale che risponde alla domanda usando i dati archiviati nel database SQL di Azure.

Per altri esempi sull’uso di database SQL e OpenAI, vedere gli articoli seguenti:

Vettori

Anche se il database SQL di Azure non ha un tipo vettore nativo, un vettore non è altro che una tupla ordinata e i database relazionali sono ideali per la sua gestione. Si può pensare a una tupla come il termine formale per la riga di una tabella.

Il database SQL di Azure supporta anche gli indici columnstore e l’esecuzione in modalità batch. Un approccio basato su vettori viene usato per l’elaborazione in modalità batch, il che significa che ogni colonna in un batch ha la propria posizione di memoria in cui è archiviata come vettore. Ciò consente un’elaborazione più rapida ed efficiente dei dati in batch.

Di seguito è riportato un esempio che illustra come un vettore può essere archiviato nel database SQL:

CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
    [article_id] [int] NOT NULL,
    [vector_value_id] [int] NOT NULL,
    [vector_value] [float] NOT NULL
)
GO

CREATE CLUSTERED COLUMNSTORE INDEX ixc
    ON dbo.wikipedia_articles_embeddings_titles_vector
    ORDER (article_id);
GO

Per un esempio che usa un sottoinsieme comune di articoli di Wikipedia con incorporamenti già generati con OpenAI, consultare Ricerca di somiglianza vettoriale con database SQL di Azure e OpenAI.

Un’altra opzione per sfruttare la ricerca vettoriale nel database SQL di Azure è l’integrazione con Azure per intelligenza artificiale usando le funzionalità di vettorializzazione integrate: Ricerca vettoriale con database SQL di Azure e Azure AI Search

Implementare modelli RAG con database SQL di Azure e Azure AI Search. È possibile eseguire modelli di chat supportati sui dati archiviati nel database SQL di Azure, senza dover eseguire il training o ottimizzare i modelli, grazie all’integrazione di Azure AI Search con Azure OpenAI e il database SQL di Azure. L’esecuzione di modelli sui dati consente di chattare e analizzare i dati con maggiore precisione e velocità.

Applicazioni intelligenti

Il database SQL di Azure può essere usato per creare applicazioni intelligenti che includono funzionalità IA, ad esempio i suggerimenti e la generazione aumentata di recupero (RAG) come illustrato nel diagramma seguente:

Diagramma delle diverse funzionalità di intelligenza artificiale per creare applicazioni intelligenti con il database SQL di Azure.

Per un esempio end-to-end per creare un'applicazione abilitata all'intelligenza artificiale utilizzando le sessioni astratte come set di dati di esempio, vedere:

Integrazione di LangChain

LangChain è un noto framework per lo sviluppo di applicazioni basate su modelli linguistici.

Per un esempio che illustra come usare LangChain per creare un chatbot sui propri dati, vedere Creazione di un DB con copilota per Azure SQL con Azure OpenAI GPT-4.

Integrazione del kernel semantico

Il kernel semantico è un SDK open source che consente di compilare facilmente agenti che possono chiamare il codice esistente. Essendo un SDK altamente estensibile, è possibile usare il kernel semantico con modelli di OpenAI, OpenAI di Azure, Hugging Face e altro ancora. Combinando il codice C#, Python e Java esistente con questi modelli, è possibile creare agenti che rispondono a domande e automatizzare i processi.

Copilot per database SQL di Azure (anteprima)

Copilot nel database SQL di Azure (anteprima) è un set di esperienze assistite dall'intelligenza artificiale progettate per semplificare la progettazione, il funzionamento, l'ottimizzazione e l'integrità delle applicazioni basate sul database SQL di Azure. Copilot migliora la produttività offrendo la conversione dal linguaggio naturale a SQL e l'aiuto online per l'amministrazione del database.

Copilot fornisce risposte pertinenti alle domande degli utenti, semplificando la gestione dei database sfruttando contesto del database, documentazione, viste a gestione dinamica, Query Store e altre fonti di informazioni. Ad esempio:

  • Gli amministratori di database possono gestire in modo indipendente i database e risolvere i problemi oppure venire a conoscenza di altre informazioni sulle prestazioni e sulle funzionalità del database.
  • Gli sviluppatori possono porre domande sui dati via testo o conversazione per generare una query T-SQL. Gli sviluppatori possono anche imparare a scrivere query più velocemente tramite spiegazioni dettagliate della query generata.

Nota

Copilot nel database SQL di Azure è attualmente disponibile in anteprima per un numero limitato di early adopter. Per iscriversi a questo programma, visitare Richiedere l'accesso a Copilot in database SQL di Azure: Anteprima. L'anteprima di Copilot per database SQL di Azure include due esperienze con il portale di Azure:

Posizione del portale Esperienze
Editor di query del portale di Azure Linguaggio naturale in SQL: questa esperienza all'interno dell'editor di query portale di Azure per database SQL di Azure converte le query in linguaggio naturale in SQL, rendendo le interazioni del database più intuitive. Per un'esercitazione ed esempi di funzionalità di conversione dal linguaggio naturale a SQL, vedere Dal linguaggio naturale a SQL nell'editor di query del portale di Azure (anteprima).
Microsoft Copilot per Azure Integrazione con Azure Copilot: questa esperienza aggiunge le competenze di Azure SQL a Microsoft Copilot per Azure, offrendo ai clienti assistenza autoguidata e consentendo loro di gestire i propri database e risolvere i problemi in modo indipendente.

Per ulteriori informazioni, vedere Domande frequenti su Copilot in Microsoft Azure SQL (anteprima).