Partilhar via


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

Aplica-se a: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

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

Observação

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

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

Atualize as incorporações sempre que os dados subjacentes que representam forem alterados. Isso é 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 saber mais sobre várias estratégias para manter as incorporações atualizadas, consulte Banco de dados e IA: soluções para manter as incorporações atualizadas.

A sobrecarga para a pesquisa vetorial envolve principalmente o armazenamento do tipo de dados vetoriais e os recursos computacionais necessários para indexação e pesquisa. O tipo de dado vetorial é concebido para ser eficiente em termos de armazenamento, mas a sobrecarga exata pode variar consoante o tamanho – o número de dimensões – dos vetores armazenados.

Para obter mais informações sobre como escolher o tamanho correto do vetor, consulte Incorporação de modelos e dimensões: otimizando a relação desempenho-uso de recursos.

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 tiveres um vetor com 1.024 dimensões e cada dimensão for um float de precisão simples (4 bytes), o tamanho total do vetor será de 4.104 bytes (4096 bytes de carga útil + 8 bytes de cabeçalho). Isso limita o número de vetores que podem caber em uma única página a um.

Que modelo de incorporação devo usar e quando?

Existem muitos modelos de incorporação disponíveis, e a escolha de qual usar depende do caso de uso específico e do tipo de dados que estão sendo processados. Alguns modelos suportam vários idiomas, enquanto outros suportam dados multimodais (texto, imagens, etc.). Alguns estão disponíveis apenas online, outros podem ser executados localmente.

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

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

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

Ao armazenar vetores de embedding numa base de dados, a escolha entre floats de precisão simples (float32) e meia-precisão (float16) resume-se frequentemente a equilibrar a eficiência de armazenamento com a fidelidade numérica.

Felizmente, as incorporações normalmente não são altamente sensíveis a pequenas mudanças na precisão.

As incorporações são representações vetoriais densas usadas em tarefas como pesquisa semântica, sistemas de recomendação e processamento de linguagem natural. Estes vetores são muitas vezes a saída 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 das comparações de similaridade ou das tarefas a jusante — 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 embedding em grande escala.

E os vetores esparsos?

No momento, o tipo de dados vetoriais no Mecanismo de Banco de Dados SQL é projetado para vetores densos, que são matrizes de números de vírgula flutuante onde a maioria dos elementos é diferente de zero. Vetores esparsos, que contêm um número significativo de elementos zero, não são suportados nativamente.

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 vetorial do SQL Server são projetados para serem eficientes e escaláveis, aproveitando as técnicas de indexação para otimizar o desempenho da pesquisa.

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

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

  • Crie uma incorporação para cada coluna, ou
  • Concatene os valores de várias colunas em uma única cadeia de caracteres e, em seguida, gere uma única incorporação para essa cadeia de caracteres concatenada.

Para obter mais informações sobre as duas opções e as considerações de design de banco de dados relacionadas, consulte Incorporações de modelagem eficientes e elegantes.

E quanto à reclassificação?

A reclassificação é uma técnica utilizada para melhorar a relevância dos resultados da pesquisa, reavaliando os resultados iniciais com base em critérios ou modelos adicionais. No Mecanismo de Banco de Dados SQL, você pode implementar a reclassificação combinando pesquisa vetorial com texto completo (que fornece classificação BM25) ou consultas SQL adicionais ou modelos de aprendizado de máquina para refinar os resultados com base em lógica de negócios específica ou preferências do usuário.

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

Quando usar AI Search (agora AI Foundry) vs usar SQL para cenários de pesquisa de vetores?

AI Search (agora AI Foundry) é um serviço especializado projetado para cenários de pesquisa avançada, incluindo pesquisa vetorial, processamento de linguagem natural e insights orientados por IA. Ele fornece um conjunto abrangente de recursos para a construção de aplicativos de pesquisa inteligentes, como suporte integrado para vários modelos de IA, algoritmos avançados de classificação 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, e executar pesquisa vetorial nesses dados. É uma boa escolha para cenários em que precisas de fazer pesquisas em conjunto entre todos estes dados, e não queres usar um serviço separado para pesquisa que complicaria a tua 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 segurança em nível de linha (RLS), mascaramento dinâmico de dados (DDM), sempre criptografado, tabelas de registo imutáveis e criptografia de dados transparente (TDE).

Aqui está um exemplo de uma única consulta que pode ser executada no Azure SQL 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, usando pesquisa vetorial para a descrição e pesquisa geoespacial para a localização, filtrando também por números de estrelas, número de avaliações, categoria e assim por diante:

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 Exact Nearest Neighbor (ENN) é usada para encontrar as avaliações mais relevantes com base na distância semântica das incorporações, além de filtrar por distância geoespacial e outros atributos comerciais. Essa consulta demonstra o poder de combinar a pesquisa vetorial com os recursos tradicionais do SQL para criar uma experiência de pesquisa rica e eficiente.

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

Analise o laboratório de Incorporações de IA de Criptozoologia do Azure SQL individualizado .