Databricks Vector Search
Este artigo fornece uma visão geral das soluções de banco de dados vetoriais da Databricks, Databricks Vector Search, incluindo o que é e como funciona.
O que é Vector Search do Databricks?
O Databricks Vector Search é um banco de dados vetorial incorporado à Databricks Data Intelligence Platform e integrado às suas ferramentas de governança e produtividade. Um banco de dados vetorial é um banco de dados otimizado para armazenar e recuperar embeddings. Os embeddings são representações matemáticas do conteúdo semântico dos dados, geralmente dados de texto ou imagem. Os embeddings são gerados por um modelo de linguagem grande e são um componente key de muitos aplicativos de GenAI que dependem da localização de documentos ou imagens semelhantes entre si. Exemplos são os sistemas RAG, os sistemas de recomendação e o reconhecimento de imagens e vídeos.
Com o Vector Search, o senhor cria um índice de pesquisa vetorial a partir de uma tabela Delta. O índice inclui dados incorporados com metadados. Em seguida, o senhor pode consultar o índice usando uma API REST para identificar os vetores mais semelhantes e retornar os documentos associados. O senhor pode estruturar o índice para sincronizar automaticamente quando a tabela Delta subjacente for atualizada.
O Databricks Vector 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 quiser usar a similaridade de cosseno, o senhor precisará normalizar os embeddings de pontos de dados antes de alimentá-los no Vector Search. 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.
Como funciona Vector Search ?
Para criar um banco de dados vetorial no Databricks, o senhor deve primeiro decidir como fornecer embeddings vetoriais. O Databricks oferece suporte a três opções:
Opção 1 O senhor fornece uma tabela Delta de origem que contém dados em formato de texto. O Databricks calcula os embeddings usando um modelo que o senhor especifica e, opcionalmente, salva os embeddings 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:
Calcular os embeddings da consulta. A consulta pode incluir filtros de metadados.
Realizar pesquisa de similaridade para identificar os documentos mais relevantes.
Retorna os documentos mais relevantes e os anexa à consulta.
Opção 2 O senhor fornece 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.
O diagrama a seguir ilustra o processo:
A consulta consiste em embeddings e pode incluir filtros de metadados.
Realizar pesquisa de similaridade para identificar os documentos mais relevantes. Retorna os documentos mais relevantes e os anexa à consulta.
Opção 3 O senhor fornece uma tabela Delta de origem que contém embeddings pré-calculados. Não há sincronização automática quando a tabela Delta é atualizada. O senhor deve atualizar manualmente o índice 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:
Como configurar o Vector Search
Para usar o Databricks Vector Search, o senhor deve criar o seguinte:
Uma pesquisa vetorial endpoint. Esse endpoint serve o índice de pesquisa de vetores. O senhor pode consultar e atualizar o endpoint usando a API REST ou o SDK. O ponto de extremidade escala automaticamente para suportar o tamanho do índice ou o número de solicitações do concorrente. Consulte Criar um ponto de extremidade de pesquisa de vetor 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 de vizinhos mais próximos aproximados em tempo real. O objetivo da pesquisa é identificar documentos que sejam 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 o senhor optar por ter o Databricks compute os embeddings, também deverá criar um modelo de serviço endpoint para o modelo de embedding. Para obter instruções, consulte Criar endpoint de modelo de serviço de fundação.
Para consultar o endpoint servindo modelo, o senhor usa a API REST ou o Python SDK. Sua consulta pode definir filtros com base em qualquer coluna da tabela Delta. Para obter detalhes, consulte Use filters on queries (Usar filtros em consultas), a referência da API ou a referência do Python SDK.
Requisitos
Unity Catalog habilitado workspace para .
serverless compute habilitada.
A tabela de origem deve ter o Change Data Feed ativado.
Privilégios CREATE TABLE no(s) esquema(s) do catálogo para criar índices.
Proteção e autenticação de dados
Databricks implementa os seguintes controles de segurança para proteger seus dados:
Cada solicitação do cliente ao Vector Search é logicamente isolada, autenticada e autorizada.
A pesquisa vetorial do Databricks criptografa todos os dados em repouso (AES-256) e em trânsito (TLS 1.2+).
O Databricks Vector Search oferece suporte a dois modos de autenticação:
Pessoal access token - O senhor pode usar um access token pessoal para se autenticar no Vector Search. Consulte tokens de autenticação de acesso pessoal. Se o SDK for usado em um ambiente Notebook, ele gera automaticamente tokens PAT para autenticação.
Entidade de serviço tokens - Um administrador pode gerar uma entidade de serviço tokens e passá-la para SDK ou API. Veja usar entidade de serviço. Para casos de uso de produção, o site Databricks recomenda o uso de tokens de entidade de serviço.
Monitorar o uso e os custos do Vector Search
A tabela do sistema de uso faturável permite que o senhor monitore o uso e os custos associados aos índices de pesquisa vetorial e ao endpoint. Aqui está um exemplo de consulta:
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 utilização de faturamento, consulte Referência da tabela do sistema de utilização de faturamento. Consultas adicionais estão no exemplo a seguir Notebook.
limites de recurso e tamanho de dados
A tabela a seguir resume os limites de recurso e tamanho de dados para endpoint e índices de pesquisa vetorial:
Recursos |
Granularidade |
Limite |
---|---|---|
Ponto final da pesquisa vetorial |
Por workspace |
100 |
Incorporações |
Por endpoint |
100.000.000 |
Dimensão de incorporação |
Por índice |
4096 |
Índices |
Por endpoint |
20 |
Colunas |
Por índice |
20 |
Colunas |
Tipos suportados: Bytes, short, integer, long, float, double, Boolean, strings, timestamp, date |
|
Campos de metadados |
Por índice |
20 |
Nome do índice |
Por índice |
128 caracteres |
Os seguintes limites se aplicam à criação e atualização de índices de pesquisa vetorial:
Recursos |
Granularidade |
Limite |
---|---|---|
Tamanho da linha para índice Delta Sync |
Por índice |
100 KB |
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 índice de vetor direto |
Por índice |
10MB |
Limite de tamanho da solicitação de exclusão em massa para índice Direct Vector |
Por índice |
10MB |
Os limites a seguir se aplicam à API de consulta para pesquisa vetorial.
Recursos |
Granularidade |
Limite |
---|---|---|
Comprimento do texto da consulta |
Por consulta |
32764 |
Número máximo de resultados retornados |
Por consulta |
10.000 |