Condividi tramite


Applicazioni intelligenti e intelligenza artificiale

Applies to:database SQL di AzureSQL database in Fabric

Questo articolo offre una panoramica dell'uso di opzioni di intelligenza artificiale (AI), ad esempio OpenAI e vettori, per creare applicazioni intelligenti con SQL motore di database in database SQL di Azure e Fabric database SQL.

Guardare questo video nella serie database SQL di Azure essentials per una breve panoramica della creazione di un'applicazione pronta per l'intelligenza artificiale:

Per campioni ed esempi, visitare il repository di campioni di SQL AI.

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). database SQL di Azure e Fabric database SQL hanno molte funzionalità che supportano questo nuovo modello, rendendoli database eccezionali per la creazione di applicazioni intelligenti.

I collegamenti seguenti forniscono codice di esempio di varie opzioni per creare applicazioni intelligenti:

Opzione IA Descrizione
SQL MCP Server Interfaccia stabile e regolamentata per il database, definendo un set di strumenti e configurazione.
Azure OpenAI Generare incorporamenti per RAG e integrarsi con qualsiasi modello supportato da Azure OpenAI.
Vettori Informazioni su come archiviare i vettori e usare le funzioni vettoriali nel database.
Azure AI Search Usare il database insieme a Azure AI Search per eseguire il training dell'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.
Funzionalità Copilot in database SQL di Azure Informazioni sul set di esperienze basate su intelligenza artificiale progettate per semplificare la progettazione, l'operazione, l'ottimizzazione e l'integrità delle applicazioni basate su database SQL di Azure.
Funzionalità Copilot nel database SQL Fabric Informazioni sul set di esperienze basate su intelligenza artificiale progettate per semplificare la progettazione, l'operazione, l'ottimizzazione e l'integrità delle applicazioni basate su database SQL Fabric.

SQL MCP Server nelle applicazioni di intelligenza artificiale

SQL MCP Server si trova direttamente nel percorso dati per gli agenti di intelligenza artificiale.

  • Quando i modelli generano richieste, il server fornisce un'interfaccia stabile e regolamentata per il database.
  • Anziché esporre uno schema grezzo o basarsi su SQL generato, instrada tutto l'accesso tramite un set definito di strumenti supportato dalla tua configurazione.

Questo approccio mantiene prevedibili le interazioni e garantisce che ogni operazione sia allineata alle autorizzazioni e alla struttura definite. Per altre informazioni, vedere aka.ms/sql/mcp.

Separando il ragionamento dall'esecuzione, i modelli si concentrano sulla finalità mentre SQL MCP Server gestisce il modo in cui tale finalità diventa query valide. L'area di attacco rimane vincolata perché gli agenti possono individuare le funzionalità disponibili, comprendere gli input e gli output e operare senza indovinare. Questo design riduce gli errori e elimina la necessità di prompt complessi per compensare l'ambiguità dello schema.

Per gli sviluppatori, questo approccio significa che l'IA può partecipare in modo sicuro ai carichi di lavoro reali.

È possibile:

  • Definire le entità una sola volta
  • Applicare ruoli e vincoli

La piattaforma è quindi:

  • Applica entità, ruoli e vincoli in modo coerente
  • Crea una base affidabile per le applicazioni guidate dall'agente sui dati SQL.

La stessa configurazione che supporta REST e GraphQL controlla anche MCP, quindi non esiste alcuna duplicazione di regole o logica. Per altre informazioni, vedere aka.ms/dab/docs.

Concetti chiave per l'implementazione di RAG con Azure OpenAI

Questa sezione include concetti chiave fondamentali per l'implementazione di RAG con Azure OpenAI in database SQL di Azure o Fabric database SQL.

Generazione aumentata di estrazione (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. Ad esempio, un modello RAG semplice che usa database SQL di Azure potrebbe essere:

  1. Inserire dati in una tabella.
  2. Collegare database SQL di Azure a Azure AI Search.
  3. Creare un Azure modello OpenAI GPT-4 e connetterlo a Azure AI Search.
  4. Chattare e fare domande sui tuoi dati utilizzando il modello Azure OpenAI addestrato, sia dalla tua applicazione che da database SQL di Azure.

Lo schema RAG, insieme all’ingegneria dei prompt, migliora la qualità delle risposte offrendo al modello informazioni più contestuali. Rag consente al modello di applicare una knowledge base più ampia incorporando le origini esterne pertinenti nel processo di generazione, ottenendo risposte più complete e informate. Per altre informazioni su grounding LLMs, vedere Grounding LLMs - Microsoft Community Hub.

Comandi e ingegneria dei comandi

Un prompt è un testo o informazioni specifiche che fungono da istruzione per un modello linguistico di grandi dimensioni (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.

Le richieste di esempio che è possibile usare per generare una risposta da un LLM includono:

  • 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
  • Contenuto di supporto: rappresenta informazioni aggiuntive che l'LLM può utilizzare 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 Azure OpenAI.

Token

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 è divisa in token come ham, bure mentre ger una parola breve e comune come pear è considerato un singolo token.

In Azure OpenAI, l'API tokenzza il testo di input. 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. Ogni modello ha limiti al numero di token che può richiedere in una singola richiesta e risposta da Azure OpenAI. Per altre informazioni, vedere Servizio Azure OpenAI quote e limiti.

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 può essere rappresentata come vettore di valori ASCII. Il processo per trasformare i dati in un vettore è denominato vettorializzazione. Per altre informazioni, vedere Esempi di vettori.

L'uso dei dati vettoriali è più semplice con l'introduzione del tipo di dati vettoriale e delle funzioni vettoriali.

Integrazioni

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

Azure presenta modelli OpenAI per creare embedding dai dati di testo. Il servizio suddivide il testo in token e genera incorporamenti usando modelli sottoposti a training preliminare da OpenAI. Per altre informazioni, vedere Creating embeddings with Azure OpenAI.

Per un elenco delle risposte alle domande comuni sui vettori e sugli incorporamenti, vedere:

La ricerca vettoriale è 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 dovrebbe trovare la parola person come una corrispondenza stretta. Una metrica di somiglianza, ad esempio la somiglianza del coseno, misura questa vicinanza o distanza. I vettori più vicini sono in somiglianza, minore è la distanza tra di esse.

Si consideri uno scenario in cui si esegue una query su milioni di documenti per trovare i documenti più simili nei dati. È 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, Eseguire la stessa ricerca su migliaia o milioni di punti dati diventa impegnativo. Esistono anche compromessi tra i metodi di ricerca esaustivi e i metodi di ricerca degli approssimati più vicini (ANN), tra cui latenza, throughput, accuratezza e costi. Tutti questi compromessi dipendono dai requisiti dell'applicazione.

È possibile archiviare in modo efficiente i vettori di query in database SQL di Azure, che consente la ricerca esatta più vicina con prestazioni elevate. Non è necessario decidere tra precisione e velocità: è possibile avere entrambi. 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.

Per altre informazioni sui vettori e sugli incorporamenti, vedere:

Azure OpenAI

L’incorporamento è il processo di rappresentazione del mondo reale come dati. È possibile convertire testo, immagini o suoni in incorporamenti. I modelli di Azure OpenAI possono trasformare le informazioni del mondo reale in embedding. È possibile accedere ai modelli come endpoint REST, in modo da poterli usare facilmente da 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 available di accedere ai dati archiviati in database SQL di Azure per creare soluzioni in cui gli utenti possono interagire con i dati, ad esempio l'esempio seguente.

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

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

Esempi di vettori

Il tipo di dati vettoriale dedicato consente l'archiviazione efficiente e ottimizzata dei dati vettoriali. Include un set di funzioni che consentono agli sviluppatori di semplificare l'implementazione di ricerca vettoriale e di somiglianza. È possibile calcolare la distanza tra due vettori in una riga di codice usando la VECTOR_DISTANCE funzione . Per altre informazioni ed esempi, vedere Indici di ricerca e vettori in SQL motore di database.

Ad esempio:

CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
    [article_id] [int] NOT NULL,
    [embedding] [vector](1536) NOT NULL,    
)
GO

SELECT TOP(10) 
    * 
FROM 
    [dbo].[wikipedia_articles_embeddings_titles_vector]
ORDER BY
    VECTOR_DISTANCE('cosine', @my_reference_vector, embedding)

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

Applicazioni intelligenti

È possibile usare database SQL di Azure per creare applicazioni intelligenti che includono funzionalità di intelligenza artificiale, ad esempio i consigli e la generazione aumentata di recupero (RAG), come illustrato nel diagramma seguente:

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

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

Per altri dettagli sulle applicazioni intelligenti, vedere:

Integrazione di LangChain

LangChain è un noto framework per lo sviluppo di applicazioni basate su modelli linguistici. Per esempi che illustrano come LangChain può essere usato per creare un chatbot sui propri dati, vedere:

Alcuni esempi sull'uso di Azure SQL con LangChain:

Esempi completi:

integrazione del Kernel semantico

Kernel semantico è un SDK open source che è possibile usare per compilare facilmente agenti che chiamano il codice esistente. Come SDK altamente estendibile, è possibile usare Kernel semantico con modelli di OpenAI, Azure OpenAI, Hugging Face e altro ancora. Combinando il codice C#, Python e Java esistente con questi modelli, è possibile compilare agenti che rispondono a domande e automatizzare i processi.

Di seguito è riportato un esempio che illustra come Kernel semantico consente di creare una soluzione abilitata per l'intelligenza artificiale:

  • Il chatbot finale?: creare un chatbot sui propri dati usando sia i modelli NL2SQL che RAG per l'esperienza utente finale.

Microsoft Copilot competenze in database SQL di Azure

Microsoft Copilot in database SQL di Azure (anteprima) è un set di esperienze basate sull'intelligenza artificiale progettate per semplificare la progettazione, l'operazione, l'ottimizzazione e l'integrità delle applicazioni basate su database SQL di Azure.

Copilot fornisce risposte pertinenti alle domande dell'utente, semplificando la gestione dei database usando contesto del database, documentazione, viste a gestione dinamica, Query Store e altre origini delle 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

Le funzionalità di Microsoft Copilot in database SQL di Azure sono attualmente in anteprima per un numero limitato di early adopter. Per iscriversi a questo programma, visitare Request Access to Copilot in database SQL di Azure: Preview.

Microsoft Copilot nel database SQL di Fabric (anteprima)

Copilot per il database SQL in Microsoft Fabric include assistenza integrata per l'intelligenza artificiale con le funzionalità seguenti:

  • Completamento codice: iniziare a scrivere T-SQL nell'editor di query SQL e Copilot genera automaticamente un suggerimento di codice per completare la query. Premere TAB per accettare il suggerimento del codice o continuare a digitare per ignorarlo.

  • Azioni rapide: nella barra multifunzione dell'editor di query SQL le opzioni Correzione e spiegazione sono azioni rapide. Evidenziare una query SQL e selezionare uno dei pulsanti azione rapida per eseguire l'azione selezionata nella query.

    • Fix: Copilot corregge gli errori nel codice man mano che si verificano messaggi di errore. Gli scenari di errore possono includere codice T-SQL non corretto o non supportato, ortografie errate e altro ancora. Copilot fornisce anche commenti che illustrano le modifiche e suggeriscono le procedure consigliate per SQL.

    • Explain: Copilot fornisce spiegazioni in linguaggio naturale della query SQL e dello schema del database in formato commenti.

  • riquadro Chat: usare il riquadro chat per porre domande a Copilot tramite il linguaggio naturale. Copilot risponde con una query SQL generata o un linguaggio naturale in base alla domanda posta.

    • Linguaggio naturale per SQL: generare codice T-SQL da richieste di testo normale e ottenere suggerimenti di domande da porre per accelerare il flusso di lavoro.

    • Document-based Q&A: Fai domande a Copilot sulle funzionalità generali dei database SQL ed esso risponde in linguaggio naturale. Copilot consente anche di trovare la documentazione relativa alla richiesta.

Copilot per il database SQL usa nomi di tabella e vista, nomi di colonna, chiave primaria e metadati di chiave esterna per generare codice T-SQL. Copilot per il database SQL non usa i dati nelle tabelle per generare suggerimenti T-SQL.