Mosaic AI Vector Search
Este artigo apresenta uma visão geral do Databricks' vector database solutions, Mosaic AI Vector Search, incluindo o que é e como funciona.
O que é o Mosaic AI Vector Search?
O Mosaic AI 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 Mosaic AI 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.
Como funciona o Mosaic AI Vector Search?
Mosaic AI Vector Search usa o algoritmo Hierarchical Navigable Small World (HNSW) para suas buscas aproximadas de vizinhos mais próximos e a métrica de distância L2 para medir a similaridade do vetor de incorporação. Se quiser usar a similaridade de cosseno, o senhor precisará normalizar os embeddings dos pontos de dados antes de alimentá-los na pesquisa vetorial. 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.
O Mosaic AI Vector Search também oferece suporte à pesquisa híbrida de similaridade de palavras-chave, que combina a pesquisa de incorporação baseada em vetores 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 similaridade baseada em vetores para capturar as relações semânticas e o contexto da consulta.
Ao integrar essas duas técnicas, a pesquisa híbrida de similaridade de palavras-chave recupera documentos que contêm não apenas as palavras-chave exatas, mas também aquelas que são conceitualmente semelhantes, fornecendo resultados de pesquisa mais abrangentes e relevantes. Esse método é particularmente útil em aplicativos RAG em que os dados de origem têm palavras-chave exclusivas, como SKU ou identificadores que não são adequados para a pesquisa de similaridade pura.
A pesquisa híbrida está em visualização pública. Para obter detalhes sobre a API, consulte a referência do Python SDK e Consultar um endpoint de pesquisa de vetor.
Cálculo da pesquisa de similaridade
O cálculo da pesquisa de similaridade usa a seguinte fórmula:
![recíproco de 1 mais a distância ao quadrado](../_images/similarity-score.png)
onde dist
é a distância euclidiana entre a consulta q
e a entrada do índice x
:
![Distância euclidiana, raiz quadrada da soma das diferenças quadradas](../_images/euclidean-distance.png)
Algoritmo de pesquisa de palavras-chave
As pontuações de relevância são calculadas usando o Okapi BM25. Todas as colunas de texto ou de cadeias de caracteres são pesquisadas, incluindo as colunas de incorporação de texto de origem e de metadados em formato de texto ou de cadeias de caracteres. A função de tokenização divide os limites das palavras, remove a pontuação e converte todo o texto em letras minúsculas.
Como a pesquisa por similaridade e a pesquisa por palavra-chave são combinadas
Os resultados da pesquisa de similaridade e da pesquisa de palavras-chave são combinados usando a função Reciprocal Rank Fusion (RRF).
O RRF reavalia cada documento de cada método usando a pontuação:
![Equação RRF](../_images/rrf-equation.png)
Na equação acima, a classificação começa em 0, soma as pontuações de cada documento e retorna os documentos com a pontuação mais alta.
rrf_param
controla a importância relativa dos documentos com classificação mais alta e mais baixa. Com base na literatura, rrf_param
é definido como 60.
As pontuações são normalizadas de modo que a pontuação mais alta seja 1 e a mais baixa seja 0, usando a seguinte equação:
![normalização](../_images/rrf-normalization.png)
Opções para fornecer embeddings de vetores
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 (acesso direto) 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 Mosaic AI Vector Search
Para usar o Mosaic AI 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 Databricks compute os embeddings, poderá usar um Foundation Model pré-configurado APIs endpoint ou criar um modelo de serviço endpoint para servir o modelo de embedding de sua escolha. Consulte Pay-per-tokens Foundation Model APIs ou Create generative IA servindo modelo endpoint para obter instruções.
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 de cliente à Mosaic AI Vector Search é logicamente isolada, autenticada e autorizada.
O Mosaic AI Vector Search criptografa todos os dados em repouso (AES-256) e em trânsito (TLS 1.2+).
O Mosaic AI Vector Search é compatível com dois modos de autenticação:
Personal access token - O senhor pode usar um access token pessoal para se autenticar com Mosaic AI Vector Search. Consulte tokens de autenticação de acesso pessoal. Se o senhor usar o SDK 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.
As chaves gerenciais do cliente (CMK) são compatíveis com endpoints criados a partir de 8 de maio de 2024.
Monitorar o uso e os custos
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.
Recursos |
Granularidade |
Limite |
---|---|---|
Comprimento do texto da consulta |
Por consulta |
32764 |
Número máximo de resultados retornados |
Por consulta |
10.000 |