Dela via


Intelligenta applikationer

gäller för:Azure SQL DatabaseSQL-databas i 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 Azure SQL Database och Fabric SQL Database, som delar många av dessa funktioner i Azure SQL Database.

För prover och exempel, besök arkivet SQL AI Samples.

Titta på den här videon i Azure SQL Database Essentials-serien för en kort översikt över hur du skapar ett AI-redo program:

Överblick

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 Azure SQL Database och Fabric SQL Database har många funktioner som stöder det här nya mönstret, vilket gör det 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 Beskrivning
Azure OpenAI Generera inbäddningar för RAG och integrera med alla modeller som stöds av Azure OpenAI.
Vectors Lär dig hur du lagrar och frågar efter vektorer i databasen.
Azure AI Search- Använd databasen tillsammans med Azure AI Search för att träna LLM på dina data.
Intelligenta applikationer 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.
Copilot-kunskaper i Azure SQL Database Lär dig mer om uppsättningen AI-assisterade upplevelser som utformats för att effektivisera design, drift, optimering och hälsa för Azure SQL Database-drivna program.
Copilot-färdigheter i SQL-databas Lär dig mer om de AI-assisterade funktionerna som är designade för att effektivisera design, drift, optimering och prestanda hos Fabric SQL-databasdrivna applikationer.

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 Azure SQL Database eller Fabric SQL Database.

Hämtning av utökad generation (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 fråga artiklar eller dokument som innehåller domänspecifik kunskap relaterad till användarens fråga eller uppmaning. LLM kan sedan använda dessa hämtade data som referens när den genererar sitt svar. Ett enkelt RAG-mönster med Azure SQL Database kan till exempel vara:

  1. Infoga data i en tabell.
  2. Länka Azure SQL Database 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 Azure SQL Database.

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. För mer information om grunderna för LLM:er, se Grounding LLMs – Microsoft Community Hub.

Prompter och promptteknik

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 till en viss uppgift eller process
  • Cues: styra LLM:s utdata i rätt riktning
  • Stödinnehåll: representerar kompletterande information som LLM kan använda för att generera utdata

Processen för att skapa bra frågor för ett scenario kallas prompt engineering. För mer information om anvisningar och bästa praxis för promptutveckling, se Azure OpenAI Service.

Tokenar

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 medan ett kort och vanligt ord som pear skulle betraktas som 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 begränsningar för Azure OpenAI-tjänsten.

Vektorer

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 eller ASCII-värden. Processen för att omvandla data till en vektor kallas vektorisering. Mer information finns i Vectors.

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 tokens och genererar representationer med hjälp av modeller som har tränats av OpenAI i förväg. 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 Azure SQL Database kan lagras och frågas effektivt, enligt beskrivningen i nästa avsnitt, vilket ger 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 Azure SQL Database med hjälp av den sp_invoke_external_rest_endpoint systemlagrade proceduren:

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'));

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 Database och OpenAI. Du kan låta någon av de tillgängliga modellerna komma åt data som lagras i Azure SQL Database 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 Azure SQL Database.

Ytterligare exempel på hur du använder SQL Database och OpenAI finns i följande artiklar:

Vektorer

Datatyp för vektor

I november 2024 introducerades den nya -vektorn datatypen i Azure SQL Database.

Den dedikerade vektortypen 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 funktionen VECTOR_DISTANCE. Mer information om vektor datatyp och relaterade funktioner finns i Översikt över vektorer 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)

Vektorer i äldre versioner av SQL Server

Även om äldre versioner av SQL Server-motorn, upp till och inklusive SQL Server 2022, inte har någon inbyggd vektor typ, är en vektor inget annat än en ordnad tupel, och relationsdatabaser är bra på att hantera tupplar. Du kan tänka på en tupel som den formella termen för en rad i en tabell.

Azure SQL Database stöder även columnstore-index och batchlägeskörning. En vektorbaserad metod används för bearbetning i batchläge, vilket innebär att varje kolumn i en batch har en egen minnesplats där den lagras som en vektor. Detta möjliggör snabbare och effektivare bearbetning av data i batchar.

I följande exempel visas hur en vektor kan lagras i SQL Database:

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

Ett exempel som använder en gemensam delmängd av Wikipedia-artiklar med inbäddningar som redan har genererats med OpenAI finns i Vector-likhetssökning med Azure SQL Database och OpenAI.

Ett annat alternativ för att använda Vector Search i Azure SQL Database är integrering med Azure AI med hjälp av de integrerade vektoriseringsfunktionerna: Vector Search med Azure SQL Database och Azure AI Search

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

Intelligenta applikationer

Azure SQL Database 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.

För ett heltäckande exempel på att bygga ett AI-aktiverat program med sessioner i abstrakt form som exempeldatauppsättning, se:

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:

Fullständiga exempel:

Semantisk kernelintegrering

Semantic 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 EN AI-aktiverad lösning ä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.

Microsoft Copilot-kunskaper i Azure SQL Database

Microsoft Copilot i Azure SQL Database (förhandsversion) är en uppsättning AI-stödda funktioner som är utformade för att effektivisera design, drift, optimering och hälsa för Azure SQL Database-drivna program.

Copilot ger relevanta svar på användarfrågor, förenklar databashanteringen genom att använda databaskontext, dokumentation, dynamiska hanteringsvyer, Query Store och andra kunskapskällor. Till exempel:

  • Databasadministratörer kan självständigt hantera databaser och lösa problem, eller lära sig mer om databasens prestanda och funktioner.
  • Utvecklare kan ställa frågor om sina data som i text eller konversation för att generera en T-SQL-fråga. Utvecklare kan också lära sig att skriva frågor snabbare genom detaljerade förklaringar av den genererade frågan.

Anmärkning

Microsoft Copilot-kunskaper i Azure SQL Database finns för närvarande i förhandsversion för ett begränsat antal tidiga användare. Om du vill registrera dig för det här programmet går du till Begär åtkomst till Copilot i Azure SQL Database: Förhandsversion.

Microsoft Copilot i Fabric SQL-databas (förhandsversion)

Copilot för SQL Database i Microsoft Fabric (förhandsversion) innehåller integrerad AI-hjälp med följande funktioner:

  • Kodkomplettering: Börja skriva T-SQL i SQL-frågeredigeraren och Copilot genererar automatiskt ett kodförslag som hjälper dig att slutföra frågan. -tangenten accepterar kodförslaget eller fortsätter skriva för att ignorera förslaget.

  • Snabbåtgärder: I menyfliksområdet i SQL-frågeredigeraren är alternativen Fix och Explain snabbåtgärder. Markera en SQL-fråga som du väljer och välj en av snabbåtgärdsknapparna för att utföra den valda åtgärden i frågan.

    • Åtgärda: Copilot kan åtgärda fel i din kod när felmeddelanden dyker upp. Felscenarier kan innehålla felaktig/ej stödd T-SQL-kod, fel stavning med mera. Copilot kommer också att ge kommentarer som förklarar ändringarna och föreslår metodtips för SQL.

    • Förklara: Copilot kan ge förklaringar på naturligt språk för SQL-frågan och databasschemat i kommentarsformat.

  • Chattfönster: Använd chattfönstret för att ställa frågor till Copilot via naturligt språk. Copilot svarar med en genererad SQL-fråga eller ett naturligt språk baserat på den fråga som ställs.

    • Naturligt språk till SQL: Generera T-SQL-kod från oformaterade textbegäranden och få förslag på frågor att ställa för att påskynda arbetsflödet.

    • Dokumentbaserad Q&A: Ställ frågor till Copilot om allmänna SQL-databasfunktioner, och det svarar på ett naturligt sätt. Copilot hjälper också till att hitta dokumentation som är relaterad till din begäran.

Copilot för SQL-databaser använder tabell- och vyernamn, kolumnnamn, primärnyckel och främmande nyckel-metadata för att generera T-SQL-kod. Copilot för SQL-databasen använder inte data i tabeller för att generera T-SQL-förslag.