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. Periksa Batasan dan pertimbangan sebelum melanjutkan.
Nota
Sebagai fitur pratinjau, teknologi yang tersaji dalam artikel ini tunduk pada Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Peringatan
Pemberitahuan penghentian: Indeks vektor yang dibuat menggunakan struktur data sebelumnya didukung dalam rilis saat ini tetapi akan dihentikan dalam versi mendatang. Untuk memastikan kompatibilitas dan akses ke kemampuan pencarian vektor terbaru di masa mendatang, migrasikan indeks vektor yang ada menggunakan langkah-langkah di bagian Migrasi dari versi indeks vektor sebelumnya .
Ketersediaan regional
Fitur ini sedang disebarkan di Azure SQL Database dan database SQL di Microsoft Fabric. Selama peluncuran, ketersediaan dan perilaku mungkin bervariasi menurut wilayah dan menurut versi indeks. Jika fitur atau sintaksis tidak tersedia, fitur tersebut akan tersedia secara otomatis saat penyebaran selesai. Untuk status ketersediaan regional saat ini, lihat Ketersediaan fitur menurut wilayah.
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.
Nota
Versi terbaru Indeks Vektor hanya tersedia di Azure SQL Database dan database SQL di Microsoft Fabric saat ini.
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.
Meningkatkan indeks vektor ke versi terbaru
Penting
Pemberitahuan penghentian: Indeks vektor yang dibuat menggunakan struktur data sebelumnya didukung dalam rilis saat ini tetapi akan dihentikan dalam versi mendatang. Untuk memastikan kompatibilitas dan akses ke kemampuan pencarian vektor terbaru di masa mendatang, migrasikan indeks vektor yang ada menggunakan langkah-langkah di bawah ini.
Indeks vektor yang baru dibuat secara otomatis menggunakan struktur data terbaru, yang menyediakan:
- Dukungan DML penuh: Menghapus batasan sebelumnya yang membuat tabel yang diindeks vektor baca-saja setelah pembuatan indeks. Anda sekarang dapat melakukan operasi INSERT, UPDATE, DELETE, dan MERGE sambil mempertahankan fungsionalitas indeks vektor dengan pemeliharaan indeks otomatis secara real time
- Pemfilteran berulang: Predikat dalam klausul WHERE diterapkan selama proses pencarian vektor, bukan setelah pengambilan
- Berbasis pengoptimal: Pengoptimal kueri secara otomatis menentukan apakah akan menggunakan indeks DiskANN atau pencarian kNN berdasarkan karakteristik kueri
- Kuantisasi tingkat lanjut: Teknik kuantisasi vektor telah diintegrasikan untuk memberikan efisiensi penyimpanan yang lebih baik dan performa kueri yang lebih cepat, dengan pengoptimalan ini transparan bagi pengguna
Untuk detail tentang batasan versi indeks vektor sebelumnya, lihat bagian Batasan dan pertimbangan.
Migrasi dari versi indeks vektor sebelumnya
Indeks vektor yang dibuat menggunakan versi sebelumnya harus dihilangkan dan dibuat ulang untuk mengaktifkan kemampuan terbaru. Bagian ini menjelaskan cara mengidentifikasi, memigrasikan, dan memverifikasi versi indeks vektor.
Langkah 1: Identifikasi indeks vektor yang ada
Gunakan kueri berikut untuk mengidentifikasi indeks vektor yang memerlukan migrasi:
SELECT
i.name AS index_name,
t.name AS table_name,
JSON_VALUE(v.build_parameters, '$.Version') AS index_version,
CASE
WHEN JSON_VALUE(v.build_parameters, '$.Version') >= '3'
THEN 'Uses latest version (no migration required)'
WHEN JSON_VALUE(v.build_parameters, '$.Version') < '3'
THEN 'Created using an earlier version (migration recommended)'
ELSE 'Unknown format'
END AS migration_status
FROM sys.vector_indexes AS v
INNER JOIN sys.indexes AS i
ON v.object_id = i.object_id
AND v.index_id = i.index_id
INNER JOIN sys.tables AS t
ON v.object_id = t.object_id
ORDER BY t.name, i.name;
Cara menafsirkan hasilnya
Menggunakan versi terbaru
- Sudah mendukung pemfilteran berulang, dukungan DML penuh, eksekusi berbasis pengoptimal, dan kuantisasi yang ditingkatkan
- Tidak diperlukan migrasi
Dibuat menggunakan versi yang lebih lama
- Menggunakan perilaku pasca-filter warisan
- Tidak mendukung kemampuan pencarian vektor terbaru
- Migrasi sangat disarankan untuk memastikan kompatibilitas di masa mendatang
Langkah 2: Jatuhkan dan buat ulang indeks vektor
Indeks vektor yang dibuat menggunakan format sebelumnya tidak dapat ditingkatkan di tempatnya. Untuk mengaktifkan kemampuan DiskANN terbaru, hilangkan dan buat ulang indeks.
Peringatan
Dampak layanan: Menghilangkan indeks vektor segera menonaktifkan perkiraan pencarian vektor pada tabel yang terpengaruh hingga indeks dibuat ulang. Merencanakan migrasi selama jendela pemeliharaan untuk sistem produksi.
Menghilangkan indeks yang ada
DROP INDEX vec_idx ON dbo.wikipedia_articles;
Membuat ulang indeks
CREATE VECTOR INDEX vec_idx
ON dbo.wikipedia_articles (title_vector)
WITH (
TYPE = 'DISKANN',
METRIC = 'COSINE'
);
Nota
Indeks vektor yang dibuat menggunakan pernyataan saat ini CREATE VECTOR INDEX secara otomatis menggunakan format DiskANN terbaru. Tidak diperlukan opsi atau bendera tambahan.
Langkah 3: Verifikasi versi indeks
Setelah rekreasi, verifikasi indeks menggunakan versi terbaru:
SELECT
i.name AS index_name,
t.name AS table_name,
JSON_VALUE(v.build_parameters, '$.Version') AS index_version
FROM sys.vector_indexes AS v
INNER JOIN sys.indexes AS i
ON v.object_id = i.object_id
AND v.index_id = i.index_id
INNER JOIN sys.tables AS t
ON v.object_id = t.object_id
WHERE i.name = 'vec_idx';
Kolom index_version harus ditampilkan 3 untuk versi terbaru.
Perilaku kesalahan dengan ketidaksesuaian versi
Jika Anda mencoba menggunakan TOP_N parameter dengan VECTOR_SEARCH indeks vektor versi terbaru, SQL Server mengembalikan kesalahan berikut:
Msg 42274, Level 16, State 1
Vector search with version 3 index does not support explicit TOP_N parameter.
Untuk mengatasi kesalahan ini, hapus TOP_N parameter dari VECTOR_SEARCH dan gunakan sintaks sebagai gantinya SELECT TOP (N) WITH APPROXIMATE . Untuk informasi mendetail, lihat Kesalahan menggunakan sintaksis warisan.
Batasan dan pertimbangan
Batasan versi indeks vektor sebelumnya
Versi indeks vektor sebelumnya memiliki batasan tambahan berikut. Untuk memeriksa versi indeks Anda, lihat Memverifikasi versi indeks.
Hanya pasca-pemfilteran: Predikat diterapkan hanya setelah pengambilan vektor, bukan selama proses pencarian. Ini dapat mengakibatkan lebih sedikit baris yang dikembalikan dari yang diharapkan saat filter diterapkan.
Tabel baca-saja: Tabel dengan indeks vektor bersifat baca-saja. Tidak ada operasi DML (INSERT, UPDATE, DELETE, MERGE) yang diizinkan setelah indeks vektor dibuat.
ALLOW_STALE_VECTOR_INDEXGunakan konfigurasi cakupan database untuk mengaktifkan operasi DML jika Anda dapat mentolerir hasil pencarian kedaluarsa.Penyetelan TOP_N manual: Anda harus menyesuaikan
TOP_NparameterVECTOR_SEARCHsecara manual untuk mengimbangi pasca-pemfilteran, sering kali memerlukan nilai yang terlalu besar untuk mendapatkan jumlah hasil yang diinginkan.
Batasan saat ini (berlaku untuk versi terbaru juga)
Pratinjau saat ini memiliki batasan berikut:
Indeks vektor tidak dapat dipartisi. Tidak ada dukungan partisi.
Tabel harus memiliki indeks berkluster kunci utama.
Indeks vektor tidak direplikasi ke pelanggan.
Tabel dengan indeks vektor tidak dapat dipotong menggunakan
TRUNCATE TABLE. Untuk menghapus semua data, jatuhkan indeks vektor terlebih dahulu, potong tabel, repopulasi dengan setidaknya 100 baris, lalu buat ulang indeks. Untuk informasi selengkapnya, lihat Pembatasan TABEL POTONG.Indeks vektor tidak dapat disebarkan dengan DacPac atau BACPAC. Indeks vektor memerlukan setidaknya 100 baris dengan vektor non-NULL pada waktu pembuatan. Saat Anda mengimpor database menggunakan DacPac, BACPAC, atau layanan Import/Export, proses impor membuat objek skema (termasuk indeks vektor) sebelum memuat data, yang menyebabkan impor gagal.
Solusi sementara: Hilangkan indeks vektor sebelum mengekspor database, dan buat ulang indeks setelah impor.
Persyaratan data minimum
Indeks vektor memerlukan jumlah baris minimum dengan nilai vektor non-NULL sebelum indeks dapat dibuat.
- Jumlah baris minimum: Setidaknya 100 baris dengan nilai vektor non-NULL harus ada dalam tabel.
- Perilaku kesalahan: Mencoba membuat indeks vektor pada tabel dengan kurang dari 100 baris gagal dengan kesalahan Msg 42266.
Contoh kesalahan:
Msg 42266, Level 16, State 1
Cannot create a vector index. The table contains only 8 rows with non-null vectors,
but at least 100 are required for vector index creation.
Praktik terbaik: Isi tabel dengan setidaknya 100 baris sebelum membuat indeks vektor. Untuk skenario pengembangan dan pengujian di mana lebih sedikit baris yang diperlukan, VECTOR_SEARCH bekerja tanpa indeks menggunakan pendekatan pemindaian brute-force, meskipun performa menurun dengan himpunan data yang lebih besar.
Dukungan DML
Setelah indeks vektor DiskANN dibuat menggunakan versi terbaru, tabel tidak lagi bersifat baca-saja. Anda dapat dengan bebas memodifikasi data menggunakan operasi bahasa manipulasi data standar (DML), dan perubahan secara otomatis tercermin dalam hasil pencarian vektor.
Kemampuan ini membuat pencarian vektor cocok untuk beban kerja langsung dan transaksi di mana data berubah dari waktu ke waktu.
Catatan perilaku
- Operasi DML tidak memerlukan penghapusan atau pembangunan kembali indeks vektor.
- Perubahan terlihat oleh kueri pencarian vektor setelah transaksi diterapkan.
- Untuk penggantian data skala besar (misalnya, menghapus sebagian besar baris dan menyisipkan sekumpulan penyematan yang sama sekali baru), pertimbangkan untuk menghilangkan dan membuat ulang indeks vektor setelah pemuatan data untuk memastikan kualitas pencarian yang optimal.
Nota
Dukungan DML hanya tersedia dengan indeks vektor yang dibuat menggunakan versi terbaru. Versi sebelumnya mengharuskan tabel bersifat baca-saja atau menggunakan ALLOW_STALE_VECTOR_INDEX konfigurasi cakupan database.
Memantau pemeliharaan indeks vektor
Indeks vektor melakukan pemeliharaan latar belakang untuk menggabungkan perubahan DML. Gunakan tampilan manajemen dinamis sys.dm_db_vector_indexes untuk memantau status tugas kesehatan dan pemeliharaan indeks.
Menggabungkan indeks vektor dengan indeks tradisional
Indeks vektor bekerja bersama indeks pohon B tradisional untuk memberikan performa kueri yang optimal. Saat menggunakan pemfilteran berulang dengan VECTOR_SEARCH, pertimbangkan untuk membuat indeks tradisional pada kolom yang digunakan dalam predikat filter.
Untuk informasi terperinci tentang perilaku pemfilteran berulang dan perbedaannya dengan versi sebelumnya, lihat Perilaku pemfilteran berulang.
Petunjuk / Saran
Pengoptimal kueri secara otomatis memilih strategi eksekusi terbaik (perkiraan indeks tetangga terdekat vs. pencarian kNN). Untuk memaksa penggunaan perkiraan indeks tetangga terdekat, gunakan FORCE_ANN_ONLY petunjuk tabel. Untuk informasi selengkapnya, lihat Petunjuk tabel untuk pencarian vektor.
Contoh skenario:
-- Create vector index for similarity search
CREATE VECTOR INDEX idx_embeddings_vector
ON product_embeddings(embedding)
WITH (METRIC = 'cosine');
-- Create traditional index for filter columns
CREATE NONCLUSTERED INDEX idx_embeddings_filters
ON product_embeddings(category);
Manfaat performa:
Saat menjalankan kueri dengan pemfilteran berulang, pengoptimal kueri SQL Server menggunakan kedua jenis indeks:
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDINGS(N'wireless headphones' USE MODEL EmbeddingModel);
SELECT TOP (10) WITH APPROXIMATE
p.name,
p.price,
vs.distance
FROM products p
INNER JOIN VECTOR_SEARCH(
TABLE = product_embeddings AS e,
COLUMN = embedding,
SIMILAR_TO = @qv,
METRIC = 'cosine'
) AS vs ON p.id = e.product_id
WHERE e.approved = 1
AND e.category = 'Electronics' -- Can use traditional index
ORDER BY vs.distance;
Dalam kueri ini:
- Indeks vektor mengidentifikasi penyematan serupa berdasarkan vektor kueri
-
Indeks tradisional pada
(category)filter kandidat secara efisien selama proses pencarian berulang
Strategi komposit ini dapat meningkatkan performa kueri secara signifikan dibandingkan dengan hanya menggunakan indeks vektor, terutama ketika predikat filter memiliki selektivitas tinggi.
Panduan kualitas dan pemeliharaan data untuk indeks vektor
Hindari himpunan data dengan penyematan duplikat tinggi
Pengindeksan vektor berfungsi paling baik saat penyematan mewakili beragam konten semantik. Himpunan data dengan proporsi vektor duplikat yang tinggi tidak disarankan untuk pengindeksan vektor.
Duplikasi tinggi dapat menyebabkan:
- Kualitas hasil yang buruk: Vektor duplikat muncul berulang kali dalam hasil, memadati kecocokan semantik yang lebih relevan.
- Pengurangan efektivitas: Penyematan duplikat menggantikan tetangga yang lebih baik, menurunkan kegunaan pencarian kesamaan.
- Penggunaan sumber daya yang tidak perlu: Indeks vektor mahal untuk membangun dan memelihara, dan duplikat menambahkan biaya tanpa menambahkan nilai.
Praktik terbaik: Menyematkan penyematan Deduplikasi sebelum membuat indeks vektor untuk meningkatkan performa dan kualitas hasil.
Skenario penggantian data skala besar
Indeks vektor mendukung penyisipan, pembaruan, dan penghapusan. Namun, ketika sebagian besar atau semua penyematan diganti—misalnya, menyematkan ulang himpunan data dengan model baru—indeks yang ada mungkin tidak lagi mencerminkan distribusi data baru.
Dalam skenario penggantian skala besar:
- Kueri pencarian vektor terus mengembalikan hasil yang valid
- Tetapi kualitas Pengenalan dan Peringkat dapat menurun, karena struktur indeks dibangun untuk distribusi penyematan yang berbeda.
Praktik terbaik: Saat melakukan penggantian data yang hampir lengkap (hapus dan sisipkan penyematan baru), jatuhkan dan buat ulang indeks vektor setelah memuat data baru. Membuat ulang indeks memastikan indeks dioptimalkan untuk distribusi penyematan baru dan memulihkan perilaku kueri yang dapat diprediksi.
Masalah yang diketahui
Untuk informasi selengkapnya, tinjau Masalah yang diketahui.
Hak akses
Pengguna harus memiliki ALTER izin pada tabel.
Contoh
Unduh dan impor artikel Wikipedia dengan sampel 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.
Nota
Indeks vektor versi terbaru memerlukan setidaknya 100 baris data sebelum pembuatan indeks. Contoh ini menyisipkan 100 baris untuk memenuhi persyaratan ini. Untuk informasi selengkapnya, lihat Persyaratan data minimum.
Blok kode berikut menunjukkan CREATE VECTOR INDEX dengan penyematan tiruan:
- Mengaktifkan fitur pratinjau (diperlukan untuk SQL Server 2025 saja; tidak diperlukan untuk Azure SQL Database atau database SQL di Fabric).
- Buat tabel
dbo.Articlessampel dengan kolomembeddingdengan vektor tipe data(5). - Sisipkan 100 baris 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 (SQL Server 2025 only)
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 (100 rows required for latest version indexes)
INSERT INTO Articles (id, title, content, embedding)
SELECT
value AS id,
'Article ' || [value],
'Content for article ' || [value],
CAST(JSON_ARRAY(
CAST(value * 0.01 AS FLOAT),
CAST(value * 0.02 AS FLOAT),
CAST(value * 0.03 AS FLOAT),
CAST(value * 0.04 AS FLOAT),
CAST(value * 0.05 AS FLOAT)
) AS VECTOR(5))
FROM GENERATE_SERIES(1, 100);
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) WITH APPROXIMATE
t.id,
t.title,
t.content,
s.distance
FROM
VECTOR_SEARCH(
TABLE = Articles AS t,
COLUMN = embedding,
SIMILAR_TO = @qv,
METRIC = 'cosine'
) AS s
ORDER BY s.distance, t.title;
Sintaks untuk kueri bergantung pada versi indeks vektor:
| Versi indeks vektor | Contoh sintaksis |
|---|---|
| Versi terbaru | Gunakan SELECT TOP (N) WITH APPROXIMATE tanpa TOP_N parameter |
| Versi sebelumnya (tidak digunakan lagi) | Gunakan TOP_N parameter dalam VECTOR_SEARCH fungsi |
Untuk indeks versi yang lebih lama (sintaksis yang tidak digunakan lagi):
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;
Contoh 4: Bekerja dengan operasi DML
Contoh berikut menunjukkan operasi DML pada tabel dengan indeks vektor yang dibuat menggunakan versi terbaru.
Menghapus baris
Menghapus baris akan menghapusnya dari tabel dan hasil pencarian vektor.
DELETE FROM dbo.wikipedia_articles
WHERE id = 12345;
Setelah penghapusan selesai, baris yang dihapus tidak lagi muncul dalam kueri pencarian vektor.
Sisipkan baris baru
Anda dapat menyisipkan baris baru dengan penyematan, dan baris tersebut menjadi segera dapat dicari tanpa membangun ulang indeks.
INSERT INTO dbo.wikipedia_articles (id, title, title_vector)
VALUES (
99999,
N'Quantum Computing Basics',
AI_GENERATE_EMBEDDINGS(N'Quantum Computing Basics' USE MODEL Ada2Embeddings)
);
Penyematan yang baru disisipkan secara otomatis dimasukkan ke dalam indeks vektor dan dapat dikembalikan oleh kueri pencarian vektor berikutnya.
Memperbarui baris yang sudah ada
Memperbarui kolom vektor atau non-vektor didukung sepenuhnya.
DECLARE @new_embedding VECTOR(1536);
SET @new_embedding = AI_GENERATE_EMBEDDINGS(N'Updated article title' USE MODEL Ada2Embeddings);
UPDATE dbo.wikipedia_articles
SET title_vector = @new_embedding,
title = N'Updated article title'
WHERE id = 50000;
Jika kolom vektor diperbarui, indeks diperbarui sesuai dengan itu sehingga pencarian vektor di masa mendatang menggunakan penyematan baru.
Gunakan MERGE untuk operasi yang kompleks
Pernyataan ini MERGE memungkinkan Anda melakukan operasi sisipkan, perbarui, dan hapus dalam satu pernyataan.
MERGE INTO dbo.wikipedia_articles AS target
USING (
SELECT
id,
title,
AI_GENERATE_EMBEDDINGS(title USE MODEL Ada2Embeddings) AS title_vector
FROM dbo.staging_articles
) AS source
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET
title = source.title,
title_vector = source.title_vector
WHEN NOT MATCHED BY TARGET THEN
INSERT (id, title, title_vector)
VALUES (source.id, source.title, source.title_vector)
WHEN NOT MATCHED BY SOURCE AND target.id > 100000 THEN
DELETE;
Indeks vektor secara otomatis diperbarui untuk mencerminkan semua perubahan yang MERGE dibuat oleh pernyataan.