Busca em Vetores do Databricks

Importante

Esse recurso está em Visualização Pública nas seguintes regiões: canadacentral, centralus, eastus, eastus2, northeurope, southeastasia, westeurope, westus, westus2.

Este artigo fornece uma visão geral da solução de banco de dados vetorial do Databricks, a Busca em Vetores do Databricks, incluindo o que é e como funciona.

O Databricks Vector Search é um banco de dados vetorial incorporado à plataforma Databricks Data Intelligence e integrado às ferramentas de governança e produtividade. O banco de dados vetorial é um banco de dados otimizado para armazenar e recuperar incorporações. Incorporações são representações matemáticas do conteúdo semântico de dados, de modo geral dados de texto ou de imagens. As incorporações são geradas por um modelo de linguagem grande e um componente fundamental de vários aplicativos de GenAI que dependem da localização de documentos ou imagens semelhantes entre si. Alguns exemplos são os sistemas RAG, sistemas de recomendação e reconhecimentos de imagem e vídeo.

Com o Vector 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 sempre que a tabela Delta subjacente for atualizada.

O Databricks Vector Search usa o algoritmo Mundo Pequeno Navegável Hierárquico (HNSW) para suas pesquisas aproximadas de vizinho mais próximo e a métrica de distância euclidiana (L2) para medir a similaridade entre vetores de incorporação. Se quiser usar a similaridade por cosseno, você precisará normalizar suas incorporações de ponto de dados antes de usá-las para alimentar o Vector Search. Quando os pontos de dados são normalizados, a classificação produzida pela distância euclidiana é a mesma que a classificação produzida pela similaridade por cosseno.

Como funciona a Busca em Vetores?

Para criar um banco de dados vetorial no Databricks, primeiro você precisa decidir como fornecer incorporações de vetor. O Databricks dá suporte para três opções:

  • Opção 1 Você fornece uma tabela Delta de origem que contém dados em formato de texto. O Databricks calcula as incorporações usando o modelo que você especificar. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

    O diagrama a seguir ilustra o processo:

    1. Calcular incorporações de consulta. A consulta pode incluir filtros de metadados.
    2. Realize pesquisas por similaridade para identificar os documentos mais relevantes.
    3. Retorne os documentos mais relevantes e anexe-os à consulta.

    banco de dados vetorial, o Databricks calculará as inserções

  • Opção 2 Você fornece uma tabela Delta de origem que contém inserções pré-calculadas. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

    O diagrama a seguir ilustra o processo:

    1. A consulta consiste em incorporações e pode incluir filtros de metadados.
    2. Realize pesquisas por similaridade para identificar os documentos mais relevantes. Retorne os documentos mais relevantes e anexe-os à consulta.

    banco de dados vetorial, inserções pré-calculados

  • Opção 3 Você fornece uma tabela Delta de origem que contém inserções pré-calculadas. Não ocorre uma sincronização automática quando a tabela Delta é atualizada. Você precisa atualizar o índice manualmente usando a API REST quando a tabela de incorporações for alterada.

    O diagrama a seguir ilustra o processo, que é o mesmo da Opção 2, exceto pelo fato de que o índice do vetor não é atualizado automaticamente quando a tabela Delta é alterada:

    banco de dados vetorial, inserções pré-calculadas sem sincronização automática

Para usar o Databricks Vector Search, você precisa criar o seguinte:

  • Um ponto de extremidade de busca em vetores. Esse ponto de extremidade atende ao índice de busca em vetores. Você pode consultar e atualizar o ponto de extremidade usando a API REST ou o SDK. Os pontos de extremidade são dimensionados automaticamente para dar suporte ao tamanho do índice ou ao número de solicitações simultâneas. Confira Criar um ponto de extremidade de busca em vetores para obter instruções.
  • Um índice de busca em vetores. O índice de busca em vetores é criado a partir de uma tabela Delta e é otimizado para fornecer pesquisas aproximadas de vizinho mais próximo em tempo real. O objetivo da pesquisa é identificar os documentos que sejam semelhantes à consulta. Os índices de busca em vetores aparecem no Catálogo do Unity e são regidos por ele. Confira Criar um índice de busca em vetores para obter instruções.

Além disso, se optar por ter o Databricks computando as incorporações, você também precisará criar um ponto de extremidade que atenda a modelos para o modelo de incorporação. Confira Criar pontos de extremidade de serviço de modelo básicos para obter instruções.

Para consultar o ponto de extremidade atenda a modelos, use a API REST ou o SDK do Python. Sua consulta pode definir os 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

  • Workspace habilitados para o Catálogo do Unity.
  • Computação sem servidor habilitada.
  • A tabela de origem deve ter o Feed de Dados de Alteração habilitado.
  • Os privilégios de CRIAÇÃO DE TABELAS nos esquemas do catálogo para criar índices.
  • Token de acesso pessoal habilitados.

Proteção e autenticação de dados

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

  • Cada solicitação do cliente para a busca em vetores é logicamente isolada, autenticada e autorizada.
  • A busca em vetores do Databricks criptografa todos os dados inativos (AES-256) e em trânsito (TLS 1.2+).

A busca em vetores do Databricks dá suporte a dois modos de autenticação:

  • Token de acesso pessoal – Você pode usar um token de acesso pessoal para se autenticar com a busca em vetores. Consulte token de autenticação de acesso pessoal. Se for usado em um ambiente de notebook, o SDK irá gerar um token PAT para autenticação automaticamente.
  • Token de entidade de serviço – Um administrador pode gerar um token de entidade de serviço e passá-lo para o SDK ou a 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.

Limites de tamanho de dados e recursos

A tabela a seguir resume os limites de tamanho de dados e recursos para pontos de extremidade e índices de busca em vetores:

Recurso Granularidade Limite
Pontos de extremidade de busca em vetores Por workspace 10
Incorporações Por ponto de extremidade 100.000.000
Dimensão de inserção Por índice 4096
Índices Por ponto de extremidade 20
Colunas Por índice 20
Colunas Tipos com suporte: bytes, curto, inteiro, longo, float, duplo, booliano, cadeia de caracteres, carimbo de data/hora, data
Campos de metadados Por índice 20
Nome do índice Por índice 128 caracteres

Os limites a seguir se aplicam à criação e atualização de índices de busca em vetores:

Recurso Granularidade Limite
Tamanho da linha do Índice de Sincronização Delta Por índice 100 KB
Tamanho da coluna de inserção de origem do Índice de Sincronização Delta Por índice 32764 bytes
Limite de tamanho da solicitação de upsert em massa do Índice de Vetor Direto Por índice 10MB
Limite de tamanho da solicitação de exclusão em massa do Índice de Vetor Direto Por índice 10MB

Os limites a seguir se aplicam à API de consulta para busca em vetores.

Recurso Granularidade Limite
Tamanho do texto de consulta Por consulta 32764
Resultados num Por consulta 50

Limitações

  • O suporte a PrivateLink ou listas de acesso de IP atualmente está limitado a um conjunto selecionado de clientes. Se você estiver interessado em usar o recurso com PrivateLink ou listas de acesso de IP, entre em contato com o Suporte do Databricks.
  • Não há suporte para CMK (Chaves Gerenciadas pelo Cliente) para a Visualização Pública.
  • Não há suporte para workspaces regulamentados, portanto, essa funcionalidade não tem conformidade com HIPAA.
  • Não há suporte para permissões no nível de linha e de coluna. No entanto, você pode implementar suas próprias ACLs de nível usando a API de filtro.

Recursos adicionais