Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Wyszukaj wektory podobne do danych wektorów zapytań przy użyciu przybliżonego algorytmu wyszukiwania wektorów najbliższych sąsiadów. Aby dowiedzieć się więcej o tym, jak działa indeksowanie wektorów i wyszukiwanie wektorów oraz różnice między dokładnym i przybliżonym wyszukiwaniem, zapoznaj się z indeksami wyszukiwania wektorowego i wektorów w a aparatu bazy danych SQL.
Usługa Azure SQL Database i baza danych SQL w Fabric
Funkcja jest dostępna w wersji podglądowej. Przed rozpoczęciem korzystania z niego zapoznaj się z bieżącymi ograniczeniami .
Uwaga / Notatka
Jako funkcja w wersji zapoznawczej technologia przedstawiona w tym artykule podlega dodatkowym warunkom użytkowania dla wersji zapoznawczych platformy Microsoft Azure.
Funkcja podglądowa SQL Server 2025
W SQL Server 2025 funkcja ta jest w podglądzie i może ulec zmianie. Aby móc korzystać z tej funkcji, należy włączyć konfigurację PREVIEW_FEATURESw zakresie bazy danych.
Przed rozpoczęciem korzystania z niego zapoznaj się z bieżącymi ograniczeniami .
Syntax
Transact-SQL konwencje składni
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
TABELA = obiekt [JAK source_table_alias]
Tabela, na której jest wykonywane wyszukiwanie. Musi to być tabela podstawowa. Widoki, tabele tymczasowe, zarówno lokalne, jak i globalne, nie są obsługiwane.
KOLUMNA = vector_column
Kolumna wektorowa, w której jest wykonywane wyszukiwanie. Kolumna musi być typem danych wektorowych .
SIMILAR_TO = query_vector
Wektor używany do wyszukiwania. Musi to być zmienna lub kolumna typu wektora .
METRIC = { 'cosine' | 'dot' | "euclidean" }
Metryka odległości używana do obliczania odległości między wektorem zapytania a wektorami w określonej kolumnie. Indeks ANN (Przybliżony najbliższy sąsiad) jest używany tylko wtedy, gdy zostanie znaleziony pasujący indeks ANN z tą samą metryką i w tej samej kolumnie. Jeśli nie ma żadnych zgodnych indeksów ANN, zostanie zgłoszone ostrzeżenie i zostanie użyty algorytm KNN (k najbliższego sąsiada).
TOP_N = <k>
Maksymalna liczba podobnych wektorów, które muszą być zwracane. Musi to być dodatnia liczba całkowita.
result_table_alias
Alias jest używany do odwołowania się do zestawu wyników.
Zwracanie zestawu wyników
Zestaw wyników zwracany przez VECTOR_SEARCH funkcję obejmuje:
Wszystkie kolumny z tabeli określonej w argumencie
TABLE.Dodatkowa kolumna o nazwie
distance, która reprezentuje odległość między wektorem w kolumnie określonej przezCOLUMNargument i wektor podany w argumencieSIMILAR_TO.
Kolumna odległości jest generowana przez VECTOR_SEARCH samą funkcję, podczas gdy wszystkie inne kolumny pochodzą z tabeli, do których TABLE odwołuje się argument .
Jeśli używasz aliasu dla tabeli w argumencie TABLE , musisz użyć tego samego aliasu, aby odwołać się do jego kolumn w instrukcji SELECT . Nie można użyć aliasu przypisanego do do odwołań do VECTOR_SEARCH kolumn z tabeli określonej w pliku TABLE. To zachowanie jest łatwiejsze do zrozumienia, jeśli myślisz o zestawie wyników utworzonym przez pobranie danych wyjściowych VECTOR_SEARCH i scalenie go z danymi tabeli.
Jeśli tabela określona w TABLE argumencie zawiera już kolumnę o nazwie distance, zachowanie będzie podobne do sprzężenia SQL między dwiema tabelami, które współużytkują nazwę kolumny. W takich przypadkach należy użyć aliasów tabeli, aby uściślić odwołania do kolumn — w przeciwnym razie zostanie zgłoszony błąd.
Limitations
Bieżąca wersja zapoznawcza ma następujące ograniczenia:
Tylko po filtrze
Wyszukiwanie wektorowe odbywa się przed zastosowaniem dowolnego predykatu. Dodatkowe predykaty są stosowane tylko po zwracaniu najbardziej podobnych wektorów. Poniższy przykład zwraca 10 pierwszych wierszy z osadzanymi najbardziej podobnymi do wektora @qvzapytania , a następnie stosuje predykat określony w klauzuli WHERE . Jeśli żadna z 10 wierszy skojarzonych z wektorami zwróconymi przez wyszukiwanie wektorowe ma kolumnę accepted równą 1, wynik jest pusty.
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 nie można używać w widokach
VECTOR_SEARCH Nie można jej używać w treści widoku.
Examples
Przykład 1
W poniższym przykładzie znaleziono 10 najbardziej podobnych artykułów do Pink Floyd music style tabeli wikipedia_articles_embeddings .
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
Przykład 2
Tak samo jak w przykładzie 1, ale tym razem wektory zapytań pochodzą z innej tabeli zamiast zmiennej.
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')
) AS 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;
Przykład 3
Podstawowy przykład kompleksowego użycia CREATE VECTOR INDEX i powiązanej VECTOR_SEARCH funkcji. Osadzanie są wyśmiewane. W rzeczywistym scenariuszu osadzanie jest generowane przy użyciu modelu osadzania i AI_GENERATE_EMBEDDINGS lub zewnętrznej biblioteki, takiej jak zestaw OpenAI SDK.
Poniższy blok kodu demonstruje VECTOR_SEARCH funkcję z pozornymi osadzaniami:
- Włącza flagę śledzenia niezbędną w bieżącej wersji zapoznawczej.
- Utwórz przykładową tabelę
dbo.Articlesz kolumnąembeddingz wektorem typu danych (5). - Wstaw przykładowe dane z pozorowanym osadzaniem danych.
- Utwórz indeks wektora w pliku
dbo.Articles.embedding. - Demonstruj wyszukiwanie podobieństwa wektorów za pomocą
VECTOR_SEARCHfunkcji .
-- 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;