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.
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 SQL Server e Istanza gestita di SQL di Azure.
Per database SQL di Azure e il database SQL in Fabric, vedere Applicazioni intelligenti e IA.
Per campioni ed esempi, visitare il repository SQL AI Samples.
Informazioni generali
I modelli di linguaggio di grandi dimensioni consentono agli sviluppatori di creare applicazioni basate su intelligenza artificiale con un'esperienza utente familiare.
L'uso di LLMs nelle applicazioni offre un valore maggiore 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 SQL motore di database dispone di molte funzionalità che supportano questo nuovo modello, rendendolo un database ideale per creare applicazioni intelligenti.
I collegamenti seguenti forniscono codice di esempio di varie opzioni per creare applicazioni intelligenti:
| Opzione intelligenza artificiale | Description |
|---|---|
| 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 usando un modello comune che può essere replicato in qualsiasi scenario. |
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. Poiché l'area della superficie è vincolata e descritta, 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 implementare RAG con Azure OpenAI nel motore di 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 questi dati recuperati come riferimento durante la generazione della risposta. Ad esempio, un modello RAG semplice che usa sql motore di database potrebbe essere:
- Inserire dati in una tabella.
- Collegare l'istanza a Azure AI Search.
- Creare un Azure modello OpenAI GPT-4 e connetterlo a Azure AI Search.
- Comunica e poni domande sui tuoi dati utilizzando il modello Azure OpenAI addestrato, direttamente dalla tua applicazione e dai dati nella tua istanza.
Il modello RAG, con la progettazione prompt, serve allo scopo di migliorare la qualità della risposta offrendo informazioni più contestuali al modello. 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.
Prompts e progettazione dei prompt
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. Una richiesta 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: aiutare a condizionare il modello per svolgere un'attività o un processo specifico
- Segnali: dirigere l'output dell'LLM nella direzione giusta
- Contenuto di supporto: rappresenta informazioni supplementari che l'LLM può usare per generare l'output
Il processo di creazione di richieste valide per uno scenario è denominato ingegneria dei prompt. Per altre informazioni sulle richieste e sulle procedure consigliate per la progettazione dei prompt, vedere Tecniche di progettazione dei prompt.
Tokens
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 velocità effettiva 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 Azure OpenAI in Azure AI Foundry Modelli quote e limiti.
Vectors
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 vectorizzazione. 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 Comprendere gli embedding in Azure OpenAI nei modelli Azure AI Foundry.
Ricerca vettoriale
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. Questa vicinanza, o distanza, viene misurata usando una metrica di somiglianza, ad esempio la somiglianza del coseno. 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. È quindi possibile eseguire una ricerca vettoriale per trovare i documenti più simili dal set di dati. Tuttavia, l'esecuzione di una ricerca vettoriale in alcuni esempi è semplice. L'esecuzione di questa stessa ricerca in migliaia o milioni di punti dati diventa complessa. 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 ed eseguire query sulle vettori in modo efficiente nel motore di database SQL, come descritto nelle sezioni successive. Questa funzionalità consente la ricerca del vicino più prossimo esatto 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 di intelligenza artificiale.
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 utilizzare facilmente tramite il motore di database SQL usando la stored procedure di sistema sp_invoke_external_rest_endpoint. Questa procedura è disponibile a partire da SQL Server 2025 (17.x) e Istanza gestita di SQL di Azure configurati con Always-up-to-date update policy.
DECLARE @retval AS INT,
@response AS NVARCHAR (MAX),
@payload AS NVARCHAR (MAX);
SET @payload = JSON_OBJECT('input':@text);
EXECUTE
@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;
DECLARE @e AS VECTOR(1536) = 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 Istanza gestita di SQL e OpenAI. È possibile consentire a qualsiasi modello available di accedere ai dati archiviati nel motore di database SQL per creare soluzioni in cui gli utenti possono interagire con i dati, ad esempio l'esempio seguente:
Per altri esempi sull'uso di Azure SQL e OpenAI, vedere gli articoli seguenti, che si applicano anche a SQL Server e Istanza gestita di SQL di Azure:
- Generare immagini con Servizio Azure OpenAI (DALL-E) e Azure SQL
- Utilizza gli endpoint REST OpenAI con Azure SQL
Esempi di vettori
Il tipo di dati vettoriale dedicato archivia in modo efficiente i dati vettoriali e include un set di funzioni che consentono agli sviluppatori di semplificare l'implementazione della ricerca vettoriale e di somiglianza. È possibile calcolare la distanza tra due vettori in una riga di codice usando la nuova VECTOR_DISTANCE funzione. Per altre informazioni ed esempi, vedere Indici di ricerca e vettori in SQL motore di database.
Per 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)
Azure AI Search
Implementare modelli RAG usando il motore di database SQL e Azure AI Search. È possibile eseguire modelli di chat supportati sui dati archiviati in SQL motore di database senza dover eseguire il training o ottimizzare i modelli integrando Azure AI Search con Azure OpenAI e SQL motore di database. Quando si eseguono modelli sui dati, è possibile chattare sui dati e analizzarli con maggiore precisione e velocità.
Per altre informazioni sull'integrazione di Azure AI Search con Azure OpenAI e sql motore di database, vedere gli articoli seguenti. Questi articoli si applicano anche a SQL Server e Istanza gestita di SQL di Azure:
- Azure OpenAI sui tuoi dati
- Retrieval Augmented Generation (RAG) in Azure AI Search
- Ricerca vettoriale con Azure SQL e Azure AI Search
Applicazioni intelligenti
È possibile usare il motore di database SQL per creare applicazioni intelligenti che includono funzionalità di intelligenza artificiale, ad esempio i consigli e la generazione aumentata (RAG), come illustrato nel diagramma seguente:
Per un esempio end-to-end che illustra come creare un'applicazione abilitata per l'intelligenza artificiale usando sessioni astratte come set di dati di esempio, vedere:
- Come ho creato un consiglio di sessione in 1 ora usando OpenAI.
- Usare la Generazione Aumentata dal Recupero per creare un assistente per le sessioni delle conferenze.
Annotazioni
L'integrazione di LangChain e l'integrazione di Kernel semantico si basano sul tipo di dati vector, disponibile a partire da SQL Server 2025 (17.x) e in Istanza gestita di SQL di Azure configurata con il criterio di aggiornamento "Always-up-to-date" o SQL Server 2025, database SQL di Azure e il database SQL in Microsoft Fabric.
Integrazione di LangChain
LangChain è un framework noto per lo sviluppo di applicazioni basate su modelli linguistici. Per esempi che illustrano come usare LangChain per creare un chatbot sui propri dati, vedere:
- langchain-sqlserver Pacchetto PyPI.
Alcuni esempi di uso di Azure SQL con LangChain:
Gli esempi end-to-end:
- Build un chatbot sui propri dati in 1 ora con Azure SQL, Langchain e Chainlit: Costruire un chatbot usando il modello RAG sui propri dati, utilizzando LangChain per orchestrare le chiamate LLM e Chainlit per l'interfaccia utente.
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.
Un esempio di facilità con cui Kernel semantico consente di creare soluzioni abilitate 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.