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 que é Databricks Vetor Search?
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:
- Calcule incorporações de consulta. A consulta pode incluir filtros de metadados.
- Realize pesquisas de semelhança para identificar os documentos mais relevantes.
- Devolva os documentos mais relevantes e acrescente-os à consulta.
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:
- A consulta consiste em incorporações e pode incluir filtros de metadados.
- Realize pesquisas de semelhança para identificar os documentos mais relevantes. Devolva os documentos mais relevantes e acrescente-os à consulta.
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:
Como configurar a Pesquisa Vetorial
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
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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários