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
Buat perkiraan indeks pada kolom vektor untuk meningkatkan performa pencarian 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.
Sintaksis
CREATE VECTOR INDEX index_name
ON object ( vector_column )
[ WITH (
[ , ] METRIC = { 'cosine' | 'dot' | 'euclidean' }
[ [ , ] TYPE = 'DiskANN' ]
[ [ , ] MAXDOP = max_degree_of_parallelism ]
) ]
[ ON { filegroup_name | "default" } ]
[;]
Argumen
index_name
Nama indeks. Nama indeks harus unik dalam tabel tetapi tidak harus unik dalam database. Nama indeks harus mengikuti aturan pengidentifikasi.
benda
Tabel tempat indeks dibuat. Ini harus tabel dasar. Tampilan, tabel sementara, baik lokal maupun global, tidak didukung.
vector_column
Kolom yang akan digunakan untuk membuat indeks vektor. Ini harus berjenis vektor .
METRIK
String dengan nama metrik jarak yang akan digunakan untuk menghitung jarak antara dua vektor yang diberikan. Metrik jarak berikut didukung:
-
cosine- Jarak kosinus -
euclidean- Jarak Euclidean -
dot- (Negatif) Produk titik
TYPE
Jenis algoritma ANN yang digunakan untuk membangun indeks. Hanya DiskANN yang saat ini didukung. DiskANN adalah nilai default.
MAXDOP
Mengambil alih tingkat maksimum opsi konfigurasi paralelisme untuk operasi indeks. Untuk informasi selengkapnya, lihat konfigurasi server : tingkat paralelisme maksimum. Gunakan MAXDOP untuk membatasi tingkat paralelisme dan konsumsi sumber daya yang dihasilkan untuk operasi build indeks.
max_degree_of_parallelism dapat berupa:
1Menonaktifkan pembuatan rencana paralel.
>1
Membatasi tingkat paralelisme maksimum yang digunakan dalam operasi indeks paralel ke angka yang ditentukan atau kurang berdasarkan beban kerja sistem saat ini.
0(standar)Menggunakan tingkat paralelisme yang ditentukan di tingkat grup server, database, atau beban kerja, kecuali dikurangi berdasarkan beban kerja sistem saat ini.
Untuk informasi selengkapnya, lihat Mengonfigurasi operasi indeks paralel.
Nota
Operasi indeks paralel tidak tersedia di setiap edisi SQL Server. Untuk daftar fitur yang didukung oleh edisi SQL Server, lihat Edisi dan fitur yang didukung SQL Server 2022 atau Edisi dan fitur yang didukung SQL Server 2025.
Keterbatasan
Pratinjau saat ini memiliki batasan berikut:
Indeks vektor tidak dapat dipartisi. Tidak ada dukungan partisi.
Tabel harus memiliki satu kolom, bilangan bulat, indeks berkluster kunci utama.
Indeks vektor tidak direplikasi ke pelanggan.
Tabel dengan indeks vektor menjadi baca saja. Tidak ada modifikasi data yang diizinkan saat indeks vektor ada di tabel.
Di Azure SQL Database dan database SQL di Microsoft Fabric, Anda dapat mengatur
ALLOW_STALE_VECTOR_INDEXdatabase keON, yang memungkinkan tabel dapat ditulis lagi.Nota
ALLOW_STALE_VECTOR_INDEXOpsi konfigurasi cakupan database saat ini tidak tersedia di SQL Server 2025 (17.x).Indeks vektor tidak diperbarui saat data baru disisipkan atau diperbarui dalam tabel. Untuk menyegarkan indeks vektor, Anda harus menghapus dan membuatnya kembali.
Masalah yang diketahui
Untuk informasi selengkapnya, tinjau Masalah yang diketahui.
Hak akses
Pengguna harus memiliki ALTER izin pada tabel.
Contoh
Detail database yang digunakan dalam sampel dapat ditemukan di sini: Unduh dan impor Artikel Wikipedia dengan Penyematan Vektor.
Contoh mengasumsikan keberadaan tabel bernama wikipedia_articles dengan kolom title_vector jenis vector yang menyimpan penyematan judul artikel Wikipedia.
title_vector diasumsikan sebagai penyematan yang dihasilkan dengan model penyematan seperti text-embedding-ada-002 atau text-embedding-3-small, yang mengembalikan vektor dengan 1.536 dimensi.
Untuk contoh lainnya, termasuk solusi end-to-end, buka repositori GitHub Sampel Pencarian Vektor Azure SQL Database.
Contoh 1
Contoh berikut membuat indeks vektor pada title_vector kolom menggunakan cosine metrik.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Contoh 2
Contoh berikut membuat indeks vektor pada title_vector kolom menggunakan metrik produk (negatif), dot membatasi paralelisme ke 8 dan menyimpan vektor dalam SECONDARY grup file.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
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 membuat penyematan tiruan dengan langkah-langkah berikut:
- 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_SEARCH()fungsi .
-- 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
);
-- 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]');
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (metric = 'cosine', type = 'diskann');
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT
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;