Aracılığıyla paylaş


VECTOR_SEARCH (Transact-SQL) (Önizleme)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Azure SQL DatabaseSQL 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 TABLE tüm sütunlar.

  • bağımsız değişkeni tarafından distance belirtilen sütundaki vektör ile bağımsız değişkende sağlanan COLUMN vektö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:

  1. Geçerli önizlemede gerekli olan izleme bayrağını etkinleştirir.
  2. Veri türü dbo.Articles içeren bir sütun embedding içeren örnek tablo oluşturun.
  3. Sahte ekleme verileriyle örnek veriler ekleyin.
  4. üzerinde dbo.Articles.embeddingbir vektör dizini oluşturun.
  5. İşlevle vektör benzerliği aramasını VECTOR_SEARCH gö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;