Partilhar via


Pesquisa vetorial Mosaic AI

Este artigo fornece uma visão geral do Mosaic AI Vetor Search, incluindo o que é e como funciona.

O Mosaic AI Vetor Search é uma solução de busca vetorial integrada à plataforma Databricks Data Intelligence e integrada com suas ferramentas de governança e produtividade. A pesquisa vetorial é um tipo de pesquisa otimizada para recuperar incorporações. Incorporações são representações matemáticas do conteúdo semântico de dados, normalmente dados de texto ou imagem. As incorporações são geradas por um modelo de linguagem grande e são um componente-chave de muitas aplicações de IA generativas que dependem da localização de documentos ou imagens semelhantes entre si. Exemplos são sistemas RAG, sistemas de recomendação e reconhecimento de imagem e vídeo.

Com o Mosaic AI Vetor Search, você cria um índice de pesquisa vetorial a partir de uma tabela Delta. O índice inclui dados incorporados com metadados. Em seguida, você pode consultar o índice usando uma API REST para identificar os vetores mais semelhantes e retornar os documentos associados. Você pode estruturar o índice para sincronizar automaticamente quando a tabela Delta subjacente for atualizada.

O Mosaic AI Vetor Search suporta o seguinte:

Como funciona o Mosaic AI Vetor Search?

O Mosaic AI Vector Search utiliza o algoritmo Hierarchical Navigable Small World (HNSW) para as suas buscas de vizinho mais próximo aproximado (ANN) e a métrica de distância L2 para medir a semelhança do vetor de embebimento. Se quiseres usar a semelhança de cosseno, precisas normalizar as tuas representações de dados antes de as introduzir na pesquisa vetorial. Quando os pontos de dados são normalizados, o ranking produzido pela distância L2 é o mesmo que o produzido pela semelhança do cosseno.

O Mosaic AI Vetor Search também suporta pesquisa híbrida de semelhança de palavras-chave, que combina pesquisa de incorporação baseada em vetor com técnicas tradicionais de pesquisa baseadas em palavras-chave. Essa abordagem corresponde a palavras exatas na consulta e, ao mesmo tempo, usa uma pesquisa de semelhança baseada em vetor para capturar as relações semânticas e o contexto da consulta.

Ao integrar estas duas técnicas, a pesquisa híbrida de semelhança de palavras-chave recupera documentos que contêm não só as palavras-chave exatas, mas também aquelas que são conceptualmente semelhantes, fornecendo resultados de pesquisa mais abrangentes e relevantes. Este método é particularmente útil em aplicações RAG onde os dados de origem têm palavras-chave exclusivas, como SKUs ou identificadores que não são adequados para pesquisa de semelhança pura.

Para detalhes sobre a API, consulte a referência do SDK Python e Consultar um índice de pesquisa vetorial.

Cálculo de pesquisa de similaridade

O cálculo da pesquisa de semelhança usa a seguinte fórmula:

recíproco de 1 mais o quadrado da distância

onde dist é a distância euclidiana entre o q de consulta e a entrada de índice x:

Distância euclidiana, raiz quadrada da soma das diferenças ao quadrado

Algoritmo de pesquisa de palavras-chave

Os escores de relevância são calculados usando Okapi BM25. Todas as colunas de texto ou cadeia de caracteres são pesquisadas, incluindo a incorporação do texto de origem e colunas de metadados em formato de texto ou cadeia de caracteres. A função de tokenização se divide nos limites das palavras, remove a pontuação e converte todo o texto em minúsculas.

Como a pesquisa por semelhança e a pesquisa por palavra-chave são combinadas

A pesquisa de semelhança e os resultados da pesquisa por palavra-chave são combinados usando a função Reciprocal Rank Fusion (RRF).

O RRF reavalia primeiro cada documento de cada método usando as pontuações:

Equação RRF para RNA

Equação RRF para pesquisa por palavras-chave

rrf_param controla a importância relativa de documentos de classificação superior e inferior. Com base na literatura, o rrf_param está definido como 60.

As pontuações são normalizadas de modo que a pontuação máxima possível seja 1, usando o seguinte fator de normalização:

normalização

A pontuação final de cada documento é calculada da seguinte forma:

Resultado final

Os documentos com as pontuações finais mais altas são devolvidos.

Opções para fornecer incorporações vetoriais

Para criar um índice de pesquisa vetorial no Databricks, você deve primeiro decidir como fornecer incorporações vetoriais. O Databricks suporta três opções.

Opção 1: Delta Sync Index com os embeddings calculados pela Databricks

Com esta opção, fornece uma tabela Delta de origem que contém dados em formato de texto. O Databricks calcula as incorporações, usando um modelo que você especifica, e, opcionalmente, salva as incorporações em uma tabela no Unity Catalog. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

O diagrama a seguir ilustra o processo:

  1. Calcule incorporações de consultas. A consulta pode incluir filtros de metadados.
  2. Realize pesquisas de semelhança para identificar os documentos mais relevantes.
  3. Devolva os documentos mais relevantes e acrescente-os à consulta.

índice de pesquisa vetorial, Databricks calcula incorporações

Opção 2: Delta Sync Index com embeddings autogeridos

Com esta opção, pode fornecer uma tabela Delta de origem que contém embeddings pré-calculados. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

Observação

Não é possível converter um índice de embedding autogerido num índice gerido pelo Databricks. Se mais tarde decidir usar embeddings geridos, deve criar um novo índice e recalcular os embeddings.

O diagrama a seguir ilustra o processo:

  1. A consulta consiste em incorporações e pode incluir filtros de metadados.
  2. Realize pesquisas de semelhança para identificar os documentos mais relevantes. Devolva os documentos mais relevantes e acrescente-os à consulta.

índice de pesquisa vetorial, incorporações pré-calculadas

Opção 3: Índice de Acesso Vetorial Direto

Com esta opção, deve atualizar manualmente o índice usando a API REST quando a tabela de incorporações mudar.

O diagrama a seguir ilustra o processo:

índice de pesquisa vetorial, incorporações pré-calculadas sem sincronização automática

Opções de ponto final

O Mosaic AI Vetor Search fornece as seguintes opções para que você possa selecionar a configuração de ponto final que atenda às necessidades do seu aplicativo.

Observação

Os endpoints otimizados para armazenamento estão em Visualização pública.

  • Os pontos finais padrão têm uma capacidade de 320 milhões de vetores na dimensão 768.
  • Os endpoints otimizados para armazenamento têm uma capacidade maior (mais de um bilhão de vetores na dimensão 768) e fornecem indexação 10 a 20 vezes mais rápida. As consultas em endpoints otimizados para armazenamento têm uma latência ligeiramente aumentada de cerca de 250mseg. O preço desta opção é otimizado para o maior número de vetores. Para obter detalhes de preços, consulte a página de preços de pesquisa vetorial. Para obter informações sobre como gerenciar custos de pesquisa vetorial, consulte Mosaic AI Vetor Search: Guia de gerenciamento de custos.

Você especifica o tipo de ponto de extremidade ao criar o ponto de extremidade.

Consulte também Limitações de endpoints otimizados para armazenamento.

Para usar o Mosaic AI Vetor Search, você deve criar o seguinte:

  • Um endpoint de pesquisa vetorial. Este endpoint serve o índice de pesquisa vetorial. Pode consultar e atualizar o endpoint utilizando a API REST ou o SDK. Consulte Criar um ponto de extremidade de pesquisa vetorial para obter instruções.

    Os pontos de extremidade dimensionam-se automaticamente para acomodar o tamanho do índice ou o número de solicitações simultâneas. Os endpoints otimizados para armazenamento diminuem automaticamente quando um índice é excluído. Os pontos de extremidade padrão não são reduzidos automaticamente.

  • Um índice de pesquisa vetorial. O índice de pesquisa vetorial é criado a partir de uma tabela Delta e é otimizado para fornecer pesquisas aproximadas em tempo real do vizinho mais próximo (ANN). O objetivo da pesquisa é identificar documentos semelhantes à consulta. Os índices de pesquisa vetorial aparecem e são regidos pelo Unity Catalog. Consulte Criar um índice de pesquisa vetorial para obter instruções.

Além disso, se você optar por fazer com que o Databricks calcule as incorporações, poderá usar um ponto de extremidade de APIs de Modelo de Base pré-configurado ou criar um ponto de extremidade de serviço de modelo para atender ao modelo de incorporação de sua escolha. Consulte APIs do modelo de base de pagamento por token ou Criar modelo de base servindo pontos de extremidade para obter instruções.

Para consultar o ponto de extremidade de serviço do modelo, use a API REST ou o SDK do Python. Sua consulta pode definir filtros com base em qualquer coluna na tabela Delta. Para obter detalhes, consulte Usar filtros em consultas, a referência da API ou a referência do SDK do Python.

Requerimentos

  • Espaço de trabalho com o Catálogo Unity ativado.
  • Computação sem servidor habilitada. Para obter instruções, consulte Conectar-se à computação sem servidor.
  • Para pontos de extremidade padrão, a tabela de origem deve ter o Change Data Feed habilitado. Consulte o feed de alterações de dados do Delta Lake no Azure Databricks.
  • Para criar um índice de pesquisa vetorial, você deve ter privilégios de CREATE TABLE no esquema de catálogo onde o índice será criado.

A permissão para criar e gerir terminais de pesquisa vetorial é configurada usando listas de controlo de acesso. Consulte as ACLs do ponto de extremidade de pesquisa vetorial.

Proteção de dados e autenticação

O Databricks implementa os seguintes controles de segurança para proteger seus dados:

  • Todas as solicitações de clientes para o Mosaic AI Vetor Search são logicamente isoladas, autenticadas e autorizadas.
  • O Mosaic AI Vetor Search encripta todos os dados em repouso (AES-256) e em trânsito (TLS 1.2+).

O Mosaic AI Vector Search suporta dois modos de autenticação: "principais de serviço" e "tokens de acesso pessoal" (PATs). Para aplicações de produção, o Databricks recomenda que utilize princípios de serviço, que podem ter um desempenho por consulta até 100 ms mais rápido em relação aos tokens de acesso pessoal.

  • Token principal de serviço. Um administrador pode gerar um token de entidade de serviço e passá-lo para o SDK ou API. Veja principais de serviço. Para casos de uso de produção, o Databricks recomenda o uso de um token de principal de serviço.

    # Pass in a service principal
    vsc = VectorSearchClient(workspace_url="...",
            service_principal_client_id="...",
            service_principal_client_secret="..."
            )
    
  • Token de acesso pessoal. Você pode usar um token de acesso pessoal para autenticar com o Mosaic AI Vetor Search. Consulte token de autenticação de acesso pessoal. Se você usar o SDK em um ambiente de bloco de anotações, o SDK gerará automaticamente um token PAT para autenticação.

    # Pass in the PAT token
    client = VectorSearchClient(workspace_url="...", personal_access_token="...")
    

As chaves geridas pelo cliente (CMK) são suportadas em pontos de extremidade criados em ou após o dia 8 de maio de 2024.

Monitorizar a utilização e os custos

A tabela do sistema de utilização faturável permite supervisionar a utilização e os custos associados a índices de pesquisa vetorial e endpoints. Segue-se uma consulta de exemplo:

WITH all_vector_search_usage (
  SELECT *,
         CASE WHEN usage_metadata.endpoint_name IS NULL THEN 'ingest'
              WHEN usage_type = "STORAGE_SPACE" THEN 'storage'
              ELSE 'serving'
        END as workload_type
    FROM system.billing.usage
   WHERE billing_origin_product = 'VECTOR_SEARCH'
),
daily_dbus AS (
  SELECT workspace_id,
       cloud,
       usage_date,
       workload_type,
       usage_metadata.endpoint_name as vector_search_endpoint,
       CASE WHEN workload_type = 'serving' THEN SUM(usage_quantity)
            WHEN workload_type = 'ingest' THEN SUM(usage_quantity)
            ELSE null
            END as dbus,
       CASE WHEN workload_type = 'storage' THEN SUM(usage_quantity)
            ELSE null
            END as dsus
 FROM all_vector_search_usage
 GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus

Você também pode consultar o uso por política orçamental. Consulte Mosaic AI Vetor Search: Políticas orçamentais.

Para obter detalhes sobre o conteúdo da tabela de utilização de faturamento, consulte a referência da tabela do sistema de utilização faturável. Consultas adicionais estão no bloco de anotações de exemplo a seguir.

Bloco de notas para consultas em tabelas do sistema de pesquisa vetorial

Obter caderno

Limites de tamanho de recursos e dados

A tabela a seguir resume os limites de recursos e tamanhos de dados dos pontos finais e índices de pesquisa vetorial.

Resource Granularidade Limite
Pontos de extremidade de pesquisa vetorial Por espaço de trabalho 100
Incorporações (índice Delta Sync) Por endpoint padrão ~ 320.000.000 na dimensão de incorporação 768
~ 160.000.000 na dimensão de incorporação 1536
~ 80.000.000 na dimensão de incorporação 3072
(escalonando aproximadamente de forma linear)
Incorporações (índice Direct Vetor Access) Por endpoint padrão ~ 2.000.000 na dimensão de incorporação 768
Incorporações (ponto de extremidade otimizado para armazenamento) Por cada endpoint otimizado para armazenamento ~ 1.000.000.000 na dimensão de incorporação 768
Dimensão de integração Por índice 4096
Indexes Por endpoint 50
Columns Por índice 50
Columns Tipos suportados: Bytes, curto, inteiro, longo, float, duplo, booleano, string, timestamp, data, array
Campos de metadados Por índice 50
Nome do índice Por índice 128 caracteres

Os seguintes limites aplicam-se à criação e atualização de índices de pesquisa vetorial:

Resource Granularidade Limite
Tamanho da linha do Índice de Sincronização Delta Por índice 100KB
Incorporar o tamanho da coluna de origem no índice Delta Sync Por índice 32764 bytes
Limite de tamanho de solicitação de upsert em massa para o índice Direct Vector Por índice 10 MB
Limite de tamanho de solicitação de exclusão em massa para o índice Direct Vetor Por índice 10 MB

Os limites a seguir se aplicam à API de consulta.

Resource Granularidade Limite
Comprimento do texto de consulta Por consulta 32764 caracteres
Tokens na utilização de pesquisa híbrida Por consulta 1024 palavras ou caracteres de 2 bytes
Condições do filtro Por cláusula de filtro 1024 elementos
Número máximo de resultados retornados (pesquisa aproximada do vizinho mais próximo) Por consulta 10,000
Número máximo de resultados retornados (pesquisa híbrida de semelhança de palavras-chave) Por consulta 200

Limitações

  • O nome da coluna _id está reservado. Se a tabela de origem tiver uma coluna chamada _id, renomeie-a antes de criar um índice de pesquisa vetorial.
  • Não há suporte para permissões de nível de linha e coluna. No entanto, você pode implementar suas próprias ACLs de nível de aplicativo usando a API de filtro.
  • Não podes clonar um índice para um espaço de trabalho diferente. Pode fazer pedidos entre espaços de trabalho usando o SDK Databricks ou a API REST.

Limitações de endpoints otimizados para armazenamento

As limitações desta seção aplicam-se apenas a endpoints otimizados para armazenamento. Os endpoints otimizados para armazenamento estão em Visualização pública.

  • O modo de sincronização contínua não é suportado.
  • Não há suporte para colunas para sincronização.
  • A dimensão de incorporação deve ser divisível por 16.
  • A atualização incremental é parcialmente suportada. Cada sincronização deve reconstruir partes do índice de pesquisa vetorial.
    • Para índices gerenciados, todas as incorporações calculadas anteriormente são reutilizadas se a linha de origem não tiver sido alterada.
    • Você deve antecipar uma redução significativa no tempo total necessário para uma sincronização em comparação com os endpoints padrão. Os conjuntos de dados com 1 bilhão de incorporações devem concluir uma sincronização em menos de 8 horas. Conjuntos de dados menores levarão menos tempo para sincronizar.
  • Não há suporte para espaços de trabalho compatíveis com FedRAMP.
  • Não há suporte para chaves gerenciadas pelo cliente (CMK).
  • Para usar um modelo de incorporação personalizado para um índice gerenciado do Delta Sync, a visualização AI Query for Custom Models and External Models deve ser habilitada. Consulte Gerenciar visualizações do Azure Databricks para saber como habilitar visualizações.
  • Os endpoints otimizados para armazenamento suportam até 1 bilhão de incorporações de vetores de 768 dimensões. Se você tiver um caso de uso de maior escala, entre em contato com sua equipe de conta.

Recursos adicionais