Pular para o conteúdo principal

Databricks AI Pesquisa

Este artigo fornece uma visão geral da Databricks AI Search, incluindo o que é e como funciona.

O Databricks AI Search (antigo Databricks Vector Search) é uma solução de busca vetorial incorporada à Databricks Data Intelligence Platform e integrada às suas ferramentas de governança e produtividade. A busca vetorial é um tipo de busca otimizada para recuperar incorporações. As incorporações são representações matemáticas do conteúdo semântico dos dados, geralmente dados de texto ou imagem. As incorporações são geradas por um grande modelo de linguagem e são um componente essencial de muitos aplicativos de AI generativa, que dependem da localização de documentos ou imagens semelhantes entre si. Como exemplos, temos os sistemas RAG, os sistemas de recomendação e o reconhecimento de imagens e vídeos.

Com o Databricks AI Search, você cria um Índice de Pesquisa de IA 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.

A Pesquisa de IA é compatível com o seguinte:

O AI Search usa o algoritmo Hierarchical Navigable Small World (HNSW) para suas buscas de vizinho mais próximo aproximado (ANN) e a métrica de distância L2 para medir a similaridade do vetor de incorporação. Se quiser usar a similaridade de cosseno, você precisará normalizar suas incorporações de pontos de dados antes de alimentá-las no algoritmo de pesquisa vetorial. Quando os pontos de dados são normalizados, a classificação produzida pela distância L2 é a mesma que a classificação produzida pela similaridade de cosseno.

A Pesquisa de IA também suporta a pesquisa híbrida de similaridade de palavras-chave, que combina a pesquisa de incorporação baseada em vetores com técnicas tradicionais de pesquisa baseadas em palavras-chave. Essa abordagem corresponde às palavras exatas da consulta e, ao mesmo tempo, usa uma pesquisa de similaridade baseada em vetores para capturar as relações semânticas e o contexto da consulta.

Ao integrar essas duas técnicas, a pesquisa híbrida de similaridade de palavras-chave recupera documentos que contêm não apenas as palavras-chave exatas, mas também aquelas que são conceitualmente semelhantes, fornecendo resultados de pesquisa mais abrangentes e relevantes. Esse método é particularmente útil em aplicativos RAG, nos quais os dados de origem têm palavras-chave exclusivas, como SKUs ou identificadores que não são adequados para a pesquisa de similaridade pura.

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

Cálculo da pesquisa de similaridade

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

recíproco de 1 mais a distância quadrada

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

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

Algoritmo de pesquisa por palavras-chave

As pontuações de relevância são calculadas usando o Okapi BM25. Todas as colunas de texto ou strings são pesquisadas, incluindo a incorporação do texto de origem e as colunas de metadados em formato de texto ou string. A função de tokenização divide nos limites das palavras, remove pontuação e converte todo o texto em minúsculas.

Como a pesquisa por similaridade e a pesquisa por palavras-chave são combinadas

Os resultados da pesquisa por similaridade e da pesquisa por palavras-chave são combinados usando a função Reciprocal Rank Fusion (RRF).

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

Equação RRF para rede neurais artificiais (ANN)

Equação RRF para pesquisa de palavras-chave

rrf_param controla a importância relativa dos documentos com classificação mais alta e mais baixa. Com base na literatura, rrf_param é definido como 60.

As pontuações são normalizadas para que a pontuação mais alta possível seja 1 usando o seguinte fator de normalização:

normalização

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

pontuação final

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

Opções para fornecer incorporações vetoriais

Para criar um índice de pesquisa de AI no Databricks, é preciso primeiro decidir como fornecer incorporações vetoriais. O Databricks é compatível com três opções.

Opção 1: Índice de sincronização Delta com incorporações calculadas por Databricks

Com esta opção, você 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. Calcular as incorporações da consulta. A consulta pode incluir filtros de metadados.
  2. Realizar pesquisa de similaridade para identificar os documentos mais relevantes.
  3. Retornar os documentos mais relevantes e acrescentá-los à consulta.

Índice de Pesquisa de AI, Databricks calcula embeddings

Opção 2: Índice de sincronização Delta com incorporações autogerenciadas

Com esta opção, forneça uma tabela Delta de origem que contenha incorporações pré-calculadas. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

nota

Não é possível converter um índice de incorporações autogerenciadas em um índice gerenciado pelo Databricks. Caso se opte, posteriormente, por usar incorporações gerenciadas, é preciso criar um novo índice e recalcular as incorporações.

O diagrama a seguir ilustra o processo:

  1. A consulta consiste em incorporações e pode incluir filtros de metadados.
  2. Realizar pesquisa de similaridade para identificar os documentos mais relevantes. Retornar os documentos mais relevantes e acrescentá-los à consulta.

Índice de Pesquisa de IA, incorporações pré-calculadas

Opção 3: Índice de acesso vetorial direto

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

O diagrama a seguir ilustra o processo:

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

Opção 4: Índice de Pesquisa de Texto Completo em Endpoints Otimizados para Armazenamento (Beta)

Com esta opção, você cria um Índice de Sincronização Delta em um endpoint otimizado para armazenamento, sem nenhuma coluna de incorporação. O índice é compatível com a pesquisa de texto completo baseada em palavras-chave usando pontuação BM25, sem exigir incorporações vetoriais. Isso é útil para pesquisar termos exatos, identificadores ou palavras-chave em dados de texto.

nota

Também é possível usar query_type="FULL_TEXT" para realizar pesquisas de palavras-chave em índices existentes de Pesquisa de IA em endpoints padrão e otimizados para armazenamento. Esta opção é para criar um índice dedicado que não contém nenhuma incorporação.

Índices de pesquisa de texto completo dedicados estão disponíveis apenas em endpoints otimizados para armazenamento e exigem o modo de sincronização acionada. Consulte Criar um índice de pesquisa de texto completo (Beta) para obter instruções.

Opções de endpoint

A Pesquisa de IA oferece as seguintes opções para que se possa selecionar a configuração de endpoint que atenda às necessidades da aplicação.

nota

O QPS alto está em Pré-visualização Pública e está disponível somente para endpoints padrão.

  • Endpoints padrão têm uma capacidade de 320 milhões de vetores com dimensão 768.

  • 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. Consultas em endpoints otimizados para armazenamento apresentam uma latência ligeiramente maior de cerca de 250 ms. Os preços para esta opção são otimizados para o maior número de vetores. Para obter detalhes de preços, consulte a página de preços da Pesquisa de AI. Para obter informações sobre o gerenciamento de custos da Pesquisa de IA, consulte Guia de Gerenciamento de Custos da Pesquisa de IA.

O tipo de endpoint é especificado ao criá-lo.

Veja também limitações de endpoints otimizados para armazenamento.

Para usar a Pesquisa de AI, você deve criar o seguinte:

  • Um endpoint de Pesquisa de AI. Este endpoint serve o Índice de Pesquisa de IA. Você pode consultar e atualizar o endpoint usando a API REST ou o SDK. Consulte Criar um endpoint de Pesquisa de AI para obter instruções.

    Os endpoints escalam automaticamente para suportar o tamanho do índice ou o número de solicitações concorrentes. Endpoints são reduzidos automaticamente quando um índice é excluído.

  • Um Índice de Pesquisa de AI. O Índice de Pesquisa de AI é criado a partir de uma tabela Delta e é otimizado para fornecer buscas aproximadas de vizinhos mais próximos (rede neurais artificiais (ANN)) em tempo real. O objetivo da busca é identificar documentos semelhantes à consulta. Os índices de pesquisa de AI aparecem e são governados pelo Unity Catalog. Consulte Criar Índice de Pesquisa de IA para obter instruções.

Além disso, se você optar por fazer com que o Databricks compute os embeddings, poderá usar um endpoint pré-configurado das APIs do Foundation Model ou criar um endpoint de servindo modelo para servir o modelo de embedding de sua escolha. Consulte APIs de Foundation Model Pay-per-tokens ou Crie endpoints de serviço de modelo de fundação para instruções.

Para consultar o endpoint de servindo modelo, utiliza-se a API REST ou o Python SDK. 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.

Requisitos

Permissão para criar e gerenciar endpoints de Pesquisa de AI é configurada usando listas de controle de acesso. Consulte as Listas de Controle de Acesso do endpoint de Pesquisa de AI.

Proteção de dados e autenticação

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

  • Cada solicitação de cliente ao AI Search é logicamente isolada, autenticada e autorizada.
  • Pesquisa de IA criptografa todos os dados em repouso (AES-256) e em trânsito (TLS 1.2+).

AI Search oferece dois modos de autenticação, entidades de serviço e tokens de acesso pessoal (PATs). Para aplicações de produção, o Databricks recomenda o uso de entidades de serviço, que podem ter um desempenho por consulta até 100 ms mais rápido em relação aos access tokens pessoais.

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

    Python
    # Pass in a service principal
    vsc = VectorSearchClient(workspace_url="...",
    service_principal_client_id="...",
    service_principal_client_secret="..."
    )
  • access token pessoal. Você pode usar um personal access token para se autenticar no AI Search. Consulte token de autenticação de acesso pessoal. Ao utilizar o SDK em um ambiente de notebook, ele gerará automaticamente um token PAT para autenticação.

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

Chaves Gerenciadas pelo Cliente (CMK) são suportadas em endpoints criados em ou após 8 de maio de 2024.

Monitorar o uso e os custos

Para obter informações sobre monitoramento de uso e custos associados a índices e endpoints do AI Search, consulte guia de gerenciamento de custos do AI Search.

É possível também consultar o uso por política de uso. Consulte políticas de uso da Pesquisa de AI.

Limites de tamanho de recursos e dados

A tabela a seguir resume os limites de tamanho de dados e recursos para endpoints e índices de Pesquisa de IA:

Recursos

Granularidade

Limite

Endpoints de Pesquisa de IA

Por workspace

500

Incorporações (índice de sincronização Delta)

Por endpoint padrão

Cerca de 320.000.000 com 768 de dimensão de incorporação

Aproximadamente 160.000.000 com 1.536 de dimensão de incorporação

Aproximadamente 80.000.000 com 3.072 de dimensão de incorporação

(em uma escala aproximadamente linear)

Embeddings (índice de acesso vetorial direto)

Por endpoint padrão

~ 2.000.000 com 768 de dimensão de incorporação

Incorporações (endpoint otimizado para armazenamento)

Por endpoint otimizado para armazenamento

~ 1.000.000.000 com 768 de dimensão de incorporação

Dimensão de incorporação

Por índice

4096

Índices

Por endpoint

50

Colunas

Por índice

50

Colunas

Tipos compatíveis: bytes, curto, inteiro, longo, flutuante, duplo, Boolean, strings, carimbo de data/horário, data, array

Campos de metadados

Por índice

50

Nome do índice

Por índice

128 caracteres

Os limites a seguir se aplicam à criação e à atualização de Índices de Pesquisa de AI.

Recursos

Granularidade

Limite

Tamanho da linha para o índice Delta Sync

Por índice

100 KB

Tamanho da coluna de origem de incorporações para o índice de sincronização Delta

Por índice

32764 bytes

Limite de tamanho de solicitação de upsert em massa para o índice vetorial direto

Por índice

10 MB

Limite de tamanho da solicitação de exclusão em massa para o índice vetorial direto

Por índice

10 MB

Os seguintes limites se aplicam à API de consulta.

Recursos

Granularidade

Limite

Comprimento do texto de consulta

Por consulta

32.764 caracteres

Tokens ao usar pesquisa híbrida

Por consulta

1.024 palavras ou caracteres de 2 bytes

Condições de filtro

Cláusula por filtro

1.024 elementos

Número máximo de resultados retornados (busca aproximada do vizinho mais próximo)

Por consulta

10.000

Número máximo de resultados retornados (pesquisa híbrida de similaridade de palavras-chave)

Por consulta

200

Número máximo de resultados retornados (pesquisa de texto completo)

Por consulta

200

Tamanho da resposta

Por consulta

10 MB

Limitações

  • O nome da coluna _id está reservado. Se a sua tabela de origem tiver uma coluna chamada _id, renomeie-a antes de criar um Índice de Pesquisa de IA.
  • Não há compatibilidade com permissões em nível de linha e coluna. No entanto, você pode implementar suas próprias ACLs em nível de aplicativo usando a API de filtro.
  • Não é possível clonar um índice para outro workspace. Você pode fazer solicitações entre workspaces usando o SDK ou a API REST do Databricks.
  • A capacidade do índice é provisionada com base no tamanho da tabela de origem no momento da criação do índice. Começar com uma tabela de origem pequena limita o quanto o índice pode crescer e pode resultar em erros de capacidade esgotada, então dimensione a tabela de origem para corresponder ao seu volume de dados esperado antes de criar o índice.

Limitações de endpoints otimizados para armazenamento

As limitações nesta seção se aplicam apenas a endpoints otimizados para armazenamento.

  • O modo de sincronização contínuo não é compatível.

  • Colunas para sincronizar não é compatível.

  • Dimensão de incorporação deve ser divisível por 16.

  • A atualização incremental é parcialmente compatível. Cada sincronização deve reconstruir partes do Índice de Pesquisa de IA.

    • Para índices gerenciados, quaisquer incorporações computadas anteriormente são reutilizadas se a linha de origem não tiver sido alterada.
    • É esperada uma redução significativa de ponta a ponta no tempo necessário para uma sincronização em comparação com os endpoints padrão. Datasets com 1 bilhão de incorporações devem completar uma sincronização em menos de 8 horas. Conjuntos de dados menores levarão menos tempo para sincronizar.
  • Não há suporte para workspace em conformidade com o FedRAMP.

  • Chaves gerenciadas pelo cliente (CMK) não são compatíveis.

  • Para usar um modelo de incorporação personalizado para um índice Delta Sync gerenciado, a prévia de Consultas de AI para Modelos Personalizados e Modelos Externos deve ser habilitada. Consulte Gerenciar visualizações do Databricks para saber como habilitar visualizações.

  • Endpoints otimizados para armazenamento suportam até 1 bilhão de incorporações de vetores de 768 dimensões. Para casos de uso em escala maior, entre em contato com a equipe da sua conta.

Recursos adicionais