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. Esta prática é especialmente importante em cenários em que os dados são dinâmicos, como conteúdos gerados pelos utilizadores ou bases de dados frequentemente atualizadas. Para mais informações sobre várias estratégias para manter os embeddings atualizados, veja Base de Dados e IA: soluções para manter os embeddings atualizados.

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 tiver um vetor com 1024 dimensões e cada dimensão for um float de precisão simples (4 bytes), o tamanho total do vetor é de 4.104 bytes (carga útil de 4.096 bytes + cabeçalho de 8 bytes). Este tamanho limita o número de vetores que cabem numa única página a um.

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

Existem muitos modelos de embedding disponíveis. A escolha depende do seu caso de uso específico e do tipo de dados que está a processar. Alguns modelos suportam múltiplas línguas, enquanto outros suportam dados multimodais (texto, imagens e mais). Alguns modelos estão disponíveis apenas online, enquanto outros podem correr 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 requerem 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 incorporação correto, consulte Incorporação de modelos e dimensões: otimizando a taxa de uso de recursos de desempenho.

Como decido quando usar valores de ponto flutuante de precisão simples (4 bytes) versus metade de precisão (2 bytes) para vetores?

Quando armazena vetores de embedding numa base de dados, muitas vezes é necessário equilibrar a eficiência de armazenamento com a fidelidade numérica ao escolher entre floats de precisão simples (float32) e meia-precisão (float16).

Felizmente, os embeddings normalmente não são muito sensíveis a pequenas alterações de 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 provêm frequentemente 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 um 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?

Atualmente, o tipo de dado vetor no Motor de Base de Dados SQL é concebido para vetores densos. Estes vetores são matrizes de números de ponto flutuante onde a maioria dos elementos não é nula. 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, as capacidades de pesquisa vetorial do SQL Server são eficientes e escaláveis. Utilizam técnicas de indexação para otimizar o desempenho nas pesquisas.

E se eu tiver mais do que uma coluna que quero usar para a geração de embeddings?

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 mais informações sobre estas duas opções e as considerações relacionadas com o design de bases de dados, consulte Modelação Eficiente e Elegante de Embeddings.

E quanto à reclassificação?

A reclassificação melhora a relevância dos resultados de pesquisa ao reavaliar os resultados iniciais com base em critérios ou modelos adicionais. No Motor de Base de Dados SQL, pode implementar a reclassificação combinando pesquisa vetorial com pesquisa em texto completo (que fornece a classificação BM25), ou utilizando consultas SQL adicionais ou modelos de aprendizagem automática para refinar os resultados com base na lógica de negócio específica ou nas preferências do utilizador.

Para mais informações, consulte Melhorar as Capacidades de Pesquisa com Pesquisa Híbrida e Reclassificação RRF.

Uma técnica de reclassificação mais refinada chama-se reclassificação semântica. A reclassificação semântica baseia-se num modelo especializado (frequentemente um cross-encoder ou uma abordagem de interação tardia) para comparar cada passagem candidata com a consulta e atribuir uma pontuação detalhada de relevância. Ao reavaliar estas passagens, os reclassificadores garantem que os resultados mais precisos, úteis e relevantes chegam ao topo.

Para um exemplo de utilização de um modelo de reclassificação, veja Semantic Reranking with Azure SQL, SQL Server 2025 e Cohere Rerank models.

Quando devo usar AI Search (agora AI Foundry) em vez de usar SQL para cenários de pesquisa vetorial?

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 Motor de Base de Dados SQL oferece a capacidade de armazenar qualquer tipo de dados e executar qualquer tipo de consulta: estruturada e não estruturada. Podes fazer pesquisa vetorial nesses dados. É uma boa opção para cenários em que você precisa pesquisar todos esses dados juntos e não quer 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 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 executar no Azure SQL ou SQL Server que combina dados vetoriais, geoespaciais, estruturados e não estruturados ao mesmo tempo. A consulta de exemplo recupera os 50 restaurantes mais relevantes com base na descrição do restaurante, localização do restaurante e preferências do utilizador. Utiliza pesquisa vetorial para a descrição e pesquisa geoespacial para a localização, filtrando também por número de estrelas, número de avaliaçõ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;

Na amostra anterior, a pesquisa por Vizinho Mais Próximo Exato (ENN) encontra as revisões mais relevantes com base na distância semântica dos embeddings, filtrando também por distância geoespacial e outros atributos empresariais. 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 .