Mosaic AI Vector Search

Este artigo fornece uma visão geral da solução de banco de dados de vetores da Databricks, o Mosaic AI Vector Search, incluindo o que ele é e como funciona.

O Mosaic AI Vector Search é um banco de dados de vetores integrado à plataforma Databricks Data Intelligence e às ferramentas de governança e produtividade associadas a ela. O 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, de modo geral dados de texto ou de imagens. As incorporações são geradas por um modelo de linguagem grande e um componente fundamental de vários aplicativos de GenAI que dependem da localização de documentos ou imagens semelhantes entre si. Alguns exemplos são os sistemas RAG, sistemas de recomendação e reconhecimentos de imagem e vídeo.

Com o Mosaic AI Vector Search, você cria um índice de busca em vetores 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 sempre que a tabela Delta subjacente for atualizada.

O Mosaic AI Vector Search suporta o seguinte:

Como funciona o Mosaic AI Vector Search?

Ele usa o algoritmo HNSW (Hierarchical Navigable Small World) para pesquisas aproximadas de vizinho mais próximo e a métrica de distância L2 para medir a similaridade de vetores de inserção. Se quiser usar a similaridade por cosseno, você precisará normalizar suas incorporações de ponto de dados antes de usá-las para alimentar a busca em vetores. Quando os pontos de dados são normalizados, a classificação produzida pela distância euclidiana é a mesma que a classificação produzida pela similaridade por cosseno.

O Mosaic AI Vector Search também dá suporte à pesquisa híbrida por similaridade de palavras-chave, que combina a pesquisa de inserção baseada em vetores com técnicas tradicionais de pesquisa baseada em palavras-chave. Essa abordagem faz a correspondência das palavras exatas da consulta, além de usar 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 por 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 de RAG em que os dados de origem têm palavras-chave exclusivas, como SKUs ou identificadores, que não são adequados para a simples pesquisa por similaridade.

Para obter detalhes sobre a API, veja a referência do SDK do Python e Consultar um ponto de extremidade da busca em vetores.

Cálculo de pesquisa de similaridade

O cálculo de pesquisa de similaridade usa a seguinte fórmula:

recíproco de 1 mais a distância ao quadrado

em que dist é a distância euclidiana entre a consulta q e a entrada de índice x:

Distância eucidiana, raiz quadrada da soma das diferenças ao quadrado

Algoritmo de pesquisa por palavra-chave

As pontuações de relevância são calculadas usando o Okapi BM25. Todas as colunas de texto ou cadeia de caracteres são pesquisadas, incluindo as colunas de inserção do texto de origem e de metadados em formato de texto ou cadeia de caracteres. A função de geração de tokens divide os limites das palavras, remove a pontuação e converte todo o texto em letras minúsculas.

Como as pesquisas por similaridade e por palavra-chave são combinadas

Os resultados das pesquisas por similaridade e por palavra-chave são combinados usando a função RRF (Reciprocal Rank Fusion).

A RRF reclassifica cada documento com base em cada método usando a pontuação:

Equação RRF

Na equação acima, a classificação começa em 0, soma as pontuações de cada documento e retorna os documentos com pontuação mais alta.

O rrf_param controla a importância relativa dos documentos de classificação superior e inferior. Com base na documentação, rrf_param está 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:

normalização

Opções para fornecer inserções de vetores

Para criar um banco de dados vetorial no Databricks, primeiro você precisa decidir como fornecer incorporações de vetor. O Databricks dá suporte para três opções:

  • Opção 1: Delta Sync Index com inserções calculadas pelo Databriks Você fornece uma tabela Delta de origem que contém dados em formato de texto. O Databricks calcula as inserções usando um modelo especificado e, opcionalmente, salva as inserções em uma tabela no Catálogo do Unity. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

    O diagrama a seguir ilustra o processo:

    1. Calcular incorporações de consulta. A consulta pode incluir filtros de metadados.
    2. Realize pesquisas por similaridade para identificar os documentos mais relevantes.
    3. Retorne os documentos mais relevantes e anexe-os à consulta.

    banco de dados vetorial, o Databricks calculará as inserções

  • Opção 2: Delta Sync Index com inserções autogerenciadas Você fornece uma tabela Delta de origem que contém inserções pré-calculadas. À medida que a tabela Delta é atualizada, o índice permanece sincronizado com a tabela Delta.

    O diagrama a seguir ilustra o processo:

    1. A consulta consiste em incorporações e pode incluir filtros de metadados.
    2. Realize pesquisas por similaridade para identificar os documentos mais relevantes. Retorne os documentos mais relevantes e anexe-os à consulta.

    banco de dados vetorial, inserções pré-calculados

  • Opção 3: Direct Vector Access Index Você precisa atualizar o índice manualmente usando a API REST quando a tabela de inserções for alterada.

    O diagrama a seguir ilustra o processo:

    banco de dados vetorial, inserções pré-calculadas sem sincronização automática

Para usar o Mosaic AI Vector Search, crie o seguinte:

  • Um ponto de extremidade de busca em vetores. Esse ponto de extremidade atende ao índice de busca em vetores. Você pode consultar e atualizar o ponto de extremidade usando a API REST ou o SDK. Os pontos de extremidade são dimensionados automaticamente para dar suporte ao tamanho do índice ou ao número de solicitações simultâneas. Confira Criar um ponto de extremidade de busca em vetores para obter instruções.
  • Um índice de busca em vetores. O índice de busca em vetores é criado a partir de uma tabela Delta e é otimizado para fornecer pesquisas aproximadas de vizinho mais próximo em tempo real. O objetivo da pesquisa é identificar os documentos que sejam semelhantes à consulta. Os índices de busca em vetores aparecem no Catálogo do Unity e são regidos por ele. Confira Criar um índice de busca em vetores para obter instruções.

Além disso, se você optar por ter o Databricks computando as inserções, poderá usar um ponto de extremidade de API do Modelo de Fundação pré-configurado ou criar um ponto de extremidade de serviço de modelo para atender ao modelo de inserção de sua escolha. Veja APIs do modelo básico de pagamento por token ou Criar modelo de IA generativo atendendo pontos de extremidade para obter instruções.

Para consultar o ponto de extremidade atenda a modelos, use a API REST ou o SDK do Python. Sua consulta pode definir os 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

A permissão para criar e gerenciar pontos de extremidade de pesquisa vetorial é configurada usando listas de controle de acesso. Consulte ACLs de 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 do cliente ao Mosaic AI Vector Search é logicamente isolada, autenticada e autorizada.
  • O Mosaic AI Vector Search criptografa todos os dados inativos (AES-256) e ativos (TLS 1.2+).

O Mosaic AI Vector Search dá suporte a dois modos de autenticação:

  • Token de Acesso Pessoal – Você pode usar um token de acesso pessoal para se autenticar com o Mosaic AI Vector Search. Consulte token de autenticação de acesso pessoal. Se for usado em um ambiente de notebook, o SDK irá gerar um token PAT para autenticação automaticamente.
  • Token de entidade de serviço – Um administrador pode gerar um token de entidade de serviço e passá-lo para o SDK ou a 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.

As Chaves Gerenciadas pelo Cliente (CMK) têm suporte em pontos de extremidade criados em 8 de maio de 2024 ou após 8 de maio de 2024.

Monitorar o uso e os custos

A tabela do sistema de uso faturável permite monitorar o uso e os custos associados aos índices de busca em vetores e pontos de extremidade. Veja 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 cobrança, confira Referência de tabela do sistema de uso faturável. Há consultas adicionais no notebook de exemplo a seguir.

Notebook de consulta de tabelas do sistema de busca em vetores

Obter notebook

Limites de tamanho de dados e recursos

A tabela a seguir resume os limites de tamanho de dados e recursos para pontos de extremidade e índices de busca em vetores:

Recurso Granularidade Limite
Pontos de extremidade de busca em vetores Por workspace 100
Incorporações Por ponto de extremidade 320,000,000
Dimensão de inserção Por índice 4096
Índices Por ponto de extremidade 50
Colunas Por índice 50
Colunas Tipos com suporte: bytes, curto, inteiro, longo, float, duplo, booliano, cadeia de caracteres, carimbo de data/hora, 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 busca em vetores:

Recurso Granularidade Limite
Tamanho da linha do Índice de Sincronização Delta Por índice 100 KB
Tamanho da coluna de inserção de origem do Índice de Sincronização Delta Por índice 32764 bytes
Limite de tamanho da solicitação de upsert em massa do Índice de Vetor Direto Por índice 10MB
Limite de tamanho da solicitação de exclusão em massa do Índice de Vetor Direto Por índice 10MB

Os limites a seguir se aplicam à API de consulta.

Recurso Granularidade Limite
Tamanho do texto de consulta Por consulta 32764
Número máximo de resultados retornados Por consulta 10,000

Limitações

  • Não há suporte para permissões no nível de linha e de coluna. No entanto, você pode implementar suas próprias ACLs de nível usando a API de filtro.

Recursos adicionais