Pesquisa de vetores

Pesquisa ANN filtrada com índices vetoriais compostos (Parte 3)

Esta postagem é a terceira parte de uma série de várias partes que explora a indexação de vetores compostos no Couchbase. Se você perdeu as postagens anteriores, não deixe de se atualizar em Parte 1 e Parte 2.

A série abrangerá:

  1. Por que os índices vetoriais compostos são importantes, incluindo conceitos, terminologia e motivação do desenvolvedor. Um sistema inteligente de recomendação de compras será usado como exemplo.
  2. Como os índices de vetor composto são implementados no Serviço de Indexação do Couchbase.
  3. Como o pushdown ORDER BY funciona para consultas de vetor composto.
  4. Comportamento de desempenho no mundo real e resultados de benchmarking.

 

Order By Pushdown - Índices de vetores compostos

Vamos imaginar um recurso em seu aplicativo de alimentos ou de compras:

“Recomende pastas de chocolate com sabor semelhante ao da Nutella, ordenadas por qualidade nutricional, ou seja, primeiro com mais proteína e depois com menos açúcar.”

Isso é mais do que uma simples filtragem.

Isso requer uma combinação:

  • Similaridade semântica (sabor/textura)
  • Filtragem nutricional (açúcares e proteínas)
  • Uma estratégia de pedidos personalizada

A consulta SQL++ correspondente pode ter a seguinte aparência:

Essa única consulta expressa tudo o que queremos:

  • Somente chocolate mais saudável para barrar
  • Mais próximo da Nutella em termos de semântica de sabor
  • Preferencialmente com maior teor de proteína
  • Menor quantidade de açúcar a seguir
  • Mostrar ao usuário apenas os 10 primeiros

Agora vamos nos aprofundar em como o Couchbase executa isso de forma extremamente eficiente.

  1. Os filtros escalares são empurrados para baixo
    1. Os predicados escalares são avaliados em linha usando o Composite Vector Index.
      1. açúcares_100g < 20
      2. proteínas_100g > 10
    2. APPROX_VECTOR_DISTANCE(...) ativa o pipeline de varredura ANN (Approximate Nearest Neighbor) do Couchbase.
    3. O índice vetorial localiza os itens cujas incorporações estão mais próximas da incorporações da consulta (Nutella, em nosso exemplo).
    4. Consulte a parte 2 desta série do blog para obter informações sobre o trabalho interno.
  2. Empurrar LIMIT e ORDER BY
    1. É nesse ponto que o Couchbase se torna excepcionalmente eficiente.
    2. Quando a consulta inclui:
      1. LIMIT
    3. O Couchbase pode enviar ambos LIMITE e ORDER BY no serviço de índice.
    4. Isso evita o envio de grandes conjuntos de resultados intermediários para o serviço de consulta.

Veja como funciona o pushdown ORDER BY com escalares e ANN

  1. O indexador cria uma chave de classificação concatenada
    1. Ao executar a varredura do Composite Vector Index, o indexador constrói uma chave de classificação composta para cada item candidato.
    2. A chave de classificação composta concatenada consiste em:
      1. Distância ANN no lugar da chave vetorial
      2. O escalar ORDER BY nos campos exatos ORDER BY sequência:
        1. proteínas_100g (DESC)
          1. Negado ou codificado para ordem decrescente
        2. açúcares_100g (ASC)
    3. Isso resulta em uma chave lexicograficamente comparável, como:
      1. (distância, -proteínas_100g, açúcares_100g)
    4. Por que substituir o campo vetorial?
      1. Porque, para a ordenação, a distância se torna o valor escalar real de interesse e não o vetor em si.
      2. Isso permite que o indexador classifique os candidatos.
  2. O indexador mantém apenas os principais itens K
    1. À medida que o indexador examina os candidatos a ANN, ele mantém uma pilha de prioridades de tamanho K (K = LIMITE).
    2. Cada candidato é avaliado usando a chave concatenada.
    3. Se o heap exceder o tamanho K, o pior item será eliminado.
    4. No final, apenas o topo LIMITE itens permanecem.

 

Isso significa que:

  • Não são produzidos grandes conjuntos de resultados
  • Nenhuma classificação completa ocorre no nó de consulta
  • ANN + classificação escalar + LIMIT acontecem em um só lugar
  • O indexador transmite apenas os 10 principais itens para o serviço de consulta

Quando os resultados chegam ao nó de consulta, eles já estão:

  • Filtrado
  • Semanticamente ordenado
  • Com ordem escalar
  • Cortado para LIMIT

O nó de consulta não tem quase nada a fazer.
Esse é o caminho de execução mais rápido possível no Couchbase para classificação híbrida semântica + escalar.

A flexibilidade da combinação de escalares e vetores em ORDER BY

  • Um dos aspectos mais poderosos do Composite Vector Index do Couchbase é que os desenvolvedores não ficam presos a uma única estratégia de classificação. 
  • Ao contrário de muitos bancos de dados vetoriais que o forçam a classificar “somente por distância vetorial”, o Couchbase permite que você misture, reordene e permute livremente campos escalares e medidas de similaridade vetorial em uma única cláusula ORDER BY.

Abaixo estão quatro permutações de ordem significativas para nossa pesquisa de alimentos tipo Nutella.

  1. Semântica em primeiro lugar (a semelhança de sabor domina)

    1. Caso de uso: Você deseja que o sabor “parecido com Nutella” domine a classificação.

  1. Proteína em primeiro lugar (predominam as opções mais saudáveis)

    1. Caso de uso: Para aplicações voltadas para o condicionamento físico em que a nutrição supera o sabor.

      1. Caso de uso: Pesquisa amigável para diabéticos ou dietas com redução de açúcar.Açúcar em primeiro lugar (o usuário quer menos açúcar acima de tudo)

    1. Classificação híbrida complexa
      1. Caso de uso: Pesquisa de saúde em primeiro lugar com fallback semântico e critérios de desempate.

 

Conclusão final para os desenvolvedores

      • O Couchbase combina similaridade ANN, filtragem escalar, ORDER BY personalizado e pushdown LIMIT diretamente dentro do Composite Vector Index.
      • Isso lhe dá a capacidade de criar recursos de pesquisa inteligente do mundo real, como recomendações de sabores de Nutella otimizadas para nutrição, usando uma única consulta SQL++ rápida e elegante.
      • O Couchbase não armazena apenas vetores no índice. Ele permite que você os consulte com eficiência e os combine com dados estruturados, tudo em escala.
Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Sai Kommaraju

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.