Aracılığıyla paylaş


VEKTÖR INDEKSI OLUŞTUR (Transact-SQL) (Önizleme)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Azure SQL DatabaseSQL database in Microsoft Fabric

En yakın komşu aramasının performanslarını geliştirmek için vektör sütununda yaklaşık bir dizin oluşturun. 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.

Sözdizimi

Transact-SQL söz dizimi kuralları

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" } ]
[;]

Tartışmalar

index_name

Dizinin adı. Dizin adlarının bir tablo içinde benzersiz olması gerekir, ancak veritabanında benzersiz olması gerekmez. Dizin adları tanımlayıcıların kurallarına uymalıdır.

nesne

Dizinin oluşturulduğu tablo. Temel tablo olmalıdır. Hem yerel hem de genel görünümler, geçici tablolar desteklenmez.

vector_column

Vektör dizinini oluşturmak için kullanılacak sütun. Vektör türünde olmalıdır.

METRİK

Verilen iki vektör arasındaki uzaklığı hesaplamak için kullanılacak uzaklık ölçümünün adını içeren bir dize. Aşağıdaki uzaklık ölçümleri desteklenir:

  • cosine - Kosinüs uzaklığı
  • euclidean - Öklid uzaklığı
  • dot - (Negatif) Noktalı ürün

TYPE

Dizini oluşturmak için kullanılan ANN algoritmasının türü. Şu anda yalnızca DiskANN desteklenmektedir. DiskANN varsayılan değerdir.

MAXDOP

Dizin işlemi için en yüksek paralellik derecesi yapılandırma seçeneğini geçersiz kılar. Daha fazla bilgi için bkz. Sunucu yapılandırması: en yüksek paralellik derecesi. Bir dizin derleme işlemi için paralellik derecesini ve sonuçta elde edilen kaynak tüketimini sınırlamak için kullanın MAXDOP .

max_degree_of_parallelism olabilir:

  • 1

    Paralel plan oluşturmayı bastırır.

  • >1

    Paralel dizin işleminde kullanılan en yüksek paralellik derecesini, geçerli sistem iş yüküne göre belirtilen sayıyla veya daha az değerle kısıtlar.

  • 0 (varsayılan)

    Geçerli sistem iş yüküne göre azaltılmadığı sürece sunucu, veritabanı veya iş yükü grubu düzeyinde belirtilen paralellik derecesini kullanır.

Daha fazla bilgi için bkz . Paralel dizin işlemlerini yapılandırma.

Uyarı

Paralel dizin işlemleri SQL Server'ın her sürümünde kullanılamaz. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için, SQL Server 2022'nin Sürümleri ve desteklenen özellikleri veya SQL Server 2025'in Sürümleri ve desteklenen özellikleri sayfalarına bakınız.

Sınırlamalar

Geçerli önizlemede aşağıdaki sınırlamalar vardır:

  • Vektör dizini bölümlenemez. Bölüm desteği yok.

  • Tabloda tek bir sütun, tamsayı, birincil anahtar kümelenmiş dizini olmalıdır.

  • Vektör dizinleri abonelere çoğaltılamaz.

  • Vektör dizinine sahip bir tablo salt okunur hale gelir. Vektör dizini tabloda mevcutken veri değişikliğine izin verilmez.

    Azure SQL Database ve SQL veritabanı Microsoft Fabric'te, ALLOW_STALE_VECTOR_INDEXveritabanı kapsamlı yapılandırmayıON, olarak ayarlayabilirsiniz, bu da tablonun tekrar yazılabilir olmasını sağlar.

    Uyarı

    Veritabanı ALLOW_STALE_VECTOR_INDEX kapsamlı yapılandırma seçeneği şu anda SQL Server 2025 (17.x)'de mevcut değil.

    Vektör indeksi, tabloya yeni veri eklendiğinde veya güncellendiğinde güncellenmez. Vektör indeksini yenilemek için onu bırakıp yeniden oluşturmalısınız.

Bilinen sorunlar

Daha fazla bilgi için Bkz. Bilinen sorunlar.

İzinler

Kullanıcının tabloda izni olmalıdır ALTER .

Örnekler

Örnekte kullanılan veritabanının ayrıntılarına buradan ulaşabilirsiniz: Vektör Eklemeleri ile Wikipedia Makalesini indirin ve içeri aktarın.

Örneklerde, başlığın Wikipedia makalelerinin eklemelerini depolayan türünde wikipedia_articles bir sütuna title_vector sahip adlı vector bir tablonun varlığı varsayılır. title_vector 1.536 boyutlu vektörler döndüren text-embedding-ada-002 veya text-embedding-3-small gibi bir ekleme modeliyle oluşturulmuş bir ekleme olduğu varsayılır.

Uçtan uca çözümler de dahil olmak üzere daha fazla örnek için Azure SQL Veritabanı Vektör Arama Örnekleri GitHub deposuna gidin.

Örnek 1

Aşağıdaki örnek, ölçümü kullanarak title_vector sütunda cosine bir vektör dizini oluşturur.

CREATE VECTOR INDEX vec_idx
    ON [dbo].[wikipedia_articles] ([title_vector])
        WITH (METRIC = 'COSINE', TYPE = 'DISKANN');

Örnek 2

Aşağıdaki örnek, (negatif) title_vector ürün ölçümünü kullanarak sütunda dot bir vektör dizini oluşturur ve paralelliği 8 ile sınırlar ve vektör dosya SECONDARY grubunda depolar.

CREATE VECTOR INDEX vec_idx
    ON [dbo].[wikipedia_articles] ([title_vector])
        WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
    ON [SECONDARY];

Ö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 aşağıdaki adımlarla sahte eklemeler oluşturur:

  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
);

-- 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;