Insluitingen genereren en onderhouden voor SQL-databaseworkloads
Nadat u hebt ontworpen hoe insluitingen uw gegevens vertegenwoordigen, moet u ze genereren en gesynchroniseerd houden als gegevens worden gewijzigd.
SQL Server biedt ingebouwde AI-functies voor het genereren van insluitingen van tekst die is opgeslagen in databasekolommen. Het genereren van insluitingen is doorgaans geen eenmalige bewerking. Wanneer brongegevens worden gewijzigd, moeten insluitingen mogelijk opnieuw worden gegenereerd, zodat ze de huidige status van de gegevens blijven weerspiegelen.
Insluitingen genereren met SQL
SQL Server biedt de functie voor het AI_GENERATE_EMBEDDINGS genereren van insluitingen rechtstreeks vanuit tekst die is opgeslagen in databasekolommen. Deze functie maakt gebruik van een extern model om tekst te converteren naar een vector die later kan worden opgeslagen en later kan worden vergeleken.
Een veelvoorkomend patroon is het genereren van insluitingen tijdens een initiële belasting of als onderdeel van een batchproces. De resulterende vectoren worden samen met de brongegevens of in een gerelateerde tabel opgeslagen, zodat ze efficiënt kunnen worden opgevraagd.
In het volgende voorbeeld ziet u een eenvoudig end-to-end-patroon, van het definiëren van een tabel tot het genereren van embeddings.
Maak eerst een tabel waarin zowel de brontekst als de insluiting worden opgeslagen.
CREATE TABLE dbo.documents
(
id INT PRIMARY KEY,
description NVARCHAR(MAX),
embedding VECTOR(1536)
);
Genereer vervolgens insluitingen op basis van de tekst en sla deze op in de tabel.
UPDATE dbo.documents
SET embedding = AI_GENERATE_EMBEDDINGS(description USE MODEL my_embedding_model);
In dit voorbeeld wordt de waarde van elke rij description naar het insluitmodel verzonden. De functie retourneert een vector, die is opgeslagen in de embedding kolom. Deze opgeslagen vectoren kunnen later worden opgevraagd of vergeleken zonder ze opnieuw te genereren. Mogelijk wilt u extra logica opnemen voor het verwerken van segmentering of het filteren op basis van uw embed design implementatie.
De embedding generatie bepaalt hoe vectoren worden gecreëerd. Onderhoudsstrategieën bepalen wanneer deze vectoren moeten worden vernieuwd.
Begrijp het onderhoud van embedding
Onderhoud voor embeddings houdt opgeslagen embeddings afgestemd op veranderingen in de onderliggende gegevens. Wanneer tekstwaarden worden ingevoegd, bijgewerkt of verwijderd, worden de bijbehorende insluitingen mogelijk niet meer weergegeven voor de huidige inhoud.
Verschillende onderhoudsmethoden kunnen worden gebruikt, afhankelijk van hoe vaak gegevens worden gewijzigd, hoe snel insluitingen moeten worden bijgewerkt en waar het genereren van insluitingen wordt uitgevoerd.
Een embed-onderhoudsmethode kiezen
Insluitingen moeten afgestemd blijven op de brontekst wanneer gegevens worden gewijzigd. Er kunnen verschillende opties worden gebruikt om wijzigingen te detecteren en te bepalen wanneer insluitingen opnieuw moeten worden gegenereerd. Deze opties verschillen in waar het werk plaatsvindt en hoe snel wijzigingen worden doorgevoerd.
Tabel-triggers
Triggers worden automatisch uitgevoerd wanneer rijen worden ingevoegd of bijgewerkt. Voor het onderhoud van embeddings kan een trigger rijen markeren die nieuwe embeddings nodig hebben of onmiddellijk regeneratie initiëren. Deze benadering weerspiegelt snel wijzigingen, maar voegt werk toe aan schrijfbewerkingen.Wijzigingen Bijhouden
Bijhouden van wijzigingen registreert dat een rij sinds een bepaald tijdstip is gewijzigd. Een achtergrondproces kan deze informatie gebruiken om te bepalen welke rijen hun embeddings moeten vernieuwen en deze in batches te verwerken. Deze benadering zorgt voor een balans tussen latentie en prestaties.Gegevensopname wijzigen (CDC)
CDC registreert gedetailleerde informatie over gegevenswijzigingen, inclusief voor- en nawaarden. Embedding-onderhoud kan CDC-tabellen gebruiken om te bepalen welke tekstwaarden zijn veranderd en de insluitingen asynchroon opnieuw te genereren. Deze benadering is geschikt voor workloads met een hoog volume.Azure Functions met SQL-trigger koppeling
Azure Functions kan reageren op databasewijzigingen met behulp van SQL-triggerbindingen. Met deze functie kan het genereren van inhoud buiten de database-engine worden uitgevoerd terwijl er nog steeds wordt gereageerd op wijzigingen in de gegevens. Deze methode verplaatst werk vanuit de database en kan onafhankelijk worden geschaald.Azure Logic-apps
Logic Apps kan het insluiten van updates organiseren als onderdeel van een werkstroom. Een Logic App kan bijvoorbeeld op regelmatige basis controleren op gewijzigde rijen en een embedding service aanroepen, waarbij updates met andere systemen worden gecoördineerd. Deze benadering is weinig code en kan goed worden geïntegreerd met andere Azure-services.Gebeurtenisstreaming wijzigen
Wijzigingsevenementstreaming (CES) voert DML-wijzigingen direct uit naar Azure Event Hubs in bijna realtime. Downstreamsystemen kunnen deze gebeurtenissen gebruiken en insluitingen opnieuw genereren wanneer er wijzigingen optreden zonder werk toe te voegen aan databasetransacties. Met deze methode wordt het genereren van inbeddingen van de database losgekoppeld en kan het door meerdere consumenten verwerkt worden die dezelfde wijzigingsstroom verwerken.Microsoft Foundry
Microsoft Foundry kan worden gebruikt voor het beheren en evalueren van de modellen die insluitingen genereren. In een onderhoudswerkstroom ondersteunt Foundry doorgaans modelselectie of hosting terwijl een ander proces wijzigingendetectie en database-updates verwerkt. Deze benadering centraliseert het beheer van modellen, terwijl embedding gegenereerd wordt als reactie op gegevenswijzigingen.
Een geschikte onderhoudsbenadering kiezen
Er is geen enkele juiste manier om insluitingen te onderhouden. De juiste benadering is afhankelijk van factoren zoals gegevensvolume, updatefrequentie, latentie vereisten en waar het genereren van embeddings binnen de algehele oplossing past.
Sommige oplossingen zijn gunstig voor onmiddellijke updates, terwijl andere prioriteit geven aan batchverwerking of externe verwerking. Als u deze afwegingen begrijpt, kunt u een onderhoudsstrategie kiezen die past bij uw SQL-toepassing.
Belangrijke punten
Het genereren van insluitingen met AI_GENERATE_EMBEDDINGS is alleen de eerste stap. Naarmate brongegevens veranderen, kunnen opgeslagen vectoren niet synchroon zijn, zodat u een onderhoudsstrategie nodig hebt. Opties variëren van triggers en Change Tracking voor nauw gekoppelde updates tot Change Data Capture, Change Event Streaming en Azure Functions voor asynchrone of losgekoppelde benaderingen. De juiste keuze is afhankelijk van uw gegevensvolume, latentievereisten en waar de embedding-generatie binnen uw algehele architectuur past.