Condividi tramite


Applicazioni intelligenti e intelligenza artificiale

Si applica a: Sql Server 2025 (17.x) DatabaseSQL di Azure Istanza gestita di SQL di Azurein Microsoft Fabric

Questo articolo offre una panoramica dell'uso di opzioni di intelligenza artificiale ,ad esempio OpenAI e vettori, per creare applicazioni intelligenti con il motore di database SQL in SQL Server e Istanza gestita di SQL di Azure.

Per il database SQL di Azure, vedere Applicazioni intelligenti e intelligenza artificiale.

Per esempi ed esempi, visitare il repository di esempi di intelligenza artificiale SQL.

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 il motore di database SQL ha molte funzionalità che supportano questo nuovo modello, rendendolo un ottimo database per creare applicazioni intelligenti.

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

Opzione intelligenza artificiale Description
OpenAI di Azure 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.
Ricerca di intelligenza artificiale di Azure Usare il database insieme a Ricerca intelligenza artificiale di Azure per eseguire il training di 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.

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 il motore di database SQL potrebbe essere:

  1. Inserire dati in una tabella.
  2. Collegare l'istanza a Ricerca intelligenza artificiale di Azure.
  3. Creare un modello GPT4 di Azure OpenAI e connetterlo a Ricerca di intelligenza artificiale di Azure.
  4. Chattare e porre domande sui dati usando il modello OpenAI di Azure sottoposto a training dall'applicazione e dai dati nell'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 origini esterne pertinenti nel processo di generazione, ottenendo risposte più complete e informate. Per altre informazioni sulle macchine virtuali a terra , vedere Llms di base - Hub della community Microsoft.

Richieste e richiesta di progettazione

Un prompt fa riferimento a testo o informazioni specifiche che fungono da istruzione a un 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.

Prompt di esempio 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: condizioni del modello per un'attività o un processo specifico
  • Segnali: indirizzare 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 progettazione 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 sarebbe divisa in token come ham, bure mentre ger una parola breve e comune come pear sarebbe considerato 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 velocità effettiva dei modelli. Esistono limiti al numero di token che ogni modello può accettare in una singola richiesta/risposta da Azure OpenAI. Per altre informazioni, vedere Azure OpenAI in Azure AI Foundry Models quotas and limits (Quote e limiti dei modelli di Azure AI Foundry).

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 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, vedere Informazioni sugli incorporamenti in Azure OpenAI nei modelli di Azure AI Foundry.

La ricerca vettoriale fa riferimento al 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 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 la ricerca completa e i metodi di ricerca ann (nearest neighbor) approssimativi, tra cui latenza, velocità effettiva, accuratezza e costi, che dipendono tutti dai requisiti dell'applicazione.

I vettori nel motore di database SQL possono essere archiviati e sottoposti a query in modo efficiente, come descritto nelle sezioni successive, consentendo la ricerca esatta vicina 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 di intelligenza artificiale.

Azure OpenAI

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 reali in incorporamenti. I modelli sono disponibili come endpoint REST e quindi possono essere facilmente utilizzati dal motore di database SQL usando la stored procedure di sistema sp_invoke_external_rest_endpoint, disponibile a partire da SQL Server 2025 (17.x) e Istanza SQL gestita di Azure configurata con i criteri di aggiornamento Always-up-to-date.

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 usa Istanza gestita di SQL e OpenAI. È possibile consentire a uno qualsiasi dei modelli disponibili 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:

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

Per altri esempi sull'uso di SQL di Azure e OpenAI, vedere gli articoli seguenti, che si applicano anche a SQL Server e Istanza gestita di SQL di Azure:

Esempi di vettori

Il tipo di dati vettoriale dedicato consente l'archiviazione efficiente e ottimizzata dei dati vettoriali e include un set di funzioni che consentono agli sviluppatori di semplificare l'implementazione di ricerca vettoriale e di somiglianza. Il calcolo della distanza tra due vettori può essere eseguito in una riga di codice usando la nuova VECTOR_DISTANCE funzione. Per altre informazioni ed esempi, vedere Indici vettoriali e di ricerca vettoriale nel motore di database SQL.

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)

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

Per altre informazioni sull'integrazione di Ricerca intelligenza artificiale di Azure con Azure OpenAI e il motore di database SQL, vedere gli articoli seguenti, che si applicano anche a SQL Server e Istanza gestita di SQL di Azure:

Applicazioni intelligenti

Il motore di database SQL può essere usato per creare applicazioni intelligenti che includono funzionalità di intelligenza artificiale, ad esempio i consigliati 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 per l'intelligenza artificiale usando sessioni astratte come set di dati di esempio, vedere:

Annotazioni

L'integrazione di LangChain e l'integrazione semantica del kernel si basano sul tipo di dati vettoriale, disponibile a partire da SQL Server 2025 (17.x) e in Istanza gestita di SQL di Azure configurata con i criteri di aggiornamento always-up-to-date.

Integrazione di LangChain

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

Alcuni esempi sull'uso di Azure SQL con LangChain:

Esempi end-to-end:

Integrazione del kernel semantico

Il kernel semantico è un SDK open source che consente di compilare facilmente agenti che possono chiamare il codice esistente. Come SDK altamente estendibile, è possibile usare il kernel semantico con i 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.

Di seguito è riportato un esempio di facilità con cui semantic kernel 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.