Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Az adott lekérdezésvektorokhoz hasonló vektorok keresése a legközelebbi szomszéd vektorkeresési algoritmus használatával. Ha többet szeretne megtudni a vektorindexelés és a vektorkeresés működéséről, valamint a pontos és közelítő keresés közötti különbségekről, tekintse meg a vektorkeresést és a vektorindexeket az SQL Database Engine-ben.
Azure SQL Database és SQL Database a Fabricben
A funkció előzetesben van. Használat előtt ellenőrizze az aktuális korlátozásokat .
Megjegyzés:
Előzetes verziójú funkcióként a cikkben bemutatott technológia a Microsoft Azure előzetes verziójának kiegészítő használati feltételeire vonatkozik.
SQL Server 2025 Preview funkció
Az SQL Server 2025-ben ez a funkció előnézetben van, és változhat. A funkció használatához engedélyeznie kell az PREVIEW_FEATURESadatbázis hatókörébe tartozó konfigurációt.
Használat előtt ellenőrizze az aktuális korlátozásokat .
Syntax
Transact-SQL szintaxis konvenciók
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 = objektum [AS source_table_alias]
Tábla, amelyen a keresést végrehajtja. Alaptáblának kell lennie. A nézetek, a helyi és a globális ideiglenes táblák nem támogatottak.
OSZLOP = vector_column
Az a vektoroszlop, amelyben a keresés történik. Az oszlopnak vektor adattípusnak kell lennie.
SIMILAR_TO = query_vector
A kereséshez használt vektor. Változónak vagy vektor típusú oszlopnak kell lennie.
METRIC = { 'cosine' | "pont" | "euklideszi" }
A lekérdezésvektor és a megadott oszlop vektorai közötti távolság kiszámításához használt távolságmetrika. Ann (közelítő legközelebbi szomszéd) indexet csak akkor használ a rendszer, ha egy egyező ANN-index található ugyanahhoz a metrikához és ugyanazon az oszlophoz. Ha nincsenek kompatibilis ANN-indexek, a rendszer figyelmeztetést ad, és a KNN (k-Legközelebbi szomszéd) algoritmust használja.
TOP_N = <k>
A visszaadandó hasonló vektorok maximális száma. Pozitív egész számnak kell lennie.
result_table_alias
Az alias az eredményhalmazra hivatkozik.
Eredményhalmaz visszaadása
A függvény által visszaadott eredményhalmaz a VECTOR_SEARCH következőket tartalmazza:
Az argumentumban megadott tábla összes oszlopa
TABLE.Egy további oszlop neve
distance, amely az argumentum általCOLUMNmegadott oszlopban lévő vektor és az argumentumbanSIMILAR_TOmegadott vektor közötti távolságot jelöli.
A távolság oszlopot maga a VECTOR_SEARCH függvény hozza létre, míg az összes többi oszlop az argumentumban TABLE hivatkozott táblából származik.
Ha az argumentumban egy aliast használ a TABLE táblához, ugyanazt az aliast kell használnia az utasítás oszlopaira SELECT való hivatkozáshoz. A megadott VECTOR_SEARCHtáblából származó oszlopok hivatkozásához TABLE rendelt alias nem használható. Ez a viselkedés könnyebben érthető, ha úgy gondolja, hogy az eredményhalmaz a táblaadatokkal VECTOR_SEARCH való összevonásával jön létre.
Ha az TABLE argumentumban megadott tábla már tartalmaz egy elnevezett distanceoszlopot, a viselkedés hasonló lesz az oszlopnévvel rendelkező két tábla közötti SQL-illesztéshez. Ilyen esetekben tábla aliasokat kell használnia az oszlophivatkozások egyértelműsítéséhez – ellenkező esetben hiba lép fel.
Limitations
Az aktuális előzetes verzióra az alábbi korlátozások vonatkoznak:
Csak utószűrés
A vektorkeresés a predikátum alkalmazása előtt történik. A további predikátumok csak a leginkább hasonló vektorok visszaadása után lesznek alkalmazva. Az alábbi minta a lekérdezésvektorhoz @qvleginkább hasonló beágyazásokat tartalmazó első 10 sort adja vissza, majd alkalmazza a WHERE záradékban megadott predikátumot. Ha a vektorkeresés által visszaadott vektorokhoz társított 10 sor egyike sem rendelkezik accepted 1 oszlopmal, az eredmény üres.
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 nem használható nézetekben
VECTOR_SEARCH nem használható a nézet törzsében.
Examples
1. példa
Az alábbi példa a táblázatban szereplő Pink Floyd music style 10 leginkább hasonló cikket wikipedia_articles_embeddings találja meg.
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
2. példa
Ugyanaz, mint az 1. példában, de ezúttal a lekérdezésvektorok változó helyett egy másik táblából származnak.
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;
3. példa
Egy alapszintű, végpontok közötti példa a használatával CREATE VECTOR INDEX és a kapcsolódó VECTOR_SEARCH függvénnyel. A beágyazások ki vannak gúnyolva. Valós forgatókönyv esetén a beágyazások beágyazási modell és AI_GENERATE_EMBEDDINGS, vagy külső kódtár, például OpenAI SDK használatával jönnek létre.
Az alábbi kódblokk a VECTOR_SEARCH modellbeágyazással rendelkező függvényt mutatja be:
- Engedélyezi a nyomkövetési jelzőt, amely az aktuális előzetes verzióban szükséges.
- Hozzon létre egy mintatáblát
dbo.Articlesegyembeddingrendelkező oszlopmal. - Mintaadatok beszúrása a makettbe ágyazott adatokkal.
- Vektorindex létrehozása a oldalon
dbo.Articles.embedding - A vektoros hasonlóság keresésének bemutatása a
VECTOR_SEARCHfüggvénnyel.
-- 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;