Mosaic AI Vector Search
Este artigo apresenta uma visão geral do site Mosaic AI Vector Search, incluindo o que é e como funciona.
O que é o Mosaic AI Vector Search?
Mosaic AI Vector Search é uma solução de pesquisa vetorial incorporada à Databricks Data Intelligence Platform e integrada às suas ferramentas de governança e produtividade. A pesquisa vetorial é um tipo de pesquisa otimizada para 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. Os embeddings são gerados por um modelo de linguagem grande e são um componente key de muitos aplicativos generativos AI 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, 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:
- Pesquisa híbrida por similaridade de palavras-chave.
- Filtragem.
- Listas de controle de acesso (ACLs) para gerenciar o ponto de extremidade de pesquisa de vetores.
- Sincronize somente as colunas selecionadas.
- Salve e sincronize os embeddings gerados.
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 de vetor.
Cálculo de pesquisa 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 palavra-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, o senhor deve primeiro decidir como fornecer embeddings vetoriais. O Databricks oferece suporte a 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 aut ogerenciá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:
-
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. Consulte Criar uma pesquisa vetorial endpoint para obter instruções.
aumenta automaticamente para suportar o tamanho do índice ou o número de solicitações do concorrente. não são reduzidos automaticamente.
-
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 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 foundation servindo modelo endpoint para obter instruções.
Para consultar o modelo de serviço endpoint, o senhor usa o REST API 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
- Workspace habilitado para o Unity Catalog.
- sem servidor compute ativado. Para obter instruções, consulte Conectar-se a serverless compute .
- 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.
- Para criar um índice de pesquisa vetorial, o senhor deve ter privilégios de CREATE TABLE no esquema de catálogo em que o índice será criado.
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 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 acesso pessoal tokens (PATs). Para aplicativos de produção, o site Databricks recomenda que o senhor use a entidade de serviço, que pode ter um desempenho por consulta até 100 mseg mais rápido em relação ao acesso pessoal tokens.
-
entidade de serviço tokens. Um administrador pode gerar um token de entidade de serviço e passá-lo 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.
Python# Pass in a service principal
vsc = VectorSearchClient(workspace_url="...",
service_principal_client_id="...",
service_principal_client_secret="..."
) -
Tokens de acesso pessoal. O senhor pode usar tokens de acesso pessoal para se autenticar em Mosaic AI Vector Search. Consulte tokens de autenticação de acesso pessoal. Se o senhor usar o SDK em um ambiente de Notebook, o SDK gera automaticamente tokens PAT para autenticação.
Python# Pass in the PAT token
client = VectorSearchClient(workspace_url="...", personal_access_token="...")
As chaves gerenciais do cliente (CMK) são compatíveis com endpoints criados a partir de 8 de maio de 2024.
Monitore 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'
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 uso de cobrança, consulte Referência da tabela de uso faturável do sistema. Consultas adicionais estão no exemplo de Notebook a seguir.
Sistema de pesquisa vetorial tabelas consultas Notebook
recurso e limites de tamanho de 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 | 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 bytes |
Número máximo de resultados retornados (pesquisa aproximada do vizinho mais próximo) | Por consulta | 10.000 |
Número máximo de resultados retornados (pesquisa híbrida por similaridade de palavras-chave) | Por consulta | 200 |
Limitações
- O nome da coluna
_id
está reservado. Se 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.