Compartilhar via


Vetores e incorporações: perguntas frequentes (FAQ)

Aplica-se a: SQL Server 2025 (17.x) Banco de Dados SQL do AzureBanco de DadosSQL do Azure Banco de Dados SQL banco de dados SQL do Banco de Dados SQL do Azurebanco de dados SQL no Microsoft Fabric

Este artigo contém perguntas frequentes sobre vetores e inserções no Mecanismo de Banco de Dados SQL.

Observação

Os recursos de vetor estão disponíveis na Instância Gerenciada de SQL do Azure configurada com a política Always-up-to-date .

Como faço para manter a incorporação atualizada?

Atualize as inserções sempre que os dados subjacentes que eles representam forem alterados. Essa prática é especialmente importante para cenários em que os dados são dinâmicos, como conteúdo gerado pelo usuário ou bancos de dados atualizados com frequência. Para obter mais informações sobre várias estratégias para manter as inserções atualizadas, consulte Banco de Dados e IA: soluções para manter as inserções atualizadas.

A sobrecarga para pesquisa de vetor envolve principalmente o armazenamento do tipo de dados de vetor e os recursos computacionais necessários para indexação e pesquisa. O tipo de dados de vetor foi projetado para ser eficiente em termos de armazenamento, mas a sobrecarga exata pode variar com base no tamanho - o número de dimensões - dos vetores armazenados.

Para obter mais informações sobre como escolher o tamanho correto do vetor, examine os modelos e dimensões de inserção: otimizando a taxa de uso de recursos de desempenho.

Uma página de dados do SQL Server pode conter até 8.060 bytes, portanto, o tamanho do vetor afeta quantos vetores podem ser armazenados em uma única página. Por exemplo, se você tiver um vetor com 1.024 dimensões e cada dimensão for um único float de precisão (4 bytes), o tamanho total do vetor será de 4.104 bytes (4.096 bytes de carga + 8 bytes de cabeçalho). Esse tamanho limita o número de vetores que cabem em uma única página para um.

Qual modelo de inserção devo usar e quando?

Muitos modelos de inserção estão disponíveis. A escolha depende do caso de uso específico e do tipo de dados que você está processando. Alguns modelos dão suporte a vários idiomas, enquanto outros dão suporte a dados multimodal (texto, imagens e muito mais). Alguns modelos só estão disponíveis online, enquanto outros podem ser executados localmente.

Além do próprio modelo, considere o tamanho do modelo e o número de dimensões que ele produz. Modelos maiores podem fornecer melhor precisão, mas exigem mais recursos computacionais e espaço de armazenamento. Em muitos casos, ter mais dimensões não altera significativamente a qualidade para casos de uso comuns.

Para obter mais informações sobre como escolher o modelo de inserção correto, consulte Modelos e dimensões de inserção: otimizando a taxa de uso de recursos de desempenho.

Como eu decido quando usar valores de ponto flutuante de precisão única (4 bytes) versus precisão reduzida (2 bytes) para vetores?

Ao armazenar vetores de inserção em um banco de dados, você geralmente precisa equilibrar a eficiência de armazenamento com fidelidade numérica ao escolher entre floats de precisão única (float32) e meia precisão (float16).

Felizmente, as inserções normalmente não são altamente sensíveis a pequenas alterações de precisão.

As inserções são representações de vetores densas usadas em tarefas como pesquisa semântica, sistemas de recomendação e processamento de linguagem natural. Esses vetores geralmente vêm de redes neurais, que são inerentemente tolerantes a pequenas variações numéricas. Como resultado, reduzir a precisão de float32 para float16 geralmente tem impacto mínimo na qualidade de comparações de similaridade ou tarefas downstream, especialmente durante a inferência.

O uso float16 pode reduzir significativamente o armazenamento e o uso de memória, o que é particularmente benéfico ao trabalhar com conjuntos de dados de inserção em larga escala.

E os vetores esparsos?

Atualmente, o tipo de dados de vetor no Mecanismo de Banco de Dados SQL foi projetado para vetores densos. Esses vetores são matrizes de números de ponto flutuante em que a maioria dos elementos não são zero. Vetores esparsos, que contêm um número significativo de zero elementos, não têm suporte nativo.

O desempenho pode variar amplamente com base no caso de uso específico, no tamanho do conjunto de dados e na complexidade das consultas. No entanto, os recursos de pesquisa de vetor do SQL Server são eficientes e escalonáveis. Eles usam técnicas de indexação para otimizar o desempenho da pesquisa.

E se eu tiver mais de uma coluna que quero usar para gerar inserções?

Se você tiver várias colunas que deseja usar para gerar inserções, terá duas opções principais:

  • Criar uma inserção para cada coluna ou
  • Concatenar os valores de várias colunas em uma única cadeia de caracteres e, em seguida, gerar uma única inserção para essa cadeia de caracteres concatenada.

Para obter mais informações sobre essas duas opções e as considerações de design de banco de dados relacionadas, consulte Incorporações de Modelagem Eficiente e Elegante.

E quanto à nova classificação?

A nova classificação melhora a relevância dos resultados da pesquisa reavaliando os resultados iniciais com base em critérios ou modelos extras. No Mecanismo de Banco de Dados SQL, você pode implementar a nova classificação combinando a pesquisa de vetor com a pesquisa de texto completo (que fornece classificação BM25) ou usando consultas SQL adicionais ou modelos de machine learning para refinar os resultados com base em preferências de usuário ou lógica de negócios específicas.

Para obter mais informações, consulte Melhorar as capacidades de pesquisa com pesquisa híbrida e reclassificação RRF.

Uma técnica de reordenamento mais refinada é conhecida como reordenamento semântico. A nova classificação semântica depende de um modelo especializado (geralmente um codificador cruzado ou uma abordagem de interação tardia) para comparar cada passagem candidata com a consulta e atribuir uma pontuação de relevância detalhada. Ao reavaliar essas passagens, os reclassificadores garantem que os resultados mais precisos, úteis e relevantes subam ao topo.

Para obter um exemplo de como usar um modelo de nova classificação, consulte o Reranking Semântico com os modelos SQL do Azure, SQL Server 2025 e Cohere Rerank.

Quando devo usar a Pesquisa de IA (agora AI Foundry) em vez de usar o SQL para cenários de pesquisa de vetor?

A Pesquisa de IA (agora AI Foundry) é um serviço especializado projetado para cenários avançados de pesquisa, incluindo pesquisa de vetor, processamento de linguagem natural e insights orientados por IA. Ele fornece um conjunto abrangente de recursos para a criação de aplicativos de pesquisa inteligentes, como suporte interno para vários modelos de IA, algoritmos de classificação avançada e integração com outros serviços de IA.

O Mecanismo de Banco de Dados SQL fornece a capacidade de armazenar qualquer tipo de dados e executar qualquer tipo de consulta: estruturada e não estruturada. Você pode executar a pesquisa de vetor nesses dados. É uma boa opção para cenários em que você precisa pesquisar todos esses dados juntos e não deseja usar um serviço separado para pesquisa que complicaria sua arquitetura. O Mecanismo de Banco de Dados SQL oferece recursos críticos de segurança empresarial para garantir que os dados estejam sempre protegidos, como RLS (segurança em nível de linha), DDM (máscara de dados dinâmico), Always Encrypted, tabelas de razão imutáveis e TDE (transparent data encryption).

Aqui está um exemplo de uma única consulta que você pode executar no SQL do Azure ou no SQL Server que combina dados vetoriais, geoespaciais, estruturados e não estruturados de uma só vez. A consulta de exemplo recupera os 50 restaurantes mais relevantes com base na descrição do restaurante, na localização do restaurante e nas preferências do usuário. Ele usa a pesquisa de vetor para a descrição e pesquisa geoespacial para o local, filtrando também por números de estrelas, número de revisões, categoria e outros atributos.

DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);

SELECT TOP (50) b.id AS business_id,
                b.name AS business_name,
                r.id AS review_id,
                r.stars,
                r.review,
                VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
                @p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
     INNER JOIN dbo.reviews_embeddings AS re
         ON r.id = re.review_id
     INNER JOIN dbo.business AS b
         ON r.business_id = b.id
WHERE b.city = 'Redmond'
      AND @p.STDistance(b.geo_location) < 5000 -- 5 km
      AND r.stars >= 4
      AND b.reviews >= 30
      AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
      AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;

No exemplo anterior, a pesquisa ENN (Exact Nearest Neighbor) localiza as revisões mais relevantes com base na distância semântica das inserções, filtrando também por distância geoespacial e outros atributos de negócios. Essa consulta demonstra o poder de combinar a pesquisa de vetor com as funcionalidades tradicionais do SQL para criar uma experiência de pesquisa avançada e eficiente.

Se você quiser usar a pesquisa aproximada de Vizinho Mais Próximo (ANN), poderá criar um índice de vetor na reviews_embeddings tabela e usar a VECTOR_SEARCH função para executar a pesquisa.

Revise o laboratório individual AI Embeddings para Cryptozoology no Azure SQL.