Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2025 (17.x)
Database SQL Azure SQL database
di Microsoft Fabric
Cari vektor yang mirip dengan vektor kueri tertentu menggunakan perkiraan algoritma pencarian vektor tetangga terdekat. Untuk mempelajari selengkapnya tentang cara kerja pengindeksan vektor dan pencarian vektor, dan perbedaan antara pencarian yang tepat dan perkiraan, lihat Indeks pencarian vektor dan vektor di Mesin Database SQL.
Database Azure SQL dan database SQL di Fabric
Fitur ini dalam pratinjau. Pastikan untuk memeriksa batasan saat ini sebelum menggunakannya.
Nota
Sebagai fitur pratinjau, teknologi yang tersaji dalam artikel ini tunduk pada Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Fitur Pratinjau SQL Server 2025
Di SQL Server 2025, fungsi ini dalam pratinjau dan dapat berubah. Untuk menggunakan fitur ini, Anda harus mengaktifkan PREVIEW_FEATURESkonfigurasi cakupan database.
Pastikan untuk memeriksa batasan saat ini sebelum menggunakannya.
Syntax
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
TABEL = objek [AS source_table_alias]
Tabel tempat melakukan pencarian. Ini harus tabel dasar. Tampilan, tabel sementara, baik lokal maupun global, tidak didukung.
KOLOM = vector_column
Kolom vektor tempat pencarian dilakukan. Kolom harus berupa jenis data vektor .
SIMILAR_TO = query_vector
Vektor yang digunakan untuk pencarian. Ini harus berupa variabel atau kolom jenis vektor .
METRIK = { 'kosinus' | 'titik' | 'euclidean' }
Metrik jarak yang digunakan untuk menghitung jarak antara vektor kueri dan vektor di kolom yang ditentukan. Indeks ANN (Perkiraan Tetangga Terdekat) digunakan hanya jika indeks ANN yang cocok, dengan metrik yang sama dan pada kolom yang sama, ditemukan. Jika tidak ada indeks ANN yang kompatibel, peringatan akan dinaikkan dan algoritma KNN (k-Nearest Neighbor) digunakan.
TOP_N = <k>
Jumlah maksimum vektor serupa yang harus dikembalikan. Ini harus bilangan bulat positif.
result_table_alias
Alias digunakan untuk mereferensikan kumpulan hasil.
Mengembalikan tataan hasil
Tataan hasil yang VECTOR_SEARCH dikembalikan oleh fungsi meliputi:
Semua kolom dari tabel yang ditentukan dalam
TABLEargumen.Kolom tambahan bernama
distance, yang mewakili jarak antara vektor dalam kolom yang ditentukan olehCOLUMNargumen dan vektor yang disediakan dalamSIMILAR_TOargumen.
Kolom jarak dihasilkan oleh fungsi itu VECTOR_SEARCH sendiri, sementara semua kolom lain berasal dari tabel yang dirujuk dalam TABLE argumen.
Jika Anda menggunakan alias untuk tabel dalam TABLE argumen, Anda harus menggunakan alias yang sama untuk mereferensikan kolomnya dalam SELECT pernyataan. Anda tidak dapat menggunakan alias yang ditetapkan ke untuk VECTOR_SEARCH mereferensikan kolom dari tabel yang ditentukan dalam TABLE. Perilaku ini lebih mudah dipahami jika Anda memikirkan kumpulan hasil yang dibangun dengan mengambil output VECTOR_SEARCH dan menggabungkannya dengan data tabel.
Jika tabel yang ditentukan dalam TABLE argumen sudah berisi kolom bernama distance, perilakunya akan mirip dengan gabungan SQL di antara dua tabel yang berbagi nama kolom. Dalam kasus seperti itu, Anda harus menggunakan alias tabel untuk membedakan referensi kolom—jika tidak, kesalahan akan muncul.
Limitations
Pratinjau saat ini memiliki batasan berikut:
Hanya pasca-filter
Pencarian vektor terjadi sebelum menerapkan predikat apa pun. Predikat tambahan diterapkan hanya setelah vektor yang paling mirip dikembalikan. Sampel berikut mengembalikan 10 baris teratas dengan penyematan yang paling mirip dengan vektor @qvkueri , lalu menerapkan predikat yang ditentukan dalam WHERE klausul. Jika tidak ada dari 10 baris yang terkait dengan vektor yang dikembalikan oleh pencarian vektor yang memiliki accepted kolom sama dengan 1, hasilnya kosong.
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 tidak dapat digunakan dalam tampilan
VECTOR_SEARCH tidak dapat digunakan dalam isi tampilan.
Examples
Contoh 1
Contoh berikut menemukan 10 artikel paling mirip dengan Pink Floyd music style dalam 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
Contoh 2
Sama seperti contoh 1, tetapi kali ini vektor kueri mengambil dari tabel lain alih-alih variabel.
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;
Contoh 3
Contoh end-to-end dasar menggunakan CREATE VECTOR INDEX dan fungsi terkait VECTOR_SEARCH . Penyematan dititipkan. Dalam skenario dunia nyata, penyematan dihasilkan menggunakan model penyematan dan AI_GENERATE_EMBEDDINGS, atau pustaka eksternal seperti OpenAI SDK.
Blok kode berikut menunjukkan VECTOR_SEARCH fungsi dengan penyematan tiruan:
- Mengaktifkan bendera pelacakan, yang diperlukan dalam pratinjau saat ini.
- Buat tabel
dbo.Articlessampel dengan kolomembeddingdengan vektor tipe data(5). - Sisipkan data sampel dengan data penyematan tiruan.
- Buat indeks vektor pada
dbo.Articles.embedding. - Menunjukkan pencarian kesamaan vektor dengan
VECTOR_SEARCHfungsi .
-- 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;