Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op: SQL Server 2025 (17.x) Preview
Zoek naar vectoren die vergelijkbaar zijn met een bepaalde queryvector met behulp van een bij benadering dichtstbijzijnde buren vectorzoekingsalgoritmen. Raadpleeg vectorzoekopdrachten en vectorindexen in de SQL Database Engine voor meer informatie over hoe vectorindexering en vectorzoekopdrachten werken, en de verschillen tussen exacte en geschatte zoekopdrachten.
Previewfunctie
Deze functie is in preview en kan worden gewijzigd. Als u deze functie wilt gebruiken, moet u de configuratie van het PREVIEW_FEATURESdatabasebereik inschakelen.
Zorg ervoor dat u de huidige beperkingen bekijkt voordat u deze gebruikt.
Syntax
              
              
              Transact-SQL syntaxis-conventies
VECTOR_SEARCH(
    TABLE = object [ AS source_table_alias ]
    , COLUMN = vector_column
    , SIMILAR_TO = query_vector
    , METRIC = { 'cosine' | 'dot' | 'euclidean' }
    , TOP_N = k
) [ AS result_table_alias ]
Arguments
TABLE = object [AS source_table_alias]
Tabel waarop de zoekopdracht wordt uitgevoerd. Het moet een basistabel zijn. Weergaven, tijdelijke tabellen, zowel lokaal als globaal, worden niet ondersteund.
KOLOM = vector_column
De vectorkolom waarin de zoekopdracht wordt uitgevoerd. De kolom moet een vectorgegevenstype zijn.
SIMILAR_TO = query_vector
De vector die wordt gebruikt om te zoeken. Het moet een variabele of een kolom van vectortype zijn.
METRIC = { 'cosinus' | "dot" | "euclidean" }
De metrische afstand die wordt gebruikt om de afstand tussen de queryvector en de vectoren in de opgegeven kolom te berekenen. Een ANN-index (Bij benadering dichtstbijzijnde buur) wordt alleen gebruikt als een overeenkomende ANN-index, met dezelfde metrische waarde en in dezelfde kolom, wordt gevonden. Als er geen compatibele ANN-indexen zijn, wordt er een waarschuwing gegenereerd en wordt het KNN-algoritme (k-Nearest Neighbor) gebruikt.
TOP_N = <k>
Het maximum aantal vergelijkbare vectoren dat moet worden geretourneerd. Het moet een positief geheel getal zijn.
result_table_alias
De alias wordt gebruikt om te verwijzen naar de resultatenset.
Resultaatset retourneren
De resultatenset die door de VECTOR_SEARCH functie wordt geretourneerd, bevat:
- Alle kolommen uit de tabel die in het 
TABLEargument zijn opgegeven. - Een extra kolom met de naam 
distance, die de afstand aangeeft tussen de vector in de kolom die is opgegeven door hetCOLUMNargument en de vector die in hetSIMILAR_TOargument is opgegeven. 
De afstandskolom wordt gegenereerd door de VECTOR_SEARCH functie zelf, terwijl alle andere kolommen afkomstig zijn uit de tabel waarnaar in het TABLE argument wordt verwezen.
Als u een alias gebruikt voor de tabel in het TABLE argument, moet u dezelfde alias gebruiken om te verwijzen naar de kolommen in de SELECT instructie. U kunt de alias die is toegewezen om te VECTOR_SEARCH verwijzen naar kolommen uit de tabel die is opgegeven in TABLEniet gebruiken. Dit gedrag is gemakkelijker te begrijpen als u denkt aan de resultatenset die is gemaakt door de uitvoer van VECTOR_SEARCH en samen te voegen met de tabelgegevens.
Als de tabel die is opgegeven in het TABLE argument al een kolom met de naam distancebevat, is het gedrag vergelijkbaar met een SQL-join tussen twee tabellen die een kolomnaam delen. In dergelijke gevallen moet u tabelaliassen gebruiken om de kolomverwijzingen niet eenduidig te maken. Anders wordt er een fout gegenereerd.
Limitations
De huidige preview heeft de volgende beperkingen:
Alleen nafilter
Vectorzoekopdrachten vindt plaats voordat u een predicaat toepast. Extra predicaten worden pas toegepast nadat de meest vergelijkbare vectoren zijn geretourneerd. Het volgende voorbeeld retourneert de bovenste 10 rijen met insluitingen die het meest lijken op de queryvector @qven past vervolgens het predicaat toe dat is opgegeven in de WHERE component. Als geen van de 10 rijen die zijn gekoppeld aan de vectoren die door de vectorzoekopdracht worden geretourneerd, de accepted kolom gelijk is aan 1, is het resultaat leeg.
SELECT TOP (10) s.id,
                s.title,
                r.distance
FROM VECTOR_SEARCH(
         TABLE = dbo.sessions AS s,
         COLUMN = embedding,
         SIMILAR_TO = @qv,
         METRIC = 'cosine',
         TOP_N = 10
     ) AS r
WHERE accepted = 1
ORDER BY r.distance;
VECTOR_SEARCH kan niet worden gebruikt in weergaven
              VECTOR_SEARCH kan niet worden gebruikt in de hoofdtekst van een weergave.
Examples
Voorbeeld 1
In het volgende voorbeeld worden de 10 artikelen gevonden die het meest lijken op de Pink Floyd music style artikelen in de wikipedia_articles_embeddings tabel.
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDING(N'Pink Floyd music style' USE MODEL Ada2Embeddings);
SELECT TOP (10) s.id,
                s.title,
                r.distance
FROM VECTOR_SEARCH(
        TABLE = [dbo].[wikipedia_articles_embeddings] as t,
        COLUMN = [content_vector],
        SIMILAR_TO = @qv,
        METRIC = 'cosine',
        TOP_N = 10
    ) AS s
ORDER BY s.distance
Voorbeeld 2
Hetzelfde als voorbeeld 1, maar deze keer nemen de queryvectoren uit een andere tabel in plaats van een variabele.
CREATE TABLE #t
(
    id INT,
    q NVARCHAR (MAX),
    v VECTOR(1536)
);
INSERT INTO #t
SELECT id,
       q,
       AI_GENERATE_EMBEDDINGS(q USE MODEL Ada2Embeddings)
FROM (VALUES
        (1, N'four legged furry animal'),
        (2, N'pink floyd music style')
    ) S(id, q);
SELECT TOP (10) t.id,
                s.distance,
                t.title
FROM #t AS qv
CROSS APPLY
    VECTOR_SEARCH(
        TABLE = [dbo].[wikipedia_articles_embeddings] AS t,
        COLUMN = [content_vector],
        SIMILAR_TO = qv.v,
        METRIC = 'cosine',
        TOP_N = 10
    ) AS s
WHERE qv.id = 2
ORDER BY s.distance;
Voorbeeld 3
Een eenvoudig end-to-end-voorbeeld met behulp van CREATE VECTOR INDEX en de gerelateerde VECTOR_SEARCH functie. De insluitingen worden gesimuleerd. In een praktijkscenario worden insluitingen gegenereerd met behulp van een insluitmodel en AI_GENERATE_EMBEDDINGS, of een externe bibliotheek zoals OpenAI SDK.
In het volgende codeblok ziet u de VECTOR_SEARCH functie met gesimuleerde insluitingen:
- Hiermee schakelt u de traceringsvlag in die nodig is in de huidige preview.
 - Maak een voorbeeldtabel 
dbo.Articlesmet een kolomembeddingmet gegevenstypevector (5). - Voeg voorbeeldgegevens in met gesimuleerde insluitingsgegevens.
 - Maak een vectorindex op 
dbo.Articles.embedding. - Demonstreert de vector-overeenkomstenzoekopdracht met de 
VECTOR_SEARCHfunctie. 
-- Step 0: Enable Preview Feature
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
GO
-- Step 1: Create a sample table with a VECTOR(5) column
CREATE TABLE dbo.Articles
(
    id INT PRIMARY KEY,
    title NVARCHAR(100),
    content NVARCHAR(MAX),
    embedding VECTOR(5) -- mocked embeddings
);
GO
-- Step 2: Insert sample data
INSERT INTO Articles (id, title, content, embedding)
VALUES
(1, 'Intro to AI', 'This article introduces AI concepts.', '[0.1, 0.2, 0.3, 0.4, 0.5]'),
(2, 'Deep Learning', 'Deep learning is a subset of ML.', '[0.2, 0.1, 0.4, 0.3, 0.6]'),
(3, 'Neural Networks', 'Neural networks are powerful models.', '[0.3, 0.3, 0.2, 0.5, 0.1]'),
(4, 'Machine Learning Basics', 'ML basics for beginners.', '[0.4, 0.5, 0.1, 0.2, 0.3]'),
(5, 'Advanced AI', 'Exploring advanced AI techniques.', '[0.5, 0.4, 0.6, 0.1, 0.2]');
GO
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (METRIC = 'cosine', TYPE = 'diskann');
GO
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT TOP(3)
    t.id,
    t.title,
    t.content,
    s.distance
FROM
    VECTOR_SEARCH(
        TABLE = Articles AS t,
        COLUMN = embedding,
        SIMILAR_TO = @qv,
        METRIC = 'cosine',
        TOP_N = 3
    ) AS s
ORDER BY s.distance, t.title;