Share via


Vector en insluitingen: Veelgestelde vragen (FAQ)

Van toepassing op: SQL Server 2025 (17.x) AzureSQL Database Azure SQL Managed InstanceSQL-databasein Microsoft Fabric

Dit artikel bevat veelgestelde vragen over vectoren en insluitingen in de SQL Database Engine.

Opmerking

Vectorfuncties zijn beschikbaar in Azure SQL Managed Instance dat is geconfigureerd met het beleid Always-up-to-date .

Hoe kan ik het embedden up-to-date houden?

Werk insluitingen bij telkens wanneer de onderliggende gegevens die ze vertegenwoordigen, worden gewijzigd. Dit is met name belangrijk voor scenario's waarin de gegevens dynamisch zijn, zoals door de gebruiker gegenereerde inhoud of regelmatig bijgewerkte databases. Zie Database en AI voor meer informatie over verschillende strategieën om insluitingen up-to-date te houden : oplossingen voor het bijwerken van insluitingen.

De overhead voor vectorzoekopdrachten omvat voornamelijk de opslag van het vectorgegevenstype en de rekenbronnen die nodig zijn voor het indexeren en zoeken. Het gegevenstype vector is ontworpen om efficiënt te zijn in termen van opslag, maar de exacte overhead kan variëren op basis van de grootte - het aantal dimensies - van de vectoren die zijn opgeslagen.

Voor meer informatie over het kiezen van de juiste vectorgrootte raadpleegt u Insluitingsmodellen en dimensies: de verhouding tussen het gebruik van prestaties en resources optimaliseren.

Een SQL Server-gegevenspagina kan maximaal 8.060 bytes bevatten, zodat de grootte van de vector van invloed is op het aantal vectoren dat op één pagina kan worden opgeslagen. Als u bijvoorbeeld een vector hebt met 1.024 dimensies en elke dimensie een enkele precisie float is (4 bytes), is de totale grootte van de vector 4.104 bytes (4096 bytes voor de payload + 8 bytes voor de header). Dit beperkt het aantal vectoren dat op één pagina kan passen.

Welk insluitingsmodel moet ik gebruiken en wanneer?

Er zijn veel insluitingsmodellen beschikbaar en de keuze welke moet worden gebruikt, is afhankelijk van de specifieke use-case en het type gegevens dat wordt verwerkt. Sommige modellen ondersteunen meerdere talen, terwijl andere multimodale gegevens (tekst, afbeeldingen, enzovoort) ondersteunen. Sommige zijn alleen online beschikbaar, andere kunnen lokaal worden uitgevoerd.

Houd naast het model zelf rekening met de grootte van het model en het aantal dimensies dat het produceert. Grotere modellen bieden mogelijk betere nauwkeurigheid, maar vereisen meer rekenresources en opslagruimte, maar in veel gevallen met meer dimensies verandert de kwaliteit niet echt, voor veelvoorkomende gebruiksvoorbeelden.

Zie Modellen en dimensies insluiten voor meer informatie over het kiezen van het juiste insluitingsmodel: de verhouding tussen het gebruik van prestaties en resources optimaliseren.

Wanneer bepaalt u of u enkelvoudige precisie (4-byte) of halve precisie (2-byte) drijvendekommawaarden wilt gebruiken voor vectoren?

Bij het opslaan van embedded vectors in een database komt de keuze tussen single-precision (float32) en halve precisie (float16) floats vaak neer op een balans tussen opslagefficiëntie en numerieke betrouwbaarheid.

Gelukkig zijn insluitingen doorgaans niet zeer gevoelig voor kleine wijzigingen in precisie.

Insluitingen zijn compacte vectorweergaven die worden gebruikt in taken zoals semantische zoekopdrachten, aanbevelingssystemen en verwerking van natuurlijke taal. Deze vectoren zijn vaak de uitvoer van neurale netwerken, die inherent tolerant zijn voor kleine numerieke variaties. Als gevolg hiervan heeft het verminderen van precisie van float32 tot float16 meestal minimale invloed op de kwaliteit van vergelijkingstaken of opvolgende taken, met name tijdens inferentie.

Het gebruik float16 kan de opslag en het geheugengebruik aanzienlijk verminderen, wat met name nuttig is bij het werken met grootschalige insluitgegevenssets.

Hoe zit het met sparse vectoren?

Op dit moment is het vectorgegevenstype in de SQL Database Engine ontworpen voor compacte vectoren, die matrices van drijvendekommagetallen zijn waarbij de meeste elementen niet nul zijn. Sparse vectoren, die een aanzienlijk aantal nulelementen bevatten, worden niet systeemeigen ondersteund.

De prestaties kunnen sterk variëren op basis van de specifieke use case, de grootte van de gegevensset en de complexiteit van de query's. De vectorzoekmogelijkheden van SQL Server zijn echter ontworpen om efficiënt en schaalbaar te zijn, waarbij gebruik wordt gemaakt van indexeringstechnieken om de zoekprestaties te optimaliseren.

Wat gebeurt er als ik meer dan één kolom heb die ik wil gebruiken voor het genereren van insluitingen?

Als u meerdere kolommen hebt die u wilt gebruiken voor het genereren van insluitingen, hebt u twee hoofdopties:

  • Maak één insluiting voor elke kolom of
  • Voeg de waarden van meerdere kolommen samen in één tekenreeks en genereer vervolgens één insluiting voor die samengevoegde tekenreeks.

Zie Efficiënt en elegant modelleren van embeddings voor meer informatie over de twee opties en de bijbehorende overwegingen voor databaseontwerp.

Hoe zit het met opnieuw rangschikking?

Herclassificatie is een techniek die wordt gebruikt om de relevantie van zoekresultaten te verbeteren door de eerste resultaten opnieuw te evalueren op basis van aanvullende criteria of modellen. In de SQL Database Engine kunt u herclassificatie implementeren door vectorzoekopdrachten te combineren met volledige tekst (die BM25-classificatie biedt) of extra SQL-query's of machine learning-modellen om de resultaten te verfijnen op basis van specifieke bedrijfslogica of gebruikersvoorkeuren.

Zie De zoekmogelijkheden verbeteren met hybride zoekopdrachten en RRF opnieuw rangschikken voor meer informatie.

Wanneer gebruikt u AI Search (nu AI Foundry) versus SQL voor zoekscenario's voor vectoren?

AI Search (nu AI Foundry) is een gespecialiseerde service die is ontworpen voor geavanceerde zoekscenario's, waaronder vectorzoekopdrachten, verwerking van natuurlijke taal en AI-gestuurde inzichten. Het biedt een uitgebreide set functies voor het bouwen van intelligente zoektoepassingen, zoals ingebouwde ondersteuning voor verschillende AI-modellen, geavanceerde classificatiealgoritmen en integratie met andere AI-services.

De SQL Database Engine biedt de mogelijkheid om elk soort gegevens op te slaan en elk soort query uit te voeren: gestructureerd en ongestructureerd, en om vectorzoekopdrachten uit te voeren op die gegevens. Het is een goede keuze voor scenario's waarbij u al deze gegevens samen moet doorzoeken en u geen afzonderlijke service wilt gebruiken om te zoeken die uw architectuur ingewikkeld maakt. De SQL Database Engine biedt essentiële bedrijfsbeveiligingsfuncties om ervoor te zorgen dat gegevens altijd worden beveiligd, zoals beveiliging op rijniveau (RLS), dynamische gegevensmaskering (DDM), Always Encrypted, onveranderbare grootboektabellen en TDE (Transparent Data Encryption).

Hier volgt een voorbeeld van één query die kan worden uitgevoerd in Azure SQL of SQL Server waarin vector-, georuimtelijke, gestructureerde en ongestructureerde gegevens in één keer worden gecombineerd. De voorbeeldquery haalt de top 50 meest relevante restaurants op op basis van de beschrijving van het restaurant, de locatie van het restaurant en de voorkeuren van de gebruiker, met behulp van vectorzoekopdrachten voor de beschrijving en georuimtelijke zoekopdracht naar de locatie, filteren ook op sternummers, aantal beoordelingen, categorie, enzovoort:

DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);

SELECT TOP (50) b.id AS business_id,
                b.name AS business_name,
                r.id AS review_id,
                r.stars,
                r.review,
                VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
                @p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
     INNER JOIN dbo.reviews_embeddings AS re
         ON r.id = re.review_id
     INNER JOIN dbo.business AS b
         ON r.business_id = b.id
WHERE b.city = 'Redmond'
      AND @p.STDistance(b.geo_location) < 5000 -- 5 km
      AND r.stars >= 4
      AND b.reviews >= 30
      AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
      AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;

In het vorige voorbeeld wordt de ENN-zoekopdracht (Exact Nearest Neighbor) gebruikt om de meest relevante beoordelingen te vinden op basis van de semantische afstand van de insluitingen, terwijl ook wordt gefilterd op georuimtelijke afstand en andere zakelijke kenmerken. Deze query demonstreert de kracht van het combineren van vectorzoekopdrachten met traditionele SQL-mogelijkheden om een rijke en efficiënte zoekervaring te creëren.

Als u bij benadering dichtstbijzijnde buren (ANN) wilt zoeken, kunt u een vectorindex in de reviews_embeddings tabel maken en de functie gebruiken om de VECTOR_SEARCH zoekopdracht uit te voeren.

Bekijk het in eigen tempo uitgevoerde Azure SQL Cryptozoology AI Embeddings lab.