Mosaic AI Vector Search
Este artigo oferece uma visão geral da Mosaic AI Vector Search, incluindo o que é e como funciona.
O que é Mosaic AI Vector Search?
Mosaic AI Vector Search é uma solução de busca vetorial integrada à plataforma Databricks Data Intelligence e às suas ferramentas de governança e produtividade. A busca vetorial é um tipo de busca otimizada para recuperar representações vetoriais (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 de grande escala e são um componente key de muitas aplicações AI generativa que dependem da identificação de documentos ou imagens semelhantes entre si. Exemplos incluem sistemas RAG, sistemas de recomendação e reconhecimento de imagem e vídeo.
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.
Mosaic AI Vector Search suporta o seguinte:
- Busca híbrida por similaridade de palavras-chave.
- Filtragem.
- Reclassificação.
- Listas de controle de acesso (ACLs) para gerenciar o ponto de extremidade de pesquisa de vetores.
- Sincronizar apenas as colunas selecionadas.
- Salvar e sincronizar os embeddings gerados.
Como funciona Mosaic AI Vector Search ?
Mosaic AI Vector Search utiliza o algoritmo Hierarchical Navigable Small World (HNSW) para suas buscas aproximadas de vizinhos mais próximos (rede neural artificial (ANN)) e a métrica de distância L2 para medir a similaridade do vetor de incorporação. Se você deseja usar a similaridade de cosseno, precisa normalizar os embeddings dos seus pontos de dados antes de inseri-los na busca 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 SDK do Python e a seção "Consultar um índice de pesquisa vetorial".
Cálculo de busca por 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 busca 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 palavra-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 índice de pesquisa vetorial no Databricks, você deve primeiro decidir como fornecer os embeddings vetoriais. O Databricks oferece suporte a três opções:
-
Opção 1: Índice Delta Sincronizado com embeddings calculado pelo Databricks Você fornece uma tabela Delta de origem que contém dados em formato de texto. O Databricks calcula os embeddings, usando um modelo que você 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: Índice de Sincronização Delta com incorporações autogerenciadas. 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.
- 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 Você deve atualizar o índice manualmente usando a API REST quando a tabela de embeddings for alterada.
O diagrama a seguir ilustra o processo:

Opções de endpoint
Mosaic AI Vector Search oferece as seguintes opções para que você possa selecionar a configuração endpoint que atenda às necessidades da sua aplicação.
Os endpoints otimizados para armazenamento estão em versão prévia pública.
- Os endpoints padrão têm capacidade para 320 milhões de vetores na dimensão 768.
- Os endpoints otimizados para armazenamento têm uma capacidade maior (mais de um bilhão de vetores na dimensão 768) e proporcionam indexação de 10 a 20 vezes mais rápida. Consultas em endpoints otimizados para armazenamento apresentam uma latência ligeiramente maior, de cerca de 250 ms. O preço desta opção é otimizado para um maior número de vetores. Para obter detalhes sobre os preços, consulte a página de preços da pesquisa vetorial. Para obter informações sobre o gerenciamento de custos de pesquisa de vetores, consulte Mosaic AI Vector Search: guia de gerenciamento de custos.
Você especifica o tipo de endpoint ao criar o endpoint.
Veja também Limitações de endpoints otimizados para armazenamento.
Como configurar Mosaic AI Vector Search
Para usar o Mosaic AI Vector Search, você deve criar o seguinte:
-
Um endpoint de busca vetorial. Este endpoint serve como índice de busca vetorial. Você pode consultar e atualizar o endpoint usando a API REST ou o SDK. Consulte Criar um endpointde pesquisa vetorial para obter instruções.
O endpoint escala automaticamente para suportar o tamanho do índice ou o número de solicitações simultâneas. O recurso de endpoint otimizado para armazenamento reduz automaticamente o nível de acesso quando um índice é excluído. O endpoint padrão não escala automaticamente para um nível inferior.
-
Um índice de busca vetorial. O índice de busca vetorial é criado a partir de uma tabela Delta e é otimizado para fornecer buscas de vizinhos mais próximos aproximados em tempo real (rede neural artificiais (ANN)). O objetivo da busca é identificar documentos semelhantes à consulta. Os índices de pesquisa vetorial aparecem no Unity Catalog e são gerenciados por ele. Consulte Criar um índice de pesquisa vetorial para obter instruções.
Além disso, se você optar por que Databricks compute os embeddings, poderá usar um endpoint APIs do Foundation Model pré-configurado ou criar um endpoint de modelo de serviço para disponibilizar o modelo de embedding de sua escolha. Consulte APIsdo modelo Foundation Pay-per-tokens ou o endpoint Criar modelo Foundation para obter instruções.
Para consultar o endpoint do modelo de serviço, você pode usar a API REST ou o SDK Python . Sua consulta pode definir filtros com base em qualquer coluna da 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.
- compute sem servidor habilitada. Para obter instruções, consulte Conectar-se à compute serverless.
- Para o endpoint padrão, a tabela de origem deve ter o Feed de Dados de Alteração ativado. Consulte a seção "Usar o feed de dados de alterações do Delta Lake" no Databricks.
- Para criar um índice de pesquisa vetorial, você precisa ter privilégios de CREATE TABLE no esquema do catálogo onde o índice será criado.
A permissão para criar e gerenciar o ponto de extremidade de busca vetorial é configurada usando listas de controle de acesso. Consulte as ACLs endpoint de pesquisa vetorial.
Proteção e autenticação de dados
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+).
Mosaic AI Vector Search suporta dois modos de autenticação: entidade de serviço e access tokens pessoal (PATs). Para aplicações de produção, Databricks recomenda o uso de entidade de serviço, que pode apresentar um desempenho por consulta até 100 ms mais rápido em comparação com access tokens pessoal.
-
entidade de serviço tokens. Um administrador pode gerar tokens de entidade de serviço e passá-los para o SDK ou API. Consulte usar entidade de serviço. Para casos de uso de produção, Databricks recomenda o uso de tokens de entidade de serviço.
Python# Pass in a service principal
vsc = VectorSearchClient(workspace_url="...",
service_principal_client_id="...",
service_principal_client_secret="..."
) -
access token pessoal. Você pode usar um access token pessoal para autenticar-se com Mosaic AI Vector Search. Consulte os tokens de autenticação de acesso pessoal. Se você usar o SDK em um ambiente Notebook, o SDK gerará automaticamente tokens PAT para autenticação.
Python# Pass in the PAT token
client = VectorSearchClient(workspace_url="...", personal_access_token="...")
A chave de gerenciamento do cliente (CMK) é compatível com endpoints criados a partir de 8 de maio de 2024.
Monitorar uso e 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'
WHEN usage_type = "STORAGE_SPACE" THEN 'storage'
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,
CASE WHEN workload_type = 'serving' THEN SUM(usage_quantity)
WHEN workload_type = 'ingest' THEN SUM(usage_quantity)
ELSE null
END as dbus,
CASE WHEN workload_type = 'storage' THEN SUM(usage_quantity)
ELSE null
END as dsus
FROM all_vector_search_usage
GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus
Você também pode consultar o uso por política orçamentária. Consulte Mosaic AI Vector Search: Políticas orçamentárias.
Para obter detalhes sobre o conteúdo da tabela de utilização de faturamento, consulte a Referência da tabela de utilização de faturamento do sistema. Consultas adicionais podem ser encontradas no seguinte exemplo de notebook.
Consultas de tabelas do sistema de busca vetorial Notebook
limites de tamanho de recurso 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 (Índice Delta Sync) | Por endpointpadrão | ~ 320.000.000 em uma dimensão de incorporação de 768 ~ 160.000.000 em uma dimensão de incorporação de 1536 ~ 80.000.000 em uma dimensão de incorporação de 3072 (escala aproximadamente linearmente) |
Incorporações (Índice de Acesso Direto a Vetores) | Por endpointpadrão | ~ 2.000.000 em uma dimensão de incorporação de 768 |
Incorporações ( endpoint otimizado para armazenamento) | Por endpoint otimizado para armazenamento | ~ 1.000.000.000 em uma dimensão de incorporação de 768 |
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 | 50 |
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 caracteres |
tokens ao usar a pesquisa híbrida | Por consulta | 1024 palavras ou caracteres de 2 bytes |
Condições do filtro | Cláusula de filtro | 1024 elementos |
Número máximo de resultados retornados (busca aproximada por vizinho mais próximo) | Por consulta | 10.000 |
Número máximo de resultados retornados (busca híbrida por similaridade de palavras-chave) | Por consulta | 200 |
Limitações
- O nome da coluna
_idestá reservado. Se a sua tabela de origem tiver uma coluna chamada_id, renomeie-a antes de criar um índice de pesquisa vetorial. - 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.
Limitações de endpoints otimizados para armazenamento
As limitações desta seção aplicam-se apenas a endpoints otimizados para armazenamento. Os endpoints otimizados para armazenamento estão em versão prévia pública.
-
O modo de sincronização contínua não é suportado.
-
A sincronização de colunas não é suportada.
-
A dimensão de incorporação deve ser divisível por 16.
-
A atualização incremental é parcialmente suportada. Cada sincronização deve reconstruir partes do índice de pesquisa vetorial.
- Para índices gerenciados, quaisquer embeddings calculados anteriormente são reutilizados se a linha de origem não tiver sido alterada.
- Você pode esperar uma redução significativa no tempo total necessário para uma sincronização, em comparação com o ponto de extremidade padrão. Um conjunto de dados com 1 bilhão de embeddings deve concluir a sincronização em menos de 8 horas. Um conjunto de dados menor levará menos tempo para sincronizar.
-
Espaços de trabalho compatíveis com FedRAMP não são suportados.
-
Chaves de gerenciamento de cliente (CMK) não são suportadas.
-
Para usar um modelo de incorporação personalizado para um índice Delta Sync de um gerenciador, a pré-visualização da ConsultaAI para Modelos Personalizados e Modelos Externos deve estar ativada. Consulte a seção "Gerenciar pré-visualizações Databricks para saber como ativar as pré-visualizações.
-
O suporte a endpoints otimizados para armazenamento permite até 1 bilhão de incorporações de vetores de 768 dimensões. Se você tiver um caso de uso de escalonamento mais complexo, entre em contato com sua equipe account .