Mosaic AI Vector Search
Este artigo fornece uma visão geral da solução de banco de dados vetorial da Databricks, o 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 incorporações. As incorporações são representações matemáticas do conteúdo semântico dos dados, geralmente dados de texto ou imagem. As incorporações são geradas por um grande modelo de linguagem e são um componente essencial de muitos aplicativos de IA generativa, que dependem da localização de documentos ou imagens semelhantes entre si. Como exemplos, temos os sistemas RAG, os sistemas de recomendação e o reconhecimento de imagens e vídeos.
Com o Mosaic AI Vector Search, 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 Mosaic AI Vector Search é compatível com o seguinte:
Como funciona o Mosaic AI Vector Search?
O 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, você precisará normalizar suas incorporações de pontos de dados antes de alimentá-las 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 é compatível com a 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 às palavras exatas da 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, nos quais os dados de origem têm palavras-chave exclusivas, como SKUs ou identificadores que não são adequados para a pesquisa de similaridade pura.
Para obter detalhes sobre a API, consulte a referência do Python SDK e Consultar um endpoint de pesquisa vetorial.
Cálculo da pesquisa de similaridade
O cálculo da pesquisa de similaridade usa a seguinte fórmula:
onde dist
é a distância euclidiana entre a consulta q
e a entrada do índice x
:
Algoritmo de pesquisa por palavras-chave
As pontuações de relevância são calculadas usando o Okapi BM25. Todas as colunas de texto ou strings são pesquisadas, incluindo a incorporação do texto de origem e as colunas de metadados em formato de texto ou string. A função de tokenização divide nos limites das palavras, remove pontuação e converte todo o texto em minúsculas.
Como a pesquisa por similaridade e a pesquisa por palavras-chave são combinadas
Os resultados da pesquisa por similaridade e da pesquisa por 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:
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 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 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, primeiro você deve decidir como fornecer incorporações vetoriais. O Databricks é compatível com três opções:
Opção 1: Delta Sync Index with embeddings compute by Databricks O senhor fornece uma tabela de origem Delta 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 as incorporações da consulta. A consulta pode incluir filtros de metadados.
Realizar pesquisa de similaridade para identificar os documentos mais relevantes.
Retornar os documentos mais relevantes e acrescentá-los à consulta.
Opção 2: Delta Sync Index com embeddings autogerenciáveis O senhor fornece uma tabela de origem Delta 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 incorporações e pode incluir filtros de metadados.
Realizar pesquisa de similaridade para identificar os documentos mais relevantes. Retornar os documentos mais relevantes e acrescentá-los à consulta.
Opção 3: Índice de acesso direto ao vetor O senhor deve atualizar manualmente o índice usando a API REST quando a tabela de embeddings for alterada.
O diagrama a seguir ilustra o processo:
Como configurar o Mosaic AI Vector Search
Para usar o Mosaic AI Vector Search, você deve criar o seguinte:
Um endpoint de busca por vetores. Este endpoint serve o índice de busca por vetores. Você pode consultar e atualizar o endpoint usando a API REST ou o SDK. Os endpoints escalam automaticamente para suportar o tamanho do índice ou o número de solicitações simultâneas. Consulte Criar um endpoint de busca por vetores para obter instruções.
Um índice de busca por vetores. O índice de busca por vetores é criado a partir de uma tabela Delta e é otimizado para fornecer buscas aproximadas de vizinhos mais próximos em tempo real. O objetivo da busca é identificar documentos semelhantes à consulta. Os índices de busca por vetores aparecem e são governados pelo Unity Catalog. Consulte Criar um índice de busca por vetores para obter instruções.
Além disso, se você optar por fazer com que o Databricks calcule os embeddings, poderá usar um endpoint pré-configurado das APIs do Foundation Model ou criar um endpoint de serviço de modelo para servir o modelo de embedding de sua escolha. Consulte APIs de Foundation Model Pay-per-token ou Crie endpoints de serviço de modelo de IA generativa para instruções.
Para consultar o endpoint de atendimento do modelo, você deve usar a API REST ou o Python SDK. 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
Workspace habilitado para o Unity Catalog.
sem servidor compute ativado. Para obter instruções, consulte Conectar-se à computação sem servidor.
A tabela de origem deve ter a opção Alterar feed de dados ativada. Para obter instruções, consulte Usar o feed de dados de alteração do Delta Lake no Databricks.
Privilégios CREATE TABLE no(s) esquema(s) do catálogo para criar índices.
A permissão para criar e gerenciar o ponto de extremidade de pesquisa vetorial é configurada usando listas de controle de acesso. Consulte Pesquisa de vetores endpoint ACLs.
Proteção de dados e autenticação
O Databricks implementa os seguintes controles de segurança para proteger seus dados:
Cada solicitação de cliente ao 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:
Token de acesso pessoal - Você pode usar um token de acesso pessoal para se autenticar no Mosaic AI Vector Search. Consulte token de autenticação de acesso pessoal. Se você usar o SDK em um ambiente de notebook, ele gerará automaticamente um token PAT para autenticação.
Token de 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 usar um token de entidade de serviço.
Chaves gerenciadas pelo cliente (CMK) são suportadas em endpoints criados em ou após 8 de maio de 2024.
Monitorar o uso e os custos
A tabela do sistema de uso faturável permite que você monitore o uso e os custos associados aos índices e endpoints da pesquisa vetorial. Aqui está um exemplo de consulta:
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 da tabela de uso de faturamento, consulte Referência da tabela de uso faturável do sistema. Consultas adicionais estão no seguinte exemplo de notebook.
Limites de tamanho de recursos e dados
A tabela a seguir resume os limites de tamanho de dados e recursos para endpoints e índices de pesquisa vetorial:
Recursos |
Granularidade |
Limite |
---|---|---|
Endpoints de pesquisa vetorial |
Por workspace |
100 |
Incorporações |
Por endpoint |
320.000.000 |
Dimensão de incorporação |
Por índice |
4096 |
Índices |
Por endpoint |
50 |
Colunas |
Por índice |
50 |
Colunas |
Tipos compatíveis: bytes, curto, inteiro, longo, flutuante, duplo, booleano, string, carimbo de data/horário, data |
|
Campos de metadados |
Por índice |
20 |
Nome do índice |
Por índice |
128 caracteres |
Os limites a seguir se aplicam à criação e à atualização de índices de pesquisa vetorial:
Recursos |
Granularidade |
Limite |
---|---|---|
Tamanho da linha para o índice Delta Sync |
Por índice |
100 KB |
Tamanho da coluna de origem de incorporações para o índice de sincronização Delta |
Por índice |
32764 bytes |
Limite de tamanho de solicitação de upsert em massa para o índice vetorial direto |
Por índice |
10 MB |
Limite de tamanho da solicitação de exclusão em massa para o índice vetorial direto |
Por índice |
10 MB |
Os seguintes limites se aplicam à API de consulta.
Recursos |
Granularidade |
Limite |
---|---|---|
Comprimento do texto de consulta |
Por consulta |
32764 |
Número máximo de resultados retornados |
Por consulta |
10.000 |
Limitações
HIPAA compliance não está disponível no espaço de trabalho que tem um plano de controle em
us-west-2
e um plano de dados emus-east-1
.Não há compatibilidade com permissões em nível de linha e coluna. No entanto, você pode implementar suas próprias ACLs em nível de aplicativo usando a API de filtro.