Dela via


Intelligenta program och AI

Gäller för: SQL Server 2025 (17.x) Förhandsversion Azure SQL DatabaseAzure SQL Managed InstanceFörhandsversion av SQL-databas för Microsoft Fabric

Den här artikeln innehåller en översikt över hur du använder AI-alternativ (artificiell intelligens), till exempel OpenAI och vektorer, för att skapa intelligenta program med SQL Database Engine i SQL Server och Azure SQL Managed Instance.

För Azure SQL Database läser du Azure SQL Database.

Exempel och exempel finns på lagringsplatsen SQL AI-exempel.

Översikt

Med stora språkmodeller (LLM) kan utvecklare skapa AI-baserade program med en välbekant användarupplevelse.

Användning av LLM:er i program ger större värde och en förbättrad användarupplevelse när modellerna kan komma åt rätt data, vid rätt tidpunkt, från programmets databas. Den här processen kallas RAG (Retrieval Augmented Generation) och SQL Database Engine har många funktioner som stöder det nya mönstret, vilket gör den till en bra databas för att skapa intelligenta program.

Följande länkar innehåller exempelkod för olika alternativ för att skapa intelligenta program:

AI-alternativ Description
Azure OpenAI Generera inbäddningar för RAG och integrera med alla modeller som stöds av Azure OpenAI.
Vektorer Lär dig hur du lagrar vektorer och använder vektorfunktioner i databasen.
Azure AI Search- Använd databasen tillsammans med Azure AI Search för att träna LLM på dina data.
Intelligenta program Lär dig hur du skapar en lösning från slutpunkt till slutpunkt med hjälp av ett vanligt mönster som kan replikeras i alla scenarier.

Viktiga begrepp för att implementera RAG med Azure OpenAI

Det här avsnittet innehåller viktiga begrepp som är viktiga för att implementera RAG med Azure OpenAI i SQL Database Engine.

Återvinningsförstärkt generering (RAG)

RAG är en teknik som förbättrar LLM:s förmåga att producera relevanta och informativa svar genom att hämta ytterligare data från externa källor. RAG kan till exempel köra frågor mot artiklar eller dokument som innehåller domänspecifik kunskap om användarens fråga eller fråga. LLM kan sedan använda dessa hämtade data som referens när den genererar sitt svar. Ett enkelt RAG-mönster med SQL Database Engine kan till exempel vara:

  1. Infoga data i en tabell.
  2. Länka din instans till Azure AI Search.
  3. Skapa en Azure OpenAI GPT4-modell och anslut den till Azure AI Search.
  4. Chatta och ställ frågor om dina data med hjälp av den tränade Azure OpenAI-modellen från ditt program och från data i din instans.

RAG-mönstret, med snabb teknik, tjänar syftet att förbättra svarskvaliteten genom att erbjuda mer kontextuell information till modellen. RAG gör det möjligt för modellen att tillämpa en bredare kunskapsbas genom att införliva relevanta externa källor i genereringsprocessen, vilket resulterar i mer omfattande och välgrundade svar. Mer information om grundande LLM:er finns i Grounding LLMs – Microsoft Community Hub.

Uppmaningar och prompt-anpassning

En uppmaning refererar till specifik text eller information som fungerar som en instruktion till en LLM, eller som kontextuella data som LLM kan bygga vidare på. En fråga kan ha olika former, till exempel en fråga, en instruktion eller till och med ett kodfragment.

Exempeluppmaningar som kan användas för att generera ett svar från en LLM:

  • Instruktioner: tillhandahålla direktiv till LLM
  • Primärt innehåll: ger information till LLM för bearbetning
  • Exempel: hjälp med att villkora modellen för en viss uppgift eller process
  • Tips: dirigera LLM:s utdata i rätt riktning
  • Stödinnehåll: representerar kompletterande information som LLM kan använda för att generera utdata

Processen att skapa bra frågor för ett scenario kallas prompt engineering. Mer information om frågor och metodtips för snabbteknik finns i Azure OpenAI Service.

Tokener

Token är små textsegment som genereras genom att dela upp indatatexten i mindre segment. Dessa segment kan antingen vara ord eller grupper av tecken, som varierar i längd från ett enda tecken till ett helt ord. Ordet hamburger skulle till exempel delas in i token som ham, buroch ger även om ett kort och vanligt ord som skulle betraktas som pear en enda token.

I Azure OpenAI omvandlas indatatext som tillhandahålls till API:et till token (tokeniserad). Antalet token som bearbetas i varje API-begäran beror på faktorer som längden på parametrarna för indata, utdata och begäran. Mängden token som bearbetas påverkar även modellernas svarstid och dataflöde. Det finns gränser för hur många token varje modell kan ta i en enda begäran/svar från Azure OpenAI. Mer information finns i kvoter och gränser för Azure OpenAI-tjänsten.

Vectors

Vektorer är ordnade matriser med tal (vanligtvis flyttal) som kan representera information om vissa data. En bild kan till exempel representeras som en vektor med pixelvärden, eller så kan en textsträng representeras som en vektor med ASCII-värden. Processen för att omvandla data till en vektor kallas vektorisering. Mer information finns i Vektorexempel.

Det är enklare att arbeta med vektordata med introduktionen av vektordatatypen och vektorfunktionerna.

Inbäddningar

Inbäddningar är vektorer som representerar viktiga datafunktioner. Inbäddningar lärs ofta med hjälp av en djupinlärningsmodell, och maskininlärnings- och AI-modeller använder dem som funktioner. Inbäddningar kan också fånga semantisk likhet mellan liknande begrepp. När vi till exempel genererar en inbäddning för orden person och humanförväntar vi oss att deras inbäddningar (vektorrepresentation) är liknande i värde eftersom orden också är semantiskt lika.

Azure OpenAI har modeller för att skapa inbäddningar från textdata. Tjänsten delar upp texten i tokener och genererar inbäddningar med hjälp av modeller som förtränade av OpenAI. Mer information finns i Skapa inbäddningar med Azure OpenAI.

Vektorsökning syftar på processen att hitta alla vektorer i en datauppsättning som semantiskt liknar en specifik frågevektor. Därför söker en frågevektor för ordet human i hela ordlistan efter semantiskt liknande ord och bör hitta ordet person som en nära matchning. Den här närheten, eller avståndet, mäts med hjälp av ett likhetsmått, till exempel cosininelikhet. Ju närmare vektorer är i likhet, desto mindre är avståndet mellan dem.

Tänk dig ett scenario där du kör en fråga över miljontals dokument för att hitta de mest liknande dokumenten i dina data. Du kan skapa inbäddningar för dina data och köra frågor mot dokument med hjälp av Azure OpenAI. Sedan kan du utföra en vektorsökning för att hitta de mest liknande dokumenten från datauppsättningen. Att utföra en vektorsökning i några exempel är dock trivialt. Det blir svårt att utföra samma sökning över tusentals eller miljoner datapunkter. Det finns också kompromisser mellan omfattande sökning och ungefärliga sökmetoder för närmaste granne (ANN), inklusive svarstid, dataflöde, noggrannhet och kostnad, som alla beror på kraven för ditt program.

Vektorer i SQL Database Engine kan lagras och frågas effektivt, enligt beskrivningen i nästa avsnitt, vilket möjliggör exakt närmaste grannsökning med bra prestanda. Du behöver inte bestämma mellan noggrannhet och hastighet: du kan ha båda. Lagring av vektorbäddningar tillsammans med data i en integrerad lösning minimerar behovet av att hantera datasynkronisering och påskyndar din tid till marknad för UTVECKLING av AI-program.

Azure OpenAI

Inbäddning är processen för att representera den verkliga världen som data. Text, bilder eller ljud kan konverteras till inbäddningar. Azure OpenAI-modeller kan omvandla verklig information till inbäddningar. Modellerna är tillgängliga som REST-slutpunkter och kan därför enkelt användas från SQL Database Engine med hjälp av den sp_invoke_external_rest_endpoint systemlagrade proceduren, som är tillgänglig från och med SQL Server 2025 (17.x) Preview och Azure SQL Managed Instance som konfigurerats med principen Always-up-to-date update.

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;

DECLARE @e VECTOR(1536) = JSON_QUERY(@response, '$.result.data[0].embedding');

Att använda ett anrop till en REST-tjänst för att hämta inbäddningar är bara ett av de integreringsalternativ som du har när du arbetar med SQL Managed Instance och OpenAI. Du kan låta någon av de tillgängliga modellerna komma åt data som lagras i SQL Database Engine för att skapa lösningar där användarna kan interagera med data, till exempel följande exempel:

Skärmbild av en AI-robot som svarar på frågan med hjälp av data som lagras i SQL Server.

Ytterligare exempel på hur du använder Azure SQL och OpenAI finns i följande artiklar, som även gäller för SQL Server och Azure SQL Managed Instance:

Vektorexempel

Den dedikerade vektordatatypen möjliggör effektiv och optimerad lagring av vektordata och levereras med en uppsättning funktioner som hjälper utvecklare att effektivisera implementeringen av vektor- och likhetssökningar. Du kan beräkna avståndet mellan två vektorer i en kodrad med hjälp av den nya VECTOR_DISTANCE funktionen. Mer information och exempel finns i Vektorsökning och vektorindex i SQL Database Engine.

Till exempel:

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)

Implementera RAG-mönster med SQL Database Engine och Azure AI Search. Du kan köra chattmodeller som stöds på data som lagras i SQL Database Engine utan att behöva träna eller finjustera modeller tack vare integreringen av Azure AI Search med Azure OpenAI och SQL Database Engine. Genom att köra modeller på dina data kan du chatta ovanpå och analysera dina data med större noggrannhet och hastighet.

Mer information om integrering av Azure AI Search med Azure OpenAI och SQL Database Engine finns i följande artiklar, som även gäller för SQL Server och Azure SQL Managed Instance:

Intelligenta program

SQL Database Engine kan användas för att skapa intelligenta program som innehåller AI-funktioner, till exempel rekommenderare, och RAG (Retrieval Augmented Generation) som följande diagram visar:

Diagram över olika AI-funktioner för att skapa intelligenta program med Azure SQL Database.

Ett exempel från slutpunkt till slutpunkt för att skapa ett AI-aktiverat program med sessionssammandrag som en exempeldatauppsättning finns i:

Anmärkning

LangChain-integrering och semantisk kernelintegrering förlitar sig på vektordatatypen, som är tillgänglig från och med SQL Server 2025 (17.x) Preview och i Azure SQL Managed Instance som konfigurerats med uppdateringsprincipen Always-up-to-date.

LangChain-integrering

LangChain är ett välkänt ramverk för att utveckla program som drivs av språkmodeller. Exempel som visar hur LangChain kan användas för att skapa en chattrobot på dina egna data finns i:

Några exempel på hur du använder Azure SQL med LangChain:

Exempel från slutpunkt till slutpunkt:

Semantisk kernelintegrering

Semantisk kernel är en SDK med öppen källkod som gör att du enkelt kan skapa agenter som kan anropa din befintliga kod. Som en mycket utökningsbar SDK kan du använda semantisk kernel med modeller från OpenAI, Azure OpenAI, Hugging Face med mera. Genom att kombinera din befintliga C#-, Python- och Java-kod med dessa modeller kan du skapa agenter som svarar på frågor och automatiserar processer.

Ett exempel på hur enkelt semantisk kernel hjälper till att skapa AI-aktiverade lösningar är här:

  • Den ultimata chattroboten?: Skapa en chattrobot på dina egna data med både NL2SQL- och RAG-mönster för den ultimata användarupplevelsen.