Pesquisa vetorial Mosaic AI
Este artigo fornece uma visão geral da solução de banco de dados vetorial da Databricks, Mosaic AI Vetor Search, incluindo o que é e como funciona.
O que é Mosaic AI Vetor Search?
O Mosaic AI Vetor Search é um banco de dados vetorial integrado à plataforma Databricks Data Intelligence e integrado às 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 o Mosaic AI Vector Search, cria-se um índice de pesquisa vetorial a partir de um Delta table. 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 ser automaticamente sync quando o Delta subjacente table for atualizado.
O Mosaic AI Vetor Search suporta o seguinte:
- Pesquisa híbrida de semelhança de palavras-chave.
- Filtragem.
- Listas de controle de acesso (ACLs) para gerenciar pontos de extremidade de pesquisa vetorial.
- Sync selecionado apenas columns.
- Salvar e sync incorporações geradas.
Como funciona o Mosaic AI Vetor Search?
O Mosaic AI 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.
O Mosaic AI Vetor Search também suporta pesquisa híbrida de semelhança de palavras-chave, que combina pesquisa de incorporação baseada em vetor com técnicas tradicionais de pesquisa baseadas em palavras-chave. Essa abordagem corresponde a palavras exatas na consulta e, ao mesmo tempo, usa uma pesquisa de semelhança baseada em vetor para capturar as relações semânticas e o contexto da consulta.
Ao integrar estas duas técnicas, a pesquisa híbrida de semelhança de palavras-chave recupera documentos que contêm não só as palavras-chave exatas, mas também aquelas que são conceptualmente semelhantes, fornecendo resultados de pesquisa mais abrangentes e relevantes. Este método é particularmente útil em aplicações RAG where os dados de origem têm palavras-chave exclusivas, como SKUs ou identificadores que não são adequados para pesquisa de pura semelhança.
Para obter detalhes sobre a API, consulte a referência do SDK do Python e Consultar um ponto de extremidade de pesquisa vetorial.
Cálculo de pesquisa de similaridade
O cálculo da pesquisa de semelhança usa a seguinte fórmula:
where
dist
é a distância euclidiana entre o q
de consulta e a entrada de índice x
:
Algoritmo de pesquisa de palavras-chave
Os escores de relevância são calculados usando Okapi BM25. Todos os textos ou strings columns são pesquisados, incluindo a incorporação do texto fonte e os metadados columns em formato de texto ou string. A função de tokenização se divide nos limites das palavras, remove a pontuação e converte todo o texto em minúsculas.
Como a pesquisa por semelhança e a pesquisa por palavra-chave são combinadas
A pesquisa de semelhança e os resultados da pesquisa por palavra-chave são combinados usando a função Reciprocal Rank Fusion (RRF).
O RRF repontua cada documento de cada método usando a pontuação:
Na equação acima, a classificação começa em 0, soma as pontuações de cada documento e retorna os documentos com maior pontuação.
rrf_param
controla a importância relativa de documentos de classificação superior e inferior. Com base na literatura, rrf_param
é de set a 60.
As pontuações são normalizadas para que a pontuação mais alta seja 1 e a pontuação mais baixa seja 0 usando a seguinte equação:
Opções para fornecer incorporações vetoriais
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: Índice Sync Delta com incorporações calculadas pelo Databricks Fornece-se o table Delta de origem que contém dados em formato de texto. O Databricks calcula as incorporações, usando um modelo que o utilizador especificar e opcionalmente salva as incorporações em um table no Unity Catalog. À medida que o Delta table é atualizado, o índice permanece sincronizado com o Delta table.
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: Índice Sync Delta com incorporações autogerenciadas Você fornece um table Delta de origem que contém incorporações pré-calculadas. À medida que o Delta table é atualizado, o índice permanece sincronizado com o Delta table.
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: Índice de acesso direto vetorial Você deve update manualmente o índice usando a API REST quando as incorporações table forem alteradas.
O diagrama a seguir ilustra o processo:
automática
Como configurar a Pesquisa Vetorial do Mosaic AI set
Para usar o Mosaic AI Vetor Search, 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 update o endpoint usando a API REST ou o SDK. Consulte Criar um ponto de extremidade de pesquisa vetorial para obter instruções.
Os pontos de extremidade são dimensionados automaticamente para suportar o tamanho do índice ou o número de solicitações simultâneas. Os pontos de extremidade não diminuem de escala automaticamente.
Um índice de pesquisa vetorial. O índice de pesquisa vetorial é criado a partir de um Delta table e é otimizado para fornecer buscas do vizinho mais próximo aproximadas em tempo real. O objetivo da pesquisa é identificar documentos semelhantes à consulta. Os índices de pesquisa vetorial aparecem e são geridos 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, poderá usar um ponto de extremidade de APIs de Modelo de Base pré-configurado ou criar um ponto de extremidade de serviço de modelo para atender ao modelo de incorporação de sua escolha. Consulte APIs de modelo de base de pagamento por token ou Criar modelo de IA generativo 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 column no Delta table. Para obter detalhes, consulte Usar filtros em consultas, a referência da API ou a referência do SDK do Python.
Requisitos
- Unity Catalog espaço de trabalho habilitado.
- Computação sem servidor habilitada. Para obter instruções, consulte Conectar-se à computação sem servidor.
- O table de origem deve ter o Change Data Feed habilitado. Para obter instruções, consulte Usar o feed de dados de alteração do Delta Lake no Azure Databricks.
- Para criar um índice de pesquisa vetorial, você deve ter privilégios de CREATE TABLE no catalogschemawhere o índice será criado.
A permissão para criar e gerenciar pontos de extremidade de pesquisa vetorial é configurada usando listas de controle de acesso. Consulte ACLs de ponto de extremidade de pesquisa vetorial.
Proteção de dados e autenticação
O Databricks implementa os seguintes controles de segurança para proteger seus dados:
- Todas as solicitações de clientes para o Mosaic AI Vetor Search são logicamente isoladas, autenticadas e autorizadas.
- O Mosaic AI Vetor Search encripta todos os dados em repouso (AES-256) e em trânsito (TLS 1.2+).
O Mosaic AI Vetor Search suporta dois modos de autenticação:
Token da entidade de serviço. Um administrador pode generate 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.
# Pass in a service principal vsc = VectorSearchClient(workspace_url="...", service_principal_client_id="...", service_principal_client_secret="..." )
Token de acesso pessoal. Você pode usar um token de acesso pessoal para autenticar com o Mosaic AI Vetor Search. Consulte Token de autenticação de acesso pessoal. Se você usar o SDK em um ambiente de bloco de anotações, o SDK gerará automaticamente um token PAT para autenticação.
# Pass in the PAT token client = VectorSearchClient(workspace_url="...", personal_access_token="...")
As chaves gerenciadas pelo cliente (CMK) são suportadas em pontos de extremidade criados em ou após 8 de maio de 2024.
Monitorizar a utilização e os custos
O sistema de uso faturável table permite monitorar o uso e os custos associados a índices de pesquisa vetorial e pontos de extremidade. Segue-se uma consulta de exemplo:
WITH all_vector_search_usage (
SELECT *,
CASE WHEN usage_metadata.endpoint_name IS NULL
THEN 'ingest'
ELSE 'serving'
END as workload_type
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
),
daily_dbus AS (
SELECT workspace_id,
cloud,
usage_date,
workload_type,
usage_metadata.endpoint_name as vector_search_endpoint,
SUM(usage_quantity) as dbus
FROM all_vector_search_usage
GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus
Para obter detalhes sobre o conteúdo do uso de faturamento
Sistema de pesquisa vetorial tables para consultas em notebook
Limites de tamanho de recursos e dados
Os limites de tamanho de recursos e dados para pontos de extremidade e índices de pesquisa vetorial são resumidos no table a seguir.
Recurso | Granularidade | Limit |
---|---|---|
Pontos de extremidade de pesquisa vetorial | Por espaço de trabalho | 100 |
Incorporações | Por parâmetro de avaliação | 320,000,000 |
Dimensão de incorporação | Por índice | 4096 |
Índices | Por parâmetro de avaliação | 50 |
Columns | Por índice | 50 |
Columns | Tipos suportados: Bytes, curto, inteiro, longo, float, duplo, booleano, string, timestamp, data | |
Campos de metadados | Por índice | 50 |
Nome do índice | Por índice | 128 caracteres |
Os seguintes limites aplicam-se à criação e update de índices de pesquisa vetorial:
Recurso | Granularidade | Limit |
---|---|---|
Tamanho da linha para o Índice Delta Sync | Por índice | 100KB |
Incorporando o tamanho de origem column para o índice Delta Sync | Por índice | 32764 bytes |
Tamanho da requisição de upsert em massa limit para índice de vetor direto | Por índice | 10 MB |
Tamanho da solicitação de exclusão em massa limit para índice de vetor direto | Por índice | 10 MB |
Os limites a seguir se aplicam à API de consulta.
Recurso | Granularidade | Limit |
---|---|---|
Comprimento do texto da consulta | Por consulta | 32764 bytes |
Número máximo de resultados retornados | Por consulta | 10.000 |
Limitações
- Não há suporte para permissões de nível de linha e column. No entanto, você pode implementar suas próprias ACLs de nível de aplicativo usando a API de filtro.