Vectorgegevenstypen en vectorzoekopdrachten implementeren

Voltooid

SQL Server 2025 bevat systeemeigen ondersteuning voor vectorgegevenstypen en vectorzoekopdrachten. Met deze functie kunt u high-dimensionale vector-insluitingen naast uw relationele gegevens opslaan en overeenkomsten doorzoeken, zodat u toepassingen kunt bouwen die inzicht hebben in semantische relaties binnen uw gegevens.

Vectorzoekopdrachten hebben betrekking op beperkingen in traditionele databasequery's. Traditionele databases excelleren bij exacte overeenkomsten en gestructureerde query's, maar ze hebben moeite met het begrijpen van context en betekenis. Vectorzoekopdrachten veranderen dit door semantisch begrip mogelijk te maken: de mogelijkheid om conceptueel vergelijkbare items te vinden, zelfs wanneer ze geen exacte trefwoorden delen. Een zoekopdracht naar "comfortabele loopschoenen" kan bijvoorbeeld producten vinden die worden beschreven als 'gekussend sportschoenen' omdat hun vector insluitingen vergelijkbare semantische betekenis hebben.

Voor ontwikkelaars betekent dit dat u intelligente toepassingen kunt bouwen zonder afzonderlijke vectordatabases of complexe gegevenssynchronisatieprocessen te beheren. Door uw vectoren naast uw relationele gegevens in SQL Server te houden, behoudt u ACID-naleving, gebruikt u bestaand beveiligingsbeleid, gebruikt u vertrouwde T-SQL-syntaxis en vereenvoudigt u uw architectuur. Deze integratie is van toepassing op scenario's zoals:

  • Semantische zoekopdrachten en aanbevelingen: Relevante producten, documenten of inhoud zoeken op basis van betekenis in plaats van alleen trefwoorden
  • Vraag-antwoordsystemen: Power-chatbots en virtuele assistenten die inzicht hebben in query's in natuurlijke taal over uw bedrijfsgegevens
  • Anomaliedetectie: Ongebruikelijke patronen identificeren door gegevenspunten te vinden die semantisch ver van normaal gedrag zijn
  • Inhoudsontdubbeling: Vergelijkbare of dubbele items detecteren, zelfs wanneer ze anders worden geformuleerd
  • Personalisatie-engines: Gebruikersvoorkeuren aanpassen aan producten of inhoud op basis van genuanceerde overeenkomsten

Het gegevenstype vector verkennen

Het vectorgegevenstype in SQL Server 2025 is ontworpen om matrices van drijvendekommagetallen efficiënt op te slaan. Vectoren worden vaak gebruikt om insluitingen weer te geven die worden gegenereerd door AI-modellen, waarbij elke dimensie specifieke functies of semantische kenmerken van de gegevens vastlegt.

Belangrijke kenmerken verkennen

  • Geoptimaliseerde opslagindeling: Vectoren worden intern opgeslagen in een geoptimaliseerde binaire indeling, maar worden weergegeven als JSON-matrices voor gebruiksgemak en compatibiliteit.
  • Flexibele precisie: Elk element in de vector kan worden opgeslagen met enkele precisie (4 byte) of halfprecisie (2-byte) drijvende-komma getallen, zodat u de nauwkeurigheid en opslagefficiëntie kunt balanceren.
  • Dimensieondersteuning: SQL Server 2025 ondersteunt vectoren met maximaal 1998 dimensies voor enkelvoudige precisie en 3996 dimensies voor halve precisie, die een breed scala aan insluitingsmodellen mogelijk maakt.

Vectoren maken en opslaan

U kunt vectoren maken door JSON-matrices naar het vector gegevenstype te casten. Hier is een voorbeeld:

-- Create a vector from a JSON array
DECLARE @v1 VECTOR(3) = '[1.0, -0.2, 30]';
DECLARE @v2 VECTOR(3) = JSON_ARRAY(1.0, -0.2, 30);

SELECT @v1 AS v1, @v2 AS v2;

Deze code demonstreert twee manieren om een driedimensionale vector te maken: door een letterlijke JSON-tekenreeks rechtstreeks te casten of door de JSON_ARRAY functie te gebruiken. Beide methoden produceren hetzelfde resultaat, waarbij de waarden [1.0, -0.2, 30] worden opgeslagen in een vectorgegevenstype.

Vectoren opslaan in een tabel:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name NVARCHAR(100),
    description NVARCHAR(MAX),
    embedding VECTOR(1536)  -- Common dimension for OpenAI embeddings
);

Met deze code maakt u een tabel voor het opslaan van productgegevens, samen met een 1536-dimensionale vector insluiting. De dimensiegrootte van 1536 wordt vaak gebruikt met openAI-modellen voor het insluiten van tekst, zodat deze tabel klaar is voor het opslaan van insluitingen die zijn gegenereerd op basis van productbeschrijvingen.

Vectoren converteren naar JSON

U kunt vectoren eenvoudig weer converteren naar JSON-matrices voor weergave of verwerking:

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT 
    CAST(@v AS NVARCHAR(MAX)) AS string_representation,
    CAST(@v AS JSON) AS json_representation;

Met deze code wordt een vector weer geconverteerd naar leesbare indelingen. CAST tot NVARCHAR(MAX) retourneert de vector als een tekenreeks, terwijl CAST tot JSON deze als een JSON-array retourneert, wat handig is voor interoperabiliteit met toepassingen en API's.

Exact dichtstbijzijnde buren zoeken (k-NN)

De exacte dichtstbijzijnde buur (k-NN)-zoekopdracht omvat het berekenen van de afstand tussen een queryvector en alle vectoren in uw gegevensset, en retourneert vervolgens de k dichtstbijzijnde overeenkomsten. Deze methode garandeert nauwkeurige resultaten, maar kan rekenintensief zijn voor grote gegevenssets.

VECTOR_DISTANCE De functie gebruiken

De VECTOR_DISTANCE functie meet de overeenkomst tussen twee vectoren met behulp van een opgegeven afstandsmetriek:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'Pink Floyd music style' 
    USE MODEL Ada2Embeddings
);

SELECT TOP (10) 
    product_id, 
    product_name,
    VECTOR_DISTANCE('cosine', @query_vector, embedding) AS distance
FROM products
ORDER BY distance;

Deze query genereert een insluiting voor de tekst 'Pink Floyd music style' met behulp van het Ada2Embeddings-model en zoekt vervolgens de 10 producten met insluitingen die het meest lijken op de query. De VECTOR_DISTANCE functie berekent de cosinusafstand tussen de queryvector en het insluiten van elk product, met kleinere afstanden die een grotere gelijkenis aangeven.

Metrische gegevens voor afstand kiezen

SQL Server 2025 ondersteunt verschillende metrische gegevens over afstand:

  • Cosinus-gelijkenis: Meet de hoek tussen vectoren, ideaal voor tekst insluitingen
  • Euclidische afstand: Meet rechte lijnafstand in vectorruimte
  • Dot-product: Nuttig voor genormaliseerde vectoren

Exacte zoekopdracht wordt aanbevolen wanneer:

  • U hebt minder dan 50.000 vectoren om te zoeken
  • De query prediceert het filteren van de gegevensset op een beheersbare grootte
  • U hebt perfect geheugen (100% nauwkeurigheid) nodig
  • De extra rekenkosten zijn acceptabel

Bij benadering dichtstbijzijnde buren zoeken (ANN) implementeren

Voor grotere gegevenssets biedt het zoeken naar dichtstbijzijnde buren (ANN) een balans tussen snelheid en nauwkeurigheid. SQL Server 2025 implementeert ANN met behulp van het DiskANN-algoritme, waarmee een grafiekgebaseerde index wordt gemaakt voor efficiënte vectornavigatie.

Begrijp geheugenoproep

Recall bepaalt het aandeel werkelijke dichtstbijzijnde buren dat een ANN-algoritme identificeert ten opzichte van exact zoeken. Een terugroep van 1,0 (100%) betekent dat de zoekopdracht bij benadering dezelfde resultaten retourneert als exacte zoekopdrachten. In de praktijk zorgen Recall-waarden boven 0,95 vaak voor uitstekende resultaten voor AI-toepassingen terwijl ze aanzienlijke prestatieverbeteringen bieden.

Vectorindexen maken

Als u ANN-zoekopdrachten wilt inschakelen, maakt u een vectorindex op de vectorkolom:

CREATE VECTOR INDEX idx_product_embedding 
ON products(embedding);

Met deze code maakt u een vectorindex op de insluitkolom met behulp van het DiskANN-algoritme. De index verbetert de prestaties van bij benadering dichtstbijzijnde buren zoekopdrachten op grote gegevenssets door een grafiekstructuur te maken voor efficiënte vectornavigatie.

Vectorindexen in SQL Server 2025:

  • Het DiskANN-algoritme gebruiken voor efficiënt zoeken op basis van grafieken
  • Ondersteuning voor beperkte geheugen- en CPU-resources
  • I/O van schijf, geheugengebruik en queryprestaties verdelen
  • Automatisch bijwerken wanneer gegevens worden gewijzigd

VECTOR_SEARCH De functie gebruiken

De VECTOR_SEARCH functie voert bij benadering dichtstbijzijnde buren zoekopdrachten uit:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'Pink Floyd music style' 
    USE MODEL Ada2Embeddings
);

SELECT 
    t.product_id,
    t.product_name,
    s.distance
FROM
    VECTOR_SEARCH(
        TABLE = products AS t, 
        COLUMN = embedding, 
        SIMILAR_TO = @query_vector, 
        METRIC = 'cosine', 
        TOP_N = 10
    ) AS s
ORDER BY s.distance;

Deze query voert een dichtstbijzijnde buurzoekopdracht uit met behulp van de vectorindex die u eerder hebt gemaakt. De VECTOR_SEARCH functie maakt gebruik van het DiskANN-algoritme om de 10 meest vergelijkbare producten te vinden zonder alle vectoren te scannen, waardoor prestatieverbeteringen worden geboden voor grote gegevenssets, terwijl hoge nauwkeurigheid behouden blijft.

Prestatievoordelen overwegen

ANN-zoekaanbiedingen:

  • Snellere uitvoering van query's: Met name voor gegevenssets met miljoenen vectoren
  • Lager resourceverbruik: Verminderd CPU- en geheugengebruik vergeleken met exacte zoekopdrachten
  • Schaalbaarheid: Verwerkt grootschalige vectorgegevenssets efficiënt
  • Hoge recall: Haalt doorgaans recall-rates boven de 95%, wat kwaliteitsresultaten verzekert

Hybride zoekscenario's bouwen

SQL Server 2025 ondersteunt het combineren van vectorzoekopdrachten met traditionele SQL-bewerkingen voor hybride zoekscenario's.

U kunt semantische zoekopdrachten uitvoeren met behulp van vectoren terwijl u ook traditionele filters toepast:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'comfortable running shoes' 
    USE MODEL Ada2Embeddings
);

SELECT 
    t.product_id,
    t.product_name,
    t.category,
    t.price,
    s.distance
FROM
    VECTOR_SEARCH(
        TABLE = products AS t, 
        COLUMN = embedding, 
        SIMILAR_TO = @query_vector, 
        METRIC = 'cosine', 
        TOP_N = 20
    ) AS s
WHERE 
    t.category = 'Footwear'
    AND t.price BETWEEN 50 AND 150
ORDER BY s.distance;

Deze hybride zoekopdracht combineert semantische overeenkomsten met traditionele SQL-filters. Eerst vindt het de 20 meest semantisch vergelijkbare producten als "comfortabele loopschoenen" en filtert deze resultaten om alleen schoenenitems op te nemen die tussen 50 USD en 150 USD zijn geprijsd. Deze benadering maakt nauwkeurige targeting mogelijk terwijl u semantisch begrip gebruikt.

Combineer zoeken in volledige tekst met vectorzoekopdrachten voor uitgebreide resultaten:

DECLARE @query_vector VECTOR(1536) = AI_GENERATE_EMBEDDINGS(
    N'sustainable materials' 
    USE MODEL Ada2Embeddings
);

SELECT 
    t.product_id,
    t.product_name,
    s.distance,
    fts.RANK AS text_rank
FROM
    VECTOR_SEARCH(
        TABLE = products AS t, 
        COLUMN = embedding, 
        SIMILAR_TO = @query_vector, 
        METRIC = 'cosine', 
        TOP_N = 50
    ) AS s
INNER JOIN CONTAINSTABLE(products, description, 'sustainable OR eco-friendly') AS fts
    ON t.product_id = fts.[KEY]
ORDER BY (s.distance * 0.6) + ((1.0 - fts.RANK/1000.0) * 0.4);

Deze query combineert vectorzoekopdrachten met zoeken in volledige tekst. Het vindt producten semantisch vergelijkbaar met "duurzame materialen" met behulp van vector embeddings, en voegt vervolgens samen met volledige tekst zoekresultaten voor trefwoorden "duurzaam" of "milieuvriendelijk" in de beschrijving. De uiteindelijke rangschikking combineert beide scores met een gewogen formule (60% semantische gelijkenis, 40% trefwoordovereenkomst).

Aanbevolen procedures toepassen

Bij het implementeren van vectorzoekopdrachten in SQL Server 2025:

  • Kies de juiste precisie: Halve precisie gebruiken voor grotere dimensies wanneer opslag een probleem is
  • Index strategisch: Vectorindexen maken voor kolommen die vaak worden doorzocht
  • Recall bewaken: Test uw ANN-query's om acceptabele recall-prestaties voor uw use-case te garanderen
  • Query's optimaliseren: Gebruik de juiste filters om de zoekruimte te verminderen vóór vectorbewerkingen
  • Batchbewerkingen: Embeddings genereren en invoegen in batches voor betere prestaties

Met behulp van deze vectormogelijkheden kunt u ai-toepassingen bouwen die inzicht hebben in semantische relaties, intelligente aanbevelingen bieden en zoekervaringen in natuurlijke taal leveren, allemaal binnen het vertrouwde SQL Server-platform.