Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Yaklaşık en yakın komşu vektör arama algoritmasını kullanarak belirli bir sorgu vektörlerine benzer vektörler arayın. Vektör dizin oluşturma ve vektör aramanın nasıl çalıştığı ve tam ve yaklaşık arama arasındaki farklar hakkında daha fazla bilgi edinmek için SQL Veritabanı Altyapısı'nda Vektör araması ve vektör dizinleri bölümüne bakın.
Azure SQL Veritabanı ve SQL Veritabanı içinde Fabric
Özellik ön izleme aşamasında. Kullanmadan önce geçerli sınırlamaları gözden geçirmeyi unutmayın.
Uyarı
Önizleme özelliği olarak, bu makalede sunulan teknoloji Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları'na tabidir.
SQL Server 2025 Önizleme özelliği
SQL Server 2025'te bu fonksiyon önizleme aşamasında ve değişebilir. Bu özelliği kullanmak için PREVIEW_FEATURES etkinleştirmeniz gerekir.
Kullanmadan önce geçerli sınırlamaları gözden geçirmeyi unutmayın.
Syntax
Transact-SQL söz dizimi kuralları
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
TABLO = nesne [AS source_table_alias]
Aramanın gerçekleştirildiği tablo. Temel tablo olmalıdır. Hem yerel hem de genel görünümler, geçici tablolar desteklenmez.
SÜTUN = vector_column
Aramanın gerçekleştirildiği vektör sütunu. Sütun bir vektör veri türü olmalıdır.
SIMILAR_TO = query_vector
Arama için kullanılan vektör. Bir değişken veya vektör türünde bir sütun olmalıdır.
METRİK = { 'kosinus' | 'nokta' | 'Öklid' }
Sorgu vektörünü ve belirtilen sütundaki vektörleri arasındaki uzaklığı hesaplamak için kullanılan uzaklık ölçümü. ANN (Yaklaşık En Yakın Komşu) dizini yalnızca aynı ölçüme ve aynı sütuna sahip eşleşen bir ANN dizini bulunduğunda kullanılır. Uyumlu ANN dizini yoksa bir uyarı oluşturulur ve KNN (k-En Yakın Komşu) algoritması kullanılır.
TOP_N = <k>
Döndürülecek benzer vektör sayısı üst sınırı. Pozitif bir tamsayı olmalıdır.
result_table_alias
Diğer ad, sonuç kümesine başvurmak için kullanılır.
Sonuç kümesi döndürme
İşlev tarafından döndürülen sonuç kümesi şunları VECTOR_SEARCH içerir:
Bağımsız değişkende belirtilen tablodan
TABLEtüm sütunlar.bağımsız değişkeni tarafından
distancebelirtilen sütundaki vektör ile bağımsız değişkende sağlananCOLUMNvektör arasındaki uzaklığı temsil eden adlıSIMILAR_TOek bir sütun.
Uzaklık sütunu işlevin VECTOR_SEARCH kendisi tarafından oluşturulurken, diğer tüm sütunlar bağımsız değişkende başvuruda bulunan tablodan TABLE gelir.
Bağımsız değişkende tablo için bir diğer ad kullanıyorsanız, deyimindeki TABLE sütunlarına SELECT başvurmak için aynı diğer adı kullanmanız gerekir. içinde VECTOR_SEARCHbelirtilen tablodaki başvuru sütunlarına TABLE atanan diğer adı kullanamazsınız. Çıktısını alıp VECTOR_SEARCH tablo verileriyle birleştirerek oluşturulan sonuç kümesini düşünüyorsanız bu davranışı anlamak daha kolaydır.
Bağımsız değişkende TABLE belirtilen tablo zaten adlı distancebir sütun içeriyorsa, davranış sütun adını paylaşan iki tablo arasındaki SQL birleşimine benzer olacaktır. Böyle durumlarda, sütun başvurularını belirsiz bir şekilde belirtmek için tablo diğer adlarını kullanmanız gerekir; aksi takdirde bir hata oluşur.
Limitations
Geçerli önizlemede aşağıdaki sınırlamalar vardır:
Yalnızca filtre sonrası
Herhangi bir koşul uygulanmadan önce vektör araması gerçekleşir. Ek koşul, yalnızca en benzer vektörler döndürüldükten sonra uygulanır. Aşağıdaki örnek, sorgu vektörine @qven çok benzeyen eklemeler içeren ilk 10 satırı döndürür ve yan tümcesinde WHERE belirtilen koşulu uygular. Vektör araması tarafından döndürülen vektörlerle ilişkili 10 satırdan hiçbiri 1'e eşit sütuna sahip accepted değilse sonuç boş olur.
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 görünümlerde kullanılamaz
VECTOR_SEARCH görünümün gövdesinde kullanılamaz.
Examples
Örnek 1
Aşağıdaki örnek, tablosundakine Pink Floyd music style en benzer 10 makaleyi wikipedia_articles_embeddings bulur.
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
Örnek 2
Örnek 1 ile aynı, ancak bu kez sorgu vektörleri değişken yerine başka bir tablodan alınıyor.
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;
Örnek 3
ve ilgili CREATE VECTOR INDEX işlevi kullanan VECTOR_SEARCH temel bir uçtan uca örnek. Eklemeler sahtedir. Gerçek dünya senaryosunda eklemeler, ekleme modeli ve AI_GENERATE_EMBEDDINGS ya da OpenAI SDK'sı gibi bir dış kitaplık kullanılarak oluşturulur.
Aşağıdaki kod bloğu, VECTOR_SEARCH sahte eklemelerle işlevi gösterir:
- Geçerli önizlemede gerekli olan izleme bayrağını etkinleştirir.
- Veri türü
dbo.Articlesiçeren bir sütunembeddingiçeren örnek tablo oluşturun. - Sahte ekleme verileriyle örnek veriler ekleyin.
- üzerinde
dbo.Articles.embeddingbir vektör dizini oluşturun. - İşlevle vektör benzerliği aramasını
VECTOR_SEARCHgösterin.
-- 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;