Pesquisa vetorial Databricks

Este artigo fornece uma visão geral da solução de banco de dados vetorial da Databricks, Databricks Vetor Search, incluindo o que é e como funciona.

O Databricks Vetor Search é um banco de dados vetorial integrado à plataforma Databricks Data Intelligence e integrado com suas ferramentas de governança e produtividade. Um 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, 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 muitos aplicativos GenAI 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 a Pesquisa Vetorial, 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 Databricks Vetor Search usa o algoritmo Hierarchical Navigable Small World (HNSW) para suas pesquisas aproximadas de vizinhos mais próximos e a métrica de distância L2 para medir a semelhança do vetor de incorporação. Se você quiser usar a semelhança de cosseno, você precisa normalizar suas incorporações de ponto de dados antes de alimentá-las na Pesquisa Vetorial. Quando os pontos de dados são normalizados, o ranking produzido pela distância L2 é o mesmo que o ranking produz pela semelhança cosseno.

Como funciona a Pesquisa Vetorial?

Para criar um banco de dados vetorial no Databricks, você deve primeiro decidir como fornecer incorporações vetoriais. O Databricks suporta 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 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 consulta. 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.

    banco de dados vetorial, Databricks calcula incorporações

  • Opção 2 Você fornece uma tabela Delta de origem que contém incorporaçõ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 de semelhança para identificar os documentos mais relevantes. Devolva os documentos mais relevantes e acrescente-os à consulta.

    banco de dados vetorial, incorporações pré-calculadas

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

    O diagrama a seguir ilustra o processo, que é o mesmo que a Opção 2, exceto que o índice vetorial não é atualizado automaticamente quando a tabela Delta muda:

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

Para usar a Pesquisa Vetorial Databricks, você deve criar o seguinte:

  • Um ponto de extremidade de pesquisa vetorial. Este ponto de extremidade serve o índice de pesquisa vetorial. 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 suportar o tamanho do índice ou o número de solicitações simultâneas. Consulte Criar um ponto de extremidade de pesquisa vetorial para obter instruções.
  • 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. 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, também deverá criar um modelo de ponto de extremidade de serviço para o modelo de incorporação. Consulte 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.

Requisitos

  • Espaço de trabalho habilitado para Catálogo Unity.
  • Computação sem servidor habilitada.
  • A tabela de origem deve ter o Change Data Feed habilitado.
  • CRIAR privilégios TABLE no(s) esquema(s) de catálogo para criar índices.
  • Tokens de acesso pessoal ativados.

Proteção de dados e autenticação

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

  • Cada solicitação do cliente à Pesquisa Vetorial é logicamente isolada, autenticada e autorizada.
  • A pesquisa vetorial Databricks criptografa todos os dados em repouso (AES-256) e em trânsito (TLS 1.2+).

O Databricks Vetor Search suporta dois modos de autenticação:

  • Token de Acesso Pessoal - Você pode usar um token de acesso pessoal para autenticar com a Pesquisa Vetorial. Consulte Token de autenticação de acesso pessoal. Se você usar o SDK em um ambiente de bloco de anotações, ele gerará automaticamente um token PAT para autenticação.
  • Token da 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 o uso de um token de entidade de serviço.

Monitore o uso e os custos da Pesquisa Vetorial

A tabela do sistema de uso faturável permite monitorar o uso e os custos associados a índices e pontos de extremidade de pesquisa vetorial. Segue-se uma consulta de exemplo:

SELECT *
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
  AND usage_metadata.endpoint_name IS NOT NULL

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

Bloco de anotações de consultas de tabelas do sistema de Pesquisa Vetorial

Obter o bloco de notas

Limites de tamanho de recursos e dados

A tabela a seguir resume os limites de tamanho de recursos e dados para pontos de extremidade e índices de pesquisa vetorial:

Recurso Granularidade Limite
Pontos de extremidade de pesquisa vetorial Por espaço de trabalho 100
Incorporações Por parâmetro de avaliação 100,000,000
Dimensão de incorporação Por índice 4096
Índices Por parâmetro de avaliação 20
Colunas Por índice 20
Colunas Tipos suportados: Bytes, curto, inteiro, longo, float, duplo, booleano, string, timestamp, data
Campos de metadados Por índice 20
Nome do índice Por índice 128 caracteres

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

Recurso Granularidade Limite
Tamanho da linha para o Delta Sync Index Por índice 100KB
Incorporando o tamanho da coluna de origem para o índice Delta Sync Por índice 32764 bytes
Limite de tamanho de solicitação de upsert em massa para o índice Direct Vetor 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 para pesquisa vetorial.

Recurso Granularidade Limite
Comprimento do texto da consulta Por consulta 32764
Número máximo de resultados retornados Por consulta 10.000

Limitações

  • Atualmente, o PrivateLink está limitado a um conjunto selecionado de clientes. Se você estiver interessado em usar o recurso com o PrivateLink, entre em contato com seu representante de conta Databricks.
  • Espaços de trabalho regulamentados não são suportados, portanto, essa funcionalidade não é compatível com HIPAA.
  • 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.

Recursos adicionais