Partilhar via


Guia de desempenho da Pesquisa Vetorial

O Mosaic AI Vetor Search foi criado para uma recuperação rápida e escalável. O desempenho da pesquisa vetorial depende de muitos fatores, incluindo escolha de SKU, tamanho do índice, tipo de consulta, dimensionalidade do vetor, métodos de autenticação e como seu aplicativo lida com picos de tráfego. A maioria das cargas de trabalho tem um bom desempenho imediato, mas para situações em que você precisa dimensionar ou otimizar a latência, este guia apresenta dicas práticas e padrões comuns para ajudá-lo a configurar seu sistema para um desempenho ideal de pesquisa vetorial.

Fatores que afetam o desempenho

O desempenho não é um número único — é um intervalo que depende das características da carga de trabalho, das opções de configuração e da implementação do cliente. Este guia foi projetado para ajudá-lo a construir um modelo mental claro de como o desempenho funciona para que você possa usar o Mosaic AI Vetor Search de forma mais eficaz.

A seguir estão os principais fatores que influenciam como o sistema se comporta:

  • Escolha de SKU: padrão ou otimizado para armazenamento.
  • Tamanho do índice: número de vetores armazenados.
  • Tamanho de incorporação: tipicamente 384–1536.
  • Tipo de consulta: vizinho mais próximo aproximado (ANN) ou híbrido.
  • Número de resultados solicitados: valores mais altos aumentam o tempo de recuperação.
  • Tipo de incorporação: gerenciado ou autogerenciado.
  • Carga de consulta: quanto tráfego atinge o ponto de extremidade ao longo do tempo.
  • Método de autenticação: como seu aplicativo se conecta ao Databricks.

O restante deste artigo fornece dicas práticas para ajustar cada uma dessas variáveis e explica como elas afetam a latência de pesquisa e a taxa de transferência de consultas em implantações do mundo real.

Escolha o SKU certo

O Mosaic AI Vetor Search oferece dois SKUs, cada um projetado para equilibrar latência, escalabilidade e eficiência de custos, dependendo da carga de trabalho. Escolher o SKU certo para sua aplicação é a primeira alavanca para ajustar o desempenho.

Em geral:

  • Escolha pontos de extremidade padrão quando a latência for crítica e seu índice estiver bem abaixo de vetores 320M.
  • Escolha endpoints otimizados para armazenamento quando estiver trabalhando com vetores 10M+, pode tolerar alguma latência extra e precisa de melhor eficiência de custos por vetor (até 7x mais barato).

A tabela a seguir mostra algumas diretrizes de desempenho esperado.

SKU Latência QPS Capacidade de índice Tamanho da unidade de pesquisa vetorial (VSU)
Standard 20–50 ms 30–200+ Vetores 320M Vetores 2M
Armazenamento otimizado 300–500 ms 30–50 Vetores 1B 64M vetores

Compreender o tamanho do índice

O desempenho é maior quando o índice se encaixa em uma única unidade de pesquisa vetorial, com espaço extra para lidar com carga de consulta adicional. À medida que as cargas de trabalho vão além de uma única unidade de pesquisa vetorial (ou seja, vetores 2M+ para padrão ou 64M+ para armazenamento otimizado), a latência aumenta e o QPS diminui. Eventualmente, o QPS estabiliza em aproximadamente 30 QPS (ANN).

O desempenho depende de muitos fatores exclusivos de cada carga de trabalho, como padrões de consulta, filtros, dimensionalidade vetorial e simultaneidade. Os números seguintes são pontos de referência.

SKU Vectors Dimensão Latência QPS Consultas mensais
Standard 10.000 768 20ms 200+ 500M+
10 milhões 768 40ms 30 78 milhões
100 milhões 768 50ms 30 78 milhões
Armazenamento otimizado 10 milhões 768 300 ms 50 130 milhões
100 milhões 768 400 ms 40 100 milhões
1 B 768 500 ms 30 78 milhões

Minimizar o tamanho da incorporação

A dimensionalidade vetorial refere-se ao número de características em cada vetor. Os valores típicos são 384, 768, 1024 ou 1536. Dimensões mais altas fornecem representações mais expressivas que podem melhorar a qualidade, mas têm um custo de computação. Vetores de dimensões inferiores exigem menos computação durante a recuperação, o que se traduz em tempos de consulta mais rápidos e QPS mais altos. Por outro lado, vetores de maior dimensão aumentam a carga de computação e reduzem a taxa de transferência.

Como regra geral, escolha a menor dimensionalidade que preserve a qualidade de recuperação para o seu caso de uso.

Por exemplo, reduzir a dimensionalidade por um fator de dois (digamos, de 768 para 384) normalmente melhora o QPS em cerca de 1,5x e reduz a latência em cerca de 20%, dependendo do tamanho do índice e do padrão de consulta. Estes ganhos agravam-se ainda mais em dimensionalidades muito baixas. Por exemplo, o uso de vetores de 64 dimensões pode oferecer QPS dramaticamente maior e latência significativamente menor em comparação com os benchmarks de 768 dimensões mostrados na tabela. Isso torna as dimensões 384 e abaixo especialmente atraentes para casos de uso sensíveis à latência e alto rendimento, desde que a qualidade da recuperação permaneça aceitável.

Use ANN para eficiência e use híbrido quando necessário

Use consultas ANN sempre que possível. Eles são os mais eficientes em termos de computação e suportam o QPS mais alto.

Use a pesquisa híbrida quando necessário. A pesquisa híbrida melhora a recuperação em alguns aplicativos, especialmente quando palavras-chave específicas do domínio são importantes. A pesquisa híbrida normalmente usa cerca de duas vezes mais recursos do que a ANN e pode reduzir significativamente a taxa de transferência.

Use de 10 a 100 resultados

Cada consulta inclui um num_results parâmetro, que é o número de resultados de pesquisa a serem retornados. Esse valor impacta diretamente no desempenho. Recuperar mais resultados requer uma verificação mais profunda do índice, o que aumenta a latência e reduz o QPS. O efeito torna-se mais significativo em valores mais elevados. Por exemplo, aumentar em 10x pode dobrar num_results a latência da consulta e reduzir a capacidade do QPS em 3x, dependendo do tamanho e da configuração do índice.

Como prática recomendada, mantenha-se num_results no intervalo de 10 a 100, a menos que seu aplicativo exija especificamente mais. Experimente valores diferentes num_results usando consultas realistas para entender o impacto na sua carga de trabalho.

Evite escalar até zero para a produção

A Pesquisa Vetorial suporta dois tipos de incorporações com diferentes compensações de desempenho.

As incorporações gerenciadas são as mais convenientes. Com incorporações gerenciadas, o Databricks gera incorporações para suas linhas e consultas automaticamente. No momento da consulta, o texto da consulta é passado para um modelo que serve o ponto de extremidade para gerar a incorporação, o que adiciona latência. Se o modelo de incorporação for externo, ele também introduzirá sobrecarga de rede adicional.

As incorporações autogerenciadas permitem calcular incorporações com antecedência e passar os vetores diretamente no momento da consulta. Isso evita a geração de tempo de execução e permite a recuperação mais rápida. Todos os números de desempenho incluídos neste artigo são baseados em incorporações autogerenciadas.

Para casos de uso de produção em tempo real, evite pontos de extremidade de modelo que podem ser dimensionados para zero. Partidas a frio podem atrasar as respostas em vários minutos ou até mesmo causar falhas se o ponto de extremidade estiver inativo quando uma consulta chegar.

Planejar picos de consulta

Esta seção descreve o que esperar à medida que o tráfego aumenta e como ficar abaixo dos limites críticos que disparam picos de latência ou erros 429 (muitas solicitações).

A latência permanece baixa quando a carga é moderada e aumenta gradualmente à medida que você se aproxima da capacidade máxima do QPS. Quando o sistema atinge 100% de capacidade QPS, ele começa a retornar 429 erros. Se você não configurou o backoff adequado, o aplicativo pode deixar de responder.

429 erros servem como um mecanismo de segurança para proteger o sistema. Eles instruem o cliente a recuar e tentar novamente mais tarde para que o endpoint permaneça íntegro e responsivo, mesmo sob picos repentinos de tráfego.

Como prática recomendada, use o SDK Python de Pesquisa Vetorial, que inclui backoff interno e manipulação de novas tentativas.

Se você usar a API REST, implemente o backoff exponencial com jitter. Consulte Antipadrões do Azure.

Usar entidades de serviço com tokens OAuth

Use métodos de autenticação eficientes para obter o melhor desempenho. A Databricks recomenda o uso de uma entidade de serviço com token OAuth em todos os ambientes de produção. Os tokens de acesso OAuth fornecem maior segurança e também aproveitam a infraestrutura otimizada para a rede para permitir que o sistema opere em plena capacidade.

Evite usar tokens de acesso pessoal (PATs), pois eles introduzem sobrecarga de rede, adicionam centenas de milissegundos de latência e reduzem significativamente o QPS que seu endpoint pode sustentar.

Utilizar o SDK Python

Use a versão mais recente do SDK do Python para se beneficiar de otimizações internas de desempenho e confiabilidade.

Reutilize o objeto de índice em consultas. Evite chamar client.get_index(...).similarity_search(...) todas as solicitações, pois esse padrão adiciona latência desnecessária.

Em vez disso, inicialize o índice uma vez e reutilize-o:

# Initialize once
index = client.get_index(...)

# Then use it for every query
index.similarity_search(...)

Isso é importante ao usar o índice de pesquisa vetorial em ambientes MLFlow, onde você pode criar o objeto de índice na inicialização do ponto de extremidade e, em seguida, reutilizá-lo para cada consulta.

Essa orientação é especialmente útil em aplicativos sensíveis à latência em tempo real. Em configurações RAG com vários índices ou fluxos de autorização em nome do usuário , onde a seleção de índice ou as credenciais só estão disponíveis no momento da consulta, inicializar o objeto de índice uma vez pode não ser viável. Essa otimização não é necessária nesses cenários.

Paralelizar entre pontos de extremidade

A Databricks recomenda explorar as seguintes estratégias para aumentar o QPS total no sistema:

  • Divida os índices entre os pontos de extremidade. Se você tiver vários índices, cada um dos quais recebe uma parte significativa do tráfego, hospede-os em pontos de extremidade separados para alcançar maior largura de banda total.
  • Replique o índice entre pontos de extremidade. Se a maioria do tráfego atingir um único índice, duplique-o em vários pontos de extremidade. Divida o tráfego uniformemente no nível do cliente para ganhos lineares de QPS.

Use testes de carga para garantir que os seus endpoints estão dimensionados corretamente

Um teste de carga mede o desempenho do endpoint de pesquisa vetorial sob diferentes níveis de tráfego, simulando o uso real e ajudando-o a dimensionar corretamente o endpoint para satisfazer os requisitos de produção. Consulte Configurar um teste de carga para endpoints de pesquisa vetorial para detalhes sobre como criar e executar um teste de carga.