Partilhar via


CRIAR ÍNDICE VETORIAL (Transact-SQL) (Pré-visualização)

Aplica-se a: SQL Server 2025 (17.x) Azure SQL Database SQLdatabase in Microsoft Fabric

Crie um índice aproximado em uma coluna vetorial para melhorar o desempenho da pesquisa de vizinhos mais próximos. Para saber mais sobre como a indexação vetorial e a pesquisa vetorial funcionam, e as diferenças entre a pesquisa exata e aproximada, consulte Pesquisa vetorial e índices vetoriais no Mecanismo de Banco de dados SQL.

Banco de Dados SQL do Azure e Banco de Dados SQL no Fabric

A funcionalidade está em pré-visualização. Certifique-se de verificar as limitações atuais antes de usá-lo.

Observação

Como funcionalidade de pré-visualização, a tecnologia apresentada neste artigo está sujeita aos Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.

Funcionalidade de Pré-visualização do SQL Server 2025

No SQL Server 2025, esta função está em pré-visualização e está sujeita a alterações. Para usar esse recurso, você deve habilitar a PREVIEW_FEATURES banco de dados.

Certifique-se de verificar as limitações atuais antes de usá-lo.

Sintaxe

Transact-SQL convenções de sintaxe

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

Argumentos

index_name

O nome do índice. Os nomes de índice devem ser exclusivos dentro de uma tabela, mas não precisam ser exclusivos dentro de um banco de dados. Os nomes dos índices devem seguir as regras dos identificadores.

objeto

Tabela na qual o índice é criado. Deve ser uma tabela de base. Não há suporte para visualizações, tabelas temporárias, locais e globais.

vector_column

Coluna a ser usada para criar o índice vetorial. Deve ser do tipo vetorial .

MÉTRICA

Uma cadeia de caracteres com o nome da métrica de distância a ser usada para calcular a distância entre os dois vetores fornecidos. As seguintes métricas de distância são suportadas:

  • cosine - Distância cossena
  • euclidean - Distância euclidiana
  • dot - Produto Dot (Negativo)

TYPE

O tipo de algoritmo ANN usado para construir o índice. Atualmente, apenas DiskANN é suportado. DiskANN é o valor padrão.

MAXDOP

Substitui o grau máximo de paralelismo opção de configuração para a operação de índice. Para obter mais informações, consulte Configuração do servidor : grau máximo de paralelismo. Use MAXDOP para limitar o grau de paralelismo e o consumo de recursos resultante para uma operação de compilação de índice.

max_degree_of_parallelism pode ser:

  • 1

    Suprime a geração de planos paralelos.

  • >1

    Restringe o grau máximo de paralelismo usado em uma operação de índice paralelo ao número especificado ou menos com base na carga de trabalho atual do sistema.

  • 0 (padrão)

    Usa o grau de paralelismo especificado no nível do servidor, banco de dados ou grupo de carga de trabalho, a menos que seja reduzido com base na carga de trabalho atual do sistema.

Para obter mais informações, consulte Configurar operações de índice paralelo.

Observação

As operações de índice paralelo não estão disponíveis em todas as edições do SQL Server. Para uma lista de funcionalidades suportadas pelas edições do SQL Server, consulte Edições e funcionalidades suportadas do SQL Server 2022 ou Edições e funcionalidades suportadas pelo SQL Server 2025.

Limitações

A visualização atual tem as seguintes limitações:

  • O índice vetorial não pode ser particionado. Sem suporte a partições.

  • A tabela deve ter uma única coluna, inteiro, índice clusterizado de chave primária.

  • Os índices vetoriais não são replicados para assinantes.

  • Uma tabela com um índice vetorial torna-se somente leitura. Nenhuma modificação de dados é permitida enquanto o índice vetorial estiver presente na tabela.

    No Azure SQL Database e na base de dados SQL no Microsoft Fabric, pode definir a ALLOW_STALE_VECTOR_INDEXconfiguração com âmbito da base de dados para ON, o que permite que a tabela volte a ser escrita.

    Observação

    A ALLOW_STALE_VECTOR_INDEX opção de configuração com âmbito de base de dados não está atualmente disponível no SQL Server 2025 (17.x).

    O índice vetorial não é atualizado quando novos dados são inseridos ou atualizados na tabela. Para atualizar o índice vetorial, tens de o deixar cair e recriar.

Problemas conhecidos

Para obter mais informações, consulte Problemas conhecidos.

Permissões

O usuário deve ter ALTER permissão na tabela.

Exemplos

Detalhes do banco de dados usado no exemplo podem ser encontrados aqui: Faça o download e importe o artigo da Wikipédia com incorporações vetoriais.

Os exemplos pressupõem a existência de uma tabela nomeada wikipedia_articles com uma coluna title_vector do tipo vector que armazena as incorporações de títulos de artigos da Wikipédia. title_vector é assumido como uma incorporação gerada com um modelo de incorporação como text-embedding-ada-002 ou text-embedding-3-small, que retorna vetores com 1.536 dimensões.

Para obter mais exemplos, incluindo soluções de ponta a ponta, vá para o repositório GitHub de Exemplos de Pesquisa Vetorial do Banco de Dados SQL do Azure.

Exemplo 1

O exemplo a title_vector seguir cria um índice de vetor na coluna usando a cosine métrica.

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

Exemplo 2

O exemplo a title_vector seguir cria um índice vetorial na coluna usando a métrica de produto (negativa), dot limitando o paralelismo a 8 e armazenando o SECONDARY vetor no grupo de arquivos.

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

Exemplo 3

Um exemplo CREATE VECTOR INDEX básico de uso de ponta a ponta e a função relacionada VECTOR_SEARCH . As incorporações são ridicularizadas. Em um cenário do mundo real, as incorporações são geradas usando um modelo e AI_GENERATE_EMBEDDINGS de incorporação ou uma biblioteca externa, como o OpenAI SDK.

O bloco de código a seguir cria incorporações simuladas com as seguintes etapas:

  1. Habilita o sinalizador de rastreamento, necessário na visualização atual.
  2. Crie uma tabela dbo.Articles de exemplo com uma coluna embedding com o tipo de dados vetor(5).
  3. Insira dados de exemplo com dados de incorporação simulados.
  4. Crie um índice vetorial no dbo.Articles.embedding.
  5. Demonstrar a pesquisa de semelhança vetorial com a VECTOR_SEARCH() função.
-- 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;